summaryrefslogtreecommitdiffstats
path: root/osc_ctrl.py
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2022-10-15 16:48:52 -0700
committeryum <yum.food.vr@gmail.com>2022-10-15 17:47:05 -0700
commit3059967c75a41ed79b40ed3f84adbb874b0c3a33 (patch)
tree6af7d2001a4b8d99ce6d58543d9988d727288845 /osc_ctrl.py
parentc35d06f5eef2618287cda2c978dcf97d9fc5f319 (diff)
Fix animations: renamed prefab from CustomSTT to TaSTT
Also: * Check in toggle on/off animations * Add toggle parameter * libunity bug: getUniqueId() was calling allocateId() incorrectly * Remove osc_ctrl `client` global * Fix transcribe.py text encoding
Diffstat (limited to 'osc_ctrl.py')
-rw-r--r--osc_ctrl.py45
1 files changed, 24 insertions, 21 deletions
diff --git a/osc_ctrl.py b/osc_ctrl.py
index ec3515d..40cb7d1 100644
--- a/osc_ctrl.py
+++ b/osc_ctrl.py
@@ -25,12 +25,8 @@ def usage():
print("python3 -m pip install python-osc")
print("python3 ./osc_ctrl.py")
-parser = argparse.ArgumentParser()
-parser.add_argument("-i", default="127.0.0.1", help="OSC server IP")
-parser.add_argument("-p", type=int, default=9000, help="OSC server port")
-args = parser.parse_args()
-
-client = udp_client.SimpleUDPClient(args.i, args.p)
+def getClient(ip = "127.0.0.1", port = 9000):
+ return udp_client.SimpleUDPClient(ip, port)
class EvilGlobalState():
# Mapping from ascii char to encoded byte.
@@ -73,7 +69,7 @@ def encodeMessage(lines):
result += [state.encoding[' ']] * (BOARD_COLS - len(line))
return result
-def updateCell(cell_idx, letter_encoded, s0, s1, s2, s3):
+def updateCell(client, cell_idx, letter_encoded, s0, s1, s2, s3):
addr="/avatar/parameters/" + getLayerParam(cell_idx)
client.send_message(addr, letter_encoded)
@@ -89,19 +85,19 @@ def updateCell(cell_idx, letter_encoded, s0, s1, s2, s3):
addr="/avatar/parameters/" + getSelectParam(cell_idx, 3)
client.send_message(addr, s3)
-def enable():
+def enable(client):
addr="/avatar/parameters/" + getEnableParam()
client.send_message(addr, True)
-def disable():
+def disable(client):
addr="/avatar/parameters/" + getEnableParam()
client.send_message(addr, False)
# Send a cell all at once.
# `which_cell` is an integer in the range [0,2**INDEX_BITS).
-def sendMessageCellDiscrete(msg_cell, which_cell):
+def sendMessageCellDiscrete(client, msg_cell, which_cell):
# Disable each layer.
- disable()
+ disable(client)
time.sleep(CELL_TX_TIME_S / 3.0)
@@ -115,13 +111,13 @@ def sendMessageCellDiscrete(msg_cell, which_cell):
# Seek each layer to the current cell.
for i in range(0, len(msg_cell)):
- updateCell(i, msg_cell[i], s0, s1, s2, s3)
+ updateCell(client, i, msg_cell[i], s0, s1, s2, s3)
# Wait for convergence.
time.sleep(CELL_TX_TIME_S / 3.0)
# Enable each layer.
- enable()
+ enable(client)
# Wait for convergence.
time.sleep(CELL_TX_TIME_S / 3.0)
@@ -152,7 +148,7 @@ def splitMessage(msg):
line += " " + word
continue
- print("append line {}".format(line))
+ #print("append line {}".format(line))
lines.append(line)
line = word
@@ -242,7 +238,7 @@ def resizeBoard(num_lines, tx_state, shrink_only):
# Send a message to the board, but only overwrite cells that we know need to
# change.
# This may take multiple calls to complete. Returns True once it's done.
-def sendMessageLazy(msg, tx_state):
+def sendMessageLazy(client, msg, tx_state):
lines = splitMessage(msg)
#resizeBoard(len(lines), tx_state, shrink_only=False)
@@ -277,13 +273,13 @@ def sendMessageLazy(msg, tx_state):
return False
empty_cells_sent += 1
- sendMessageCellDiscrete(cell_msg, cell)
+ sendMessageCellDiscrete(client, cell_msg, cell)
tx_state.last_msg_encoded = msg_encoded
#resizeBoard(len(lines), tx_state, shrink_only=True)
return True
-def sendMessage(msg, page_sleep_s):
+def sendMessage(client, msg, page_sleep_s):
lines = splitMessage(msg)
msg = encodeMessage(lines)
msg_len = len(msg)
@@ -303,28 +299,35 @@ def sendMessage(msg, page_sleep_s):
cell_end = (cell + 1) * NUM_LAYERS
cell_msg = msg[cell_begin:cell_end]
print("Send cell {}".format(cell))
- sendMessageCellDiscrete(cell_msg, cell)
+ sendMessageCellDiscrete(client, cell_msg, cell)
#closeBoard()
#clear()
-def sendRawMessage(msg):
+def sendRawMessage(client, msg):
n_cells = ceil(len(msg) / NUM_LAYERS)
for cell in range(0, n_cells):
cell_begin = cell * NUM_LAYERS
cell_end = (cell + 1) * NUM_LAYERS
cell_msg = msg[cell_begin:cell_end]
#print("Send cell {}".format(cell))
- sendMessageCellDiscrete(cell_msg, cell)
+ sendMessageCellDiscrete(client, cell_msg, cell)
def clear():
sendRawMessage([state.encoding[' ']] * BOARD_ROWS * BOARD_COLS)
if __name__ == "__main__":
+ parser = argparse.ArgumentParser()
+ parser.add_argument("-i", default="127.0.0.1", help="OSC server IP")
+ parser.add_argument("-p", type=int, default=9000, help="OSC server port")
+ args = parser.parse_args()
+
+ client = getClient(args.i, args.p)
+
generateEncoding(state)
tx_state = OscTxState()
for line in fileinput.input():
- while not sendMessageLazy(line, tx_state):
+ while not sendMessageLazy(client, line, tx_state):
continue
clear()