diff --git a/speak_broadcast.py b/speak_broadcast.py index 60da7a5..21ac3e5 100644 --- a/speak_broadcast.py +++ b/speak_broadcast.py @@ -49,16 +49,17 @@ def broadcast_utterance(v, utterance): global broadcast, exit, debug - if debug: - temp = format(v.temp, '.2f') - text = f"{v.name.upper()}: {temp}\n" - else: - text = f"" + # if debug: + # temp = format(v.temp, '.2f') + # text = f"{v.name.upper()}: {temp}\n" + # else: + # text = f"" + # Send all text to server to calculate bounds in advance - broadcast.utterance(utterance, v.calculate) - + broadcast.utterance(utterance, v.calculate) + text = "" broadcast.utterance(text, v.channel) terminal_utterance(text) time.sleep(2) @@ -164,7 +165,7 @@ def main() -> int: if v.name == name: print(f'{name} - {temp}') v.temp = temp - broadcast.temperature(temp, v.temperature) + # broadcast.temperature(temp, v.temperature) # <-- doesn works because deadlocks in osc_process... receiver = utterance.osc.OscReceiver(name="osc_receiver", host=conf['host_machinespeak'], port=conf['port_machinespeak'], callback_fn=receiver_cb) diff --git a/utterance/osc.py b/utterance/osc.py index 5d131a1..7d6ef34 100644 --- a/utterance/osc.py +++ b/utterance/osc.py @@ -3,6 +3,8 @@ from osc4py3 import oscbuildparse from threading import Lock mutex = Lock() +temp_mutex = Lock() + def start_osc(): osc_startup() @@ -38,9 +40,12 @@ class OscBroadcaster: update() def temperature(self, temp: float, channel: str): - msg = oscbuildparse.OSCMessage(channel, None, [temp]) - osc_send(msg, self.name) - update() + global temp_mutex + with temp_mutex: + msg = oscbuildparse.OSCMessage(channel, None, [temp]) + osc_send(msg, self.name) + osc_process() + class OscReceiver: