From de00a23f4763d1a41ed2298b10bbd71f0aca2413 Mon Sep 17 00:00:00 2001 From: Honney OC Date: Tue, 15 Sep 2026 19:04:55 +0000 Subject: [PATCH] feat: add split L/R playback mode for audio sync comparison --- sync_audio_test.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/sync_audio_test.py b/sync_audio_test.py index adce8de..3733f70 100644 --- a/sync_audio_test.py +++ b/sync_audio_test.py @@ -269,6 +269,7 @@ class SyncWindow(QtWidgets.QMainWindow): self.btn_play_a = QtWidgets.QPushButton("Play A") self.btn_play_b = QtWidgets.QPushButton("Play B+lag") self.btn_play_mix = QtWidgets.QPushButton("Play Mix") + self.btn_play_split = QtWidgets.QPushButton("Play L/R") self.btn_stop = QtWidgets.QPushButton("Stop") ctr2.addWidget(QtWidgets.QLabel("Duration:")) @@ -281,10 +282,10 @@ class SyncWindow(QtWidgets.QMainWindow): self.play_dur.setMaximumWidth(80) ctr2.addWidget(self.play_dur) - for b in [self.btn_play_a, self.btn_play_b, self.btn_play_mix, self.btn_stop]: + for b in [self.btn_play_a, self.btn_play_b, self.btn_play_mix, self.btn_play_split, self.btn_stop]: ctr2.addWidget(b) if not HAS_SD: - for b in [self.btn_play_a, self.btn_play_b, self.btn_play_mix, self.btn_stop]: + for b in [self.btn_play_a, self.btn_play_b, self.btn_play_mix, self.btn_play_split, self.btn_stop]: b.setEnabled(False) b.setToolTip("sounddevice not installed — run make install (optional)") ctr2.addWidget(QtWidgets.QLabel("(sounddevice missing — playback disabled)")) @@ -307,6 +308,7 @@ class SyncWindow(QtWidgets.QMainWindow): self.btn_play_a.clicked.connect(lambda: self.play("a")) self.btn_play_b.clicked.connect(lambda: self.play("b")) self.btn_play_mix.clicked.connect(lambda: self.play("mix")) + self.btn_play_split.clicked.connect(lambda: self.play("split")) self.btn_stop.clicked.connect(self.stop_play) self.update_labels() @@ -513,6 +515,10 @@ class SyncWindow(QtWidgets.QMainWindow): elif which == "mix": mix = (a_seg + b_seg) / 2.0 sd.play(mix, samplerate=sr) + elif which == "split": + # A on left, B on right + stereo = np.column_stack([a_seg, b_seg]) + sd.play(stereo, samplerate=sr) except Exception as e: print(f"playback failed {e}", file=sys.stderr)