refactor: remove Play L/R button, route A/B to stereo channels

This commit is contained in:
Honney OC committed 2026-09-15 19:07:57 +00:00
1 parent 9c00d2e781
commit 1ca71c16fc
1 file changed
+11 -11
+11 -11
View File
@@ -269,7 +269,6 @@ class SyncWindow(QtWidgets.QMainWindow):
self.btn_play_a = QtWidgets.QPushButton("Play A") self.btn_play_a = QtWidgets.QPushButton("Play A")
self.btn_play_b = QtWidgets.QPushButton("Play B+lag") self.btn_play_b = QtWidgets.QPushButton("Play B+lag")
self.btn_play_mix = QtWidgets.QPushButton("Play Mix") self.btn_play_mix = QtWidgets.QPushButton("Play Mix")
self.btn_play_split = QtWidgets.QPushButton("Play L/R")
self.btn_stop = QtWidgets.QPushButton("Stop") self.btn_stop = QtWidgets.QPushButton("Stop")
ctr2.addWidget(QtWidgets.QLabel("Duration:")) ctr2.addWidget(QtWidgets.QLabel("Duration:"))
@@ -282,10 +281,10 @@ class SyncWindow(QtWidgets.QMainWindow):
self.play_dur.setMaximumWidth(80) self.play_dur.setMaximumWidth(80)
ctr2.addWidget(self.play_dur) ctr2.addWidget(self.play_dur)
for b in [self.btn_play_a, self.btn_play_b, self.btn_play_mix, self.btn_play_split, self.btn_stop]: for b in [self.btn_play_a, self.btn_play_b, self.btn_play_mix, self.btn_stop]:
ctr2.addWidget(b) ctr2.addWidget(b)
if not HAS_SD: if not HAS_SD:
for b in [self.btn_play_a, self.btn_play_b, self.btn_play_mix, self.btn_play_split, self.btn_stop]: for b in [self.btn_play_a, self.btn_play_b, self.btn_play_mix, self.btn_stop]:
b.setEnabled(False) b.setEnabled(False)
b.setToolTip("sounddevice not installed — run make install (optional)") b.setToolTip("sounddevice not installed — run make install (optional)")
ctr2.addWidget(QtWidgets.QLabel("(sounddevice missing — playback disabled)")) ctr2.addWidget(QtWidgets.QLabel("(sounddevice missing — playback disabled)"))
@@ -308,7 +307,6 @@ class SyncWindow(QtWidgets.QMainWindow):
self.btn_play_a.clicked.connect(lambda: self.play("a")) self.btn_play_a.clicked.connect(lambda: self.play("a"))
self.btn_play_b.clicked.connect(lambda: self.play("b")) self.btn_play_b.clicked.connect(lambda: self.play("b"))
self.btn_play_mix.clicked.connect(lambda: self.play("mix")) 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.btn_stop.clicked.connect(self.stop_play)
self.update_labels() self.update_labels()
@@ -509,15 +507,17 @@ class SyncWindow(QtWidgets.QMainWindow):
try: try:
sd.stop() sd.stop()
if which == "a": if which == "a":
sd.play(a_seg, samplerate=sr) # A on left, silence on right
stereo = np.column_stack([a_seg, np.zeros_like(a_seg)])
sd.play(stereo, samplerate=sr)
elif which == "b": elif which == "b":
sd.play(b_seg, samplerate=sr) # Silence on left, B on right
stereo = np.column_stack([np.zeros_like(b_seg), b_seg])
sd.play(stereo, samplerate=sr)
elif which == "mix": elif which == "mix":
mix = (a_seg + b_seg) / 2.0 # A on left, B on right (stereo split)
sd.play(mix, samplerate=sr) ml = min(len(a_seg), len(b_seg))
elif which == "split": stereo = np.column_stack([a_seg[:ml], b_seg[:ml]])
# A on left, B on right
stereo = np.column_stack([a_seg, b_seg])
sd.play(stereo, samplerate=sr) sd.play(stereo, samplerate=sr)
except Exception as e: except Exception as e:
print(f"playback failed {e}", file=sys.stderr) print(f"playback failed {e}", file=sys.stderr)