From 9b27108a93b2093a348a17e2d354f9cdd240693c Mon Sep 17 00:00:00 2001 From: yum Date: Sat, 5 Nov 2022 20:58:46 -0700 Subject: 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. --- osc_ctrl.py | 31 +++++++++++-------------------- 1 file changed, 11 insertions(+), 20 deletions(-) (limited to 'osc_ctrl.py') 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): -- cgit v1.2.3