diff options
| author | yum <yum.food.vr@gmail.com> | 2022-11-05 20:58:46 -0700 |
|---|---|---|
| committer | yum <yum.food.vr@gmail.com> | 2022-11-05 20:58:46 -0700 |
| commit | 9b27108a93b2093a348a17e2d354f9cdd240693c (patch) | |
| tree | 44cfcb29ac2d17369203129e5a7f36619867008e /osc_ctrl.py | |
| parent | 531969f0074f35059a90e6c3007c30feb19f13d5 (diff) | |
Expand character set from 80 to 64K characters
Each character is now addressed with 2 bytes instead of 1. The number of
bytes per character is configured in (I think) exactly one spot, so
increasing or decreasing this is trivial. English speakers can just set
it to 1.
The animator seems a little unstable; if I leave my character in a
public for a while, the board becomes unresponsive. Oh well.
* Check in fonts. Did this so users don't have to remember to set the
resolution or to disable mipmaps.
Diffstat (limited to 'osc_ctrl.py')
| -rw-r--r-- | osc_ctrl.py | 31 |
1 files changed, 11 insertions, 20 deletions
diff --git a/osc_ctrl.py b/osc_ctrl.py index aebfa56..e5a2608 100644 --- a/osc_ctrl.py +++ b/osc_ctrl.py @@ -38,23 +38,8 @@ state = EvilGlobalState() # This function provides a mapping from letter ('a') to index (26). def generateEncoding(): encoding = {} - for i in range(0, 26): - encoding[chr(ord('A') + i)] = i - for i in range(26, 52): - encoding[chr(ord('a') + i - 26)] = i - for i in range(52, 62): - encoding[chr(ord('0') + i - 52)] = i - encoding[','] = 62 - encoding['.'] = 63 - encoding[' '] = 64 - encoding['?'] = 65 - encoding['!'] = 66 - encoding[';'] = 67 - encoding[':'] = 68 - encoding['-'] = 69 - encoding['_'] = 70 - encoding["'"] = 71 - encoding['"'] = 72 + for i in range(0, 65535): + encoding[chr(i)] = (i % 256, int(i / 256)) return encoding state.encoding = generateEncoding() @@ -75,9 +60,10 @@ def encodeMessage(lines): return result def updateCell(client, cell_idx, letter_encoded): - addr="/avatar/parameters/" + generate_utils.getBlendParam(cell_idx) - letter_remapped = (-127.5 + letter_encoded) / 127.5 - client.send_message(addr, letter_remapped) + for byte in range(0, generate_utils.BYTES_PER_CHAR): + addr="/avatar/parameters/" + generate_utils.getBlendParam(cell_idx, byte) + letter_remapped = (-127.5 + letter_encoded[byte]) / 127.5 + client.send_message(addr, letter_remapped) def enable(client): addr="/avatar/parameters/" + getEnableParam() @@ -331,6 +317,11 @@ if __name__ == "__main__": state.encoding = generateEncoding() + sendRawMessage(client, [ \ + (65,0), \ + (0x20,0xAD), \ + ]) + tx_state = OscTxState() for line in fileinput.input(): while not sendMessageLazy(client, line, tx_state): |
