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)