From fd317f9cfd5328a2d1290b52a2decf341d196894 Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Sun, 29 Mar 2026 20:23:03 -0400 Subject: [PATCH] Fix: capture engine output, track stream ready state Co-Authored-By: Claude Opus 4.6 (1M context) --- test_live.py | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/test_live.py b/test_live.py index 3c1bf05..7252a9b 100644 --- a/test_live.py +++ b/test_live.py @@ -126,22 +126,26 @@ class LiveTUI: stdscr.refresh() self.log(f"Cached {count} wavetables", 1) - self.status = "Listening" - self.status_color = 2 + self.log("Starting engine...", 3) + self.status = "Starting" + self.status_color = 3 # Start engine def run_engine(): - devnull = open(os.devnull, 'w') + import io + capture = io.StringIO() old = sys.stdout - sys.stdout = devnull + sys.stdout = capture try: self.engine.start(port=self.port) except Exception as e: - sys.stdout = old - self.log(f"Error: {e}", 4) + self.log(f"Engine error: {e}", 4) finally: sys.stdout = old - devnull.close() + output = capture.getvalue() + if output.strip(): + for line in output.strip().split('\n'): + self.log(line.strip(), 2) engine_thread = threading.Thread(target=run_engine, daemon=True) engine_thread.start() @@ -157,6 +161,13 @@ class LiveTUI: while self.running: try: + # Update status from engine state + if (self.engine._stream and self.engine._stream.active + and self.status == "Starting"): + self.status = "Listening" + self.status_color = 2 + self.log("Audio stream active", 1) + h, w = stdscr.getmaxyx() if h < 10 or w < 40: time.sleep(0.1)