feat: add independent volume controls and refine audio filters

This commit is contained in:
Honney OC committed 2026-09-15 13:06:14 +00:00
1 parent 7cef142abb
commit acca4f4b66
2 files changed
+32 -18

No files matched your search

+28 -14
View File
@@ -428,16 +428,29 @@ class VerifyWindow(QtWidgets.QMainWindow):
self.play_mode.setFixedWidth(90)
ctrl.addWidget(self.play_mode)
ctrl.addWidget(QtWidgets.QLabel("Vol:"))
self.vol_slider = QtWidgets.QSlider(QtCore.Qt.Orientation.Horizontal)
self.vol_slider.setRange(0, 100)
self.vol_slider.setValue(self.default_volume)
self.vol_slider.setMaximumWidth(100)
ctrl.addWidget(self.vol_slider)
self.vol_label = QtWidgets.QLabel(f"{self.default_volume}%")
self.vol_label.setMinimumWidth(35)
ctrl.addWidget(self.vol_label)
self.vol_slider.valueChanged.connect(lambda v: self.vol_label.setText(f"{v}%"))
ctrl.addSpacing(10)
ctrl.addWidget(QtWidgets.QLabel("Vol A:"))
self.vol_a_slider = QtWidgets.QSlider(QtCore.Qt.Orientation.Horizontal)
self.vol_a_slider.setRange(0, 200)
self.vol_a_slider.setValue(self.default_volume)
self.vol_a_slider.setMaximumWidth(100)
ctrl.addWidget(self.vol_a_slider)
self.vol_a_label = QtWidgets.QLabel(f"{self.default_volume}%")
self.vol_a_label.setMinimumWidth(35)
ctrl.addWidget(self.vol_a_label)
self.vol_a_slider.valueChanged.connect(lambda v: self.vol_a_label.setText(f"{v}%"))
ctrl.addWidget(QtWidgets.QLabel("Vol B:"))
self.vol_b_slider = QtWidgets.QSlider(QtCore.Qt.Orientation.Horizontal)
self.vol_b_slider.setRange(0, 200)
self.vol_b_slider.setValue(self.default_volume)
self.vol_b_slider.setMaximumWidth(100)
ctrl.addWidget(self.vol_b_slider)
self.vol_b_label = QtWidgets.QLabel(f"{self.default_volume}%")
self.vol_b_label.setMinimumWidth(35)
ctrl.addWidget(self.vol_b_label)
self.vol_b_slider.valueChanged.connect(lambda v: self.vol_b_label.setText(f"{v}%"))
ctrl.addSpacing(10)
@@ -578,16 +591,17 @@ class VerifyWindow(QtWidgets.QMainWindow):
a_seg = self.a_aligned[start_samp:]
b_seg = self.b_aligned[start_samp:]
vol = self.vol_slider.value() / 100.0
vol_a = self.vol_a_slider.value() / 100.0
vol_b = self.vol_b_slider.value() / 100.0
mode = self.play_mode.currentIndex()
if mode == 0: # A+B mix
ml = min(len(a_seg), len(b_seg))
mix = ((a_seg[:ml] + b_seg[:ml]) / 2.0) * vol
mix = (a_seg[:ml] * vol_a + b_seg[:ml] * vol_b) / 2.0
elif mode == 1: # A only
mix = a_seg * vol
mix = a_seg * vol_a
else: # B only
mix = b_seg * vol
mix = b_seg * vol_b
self.audio_player.play(mix, self.sr)
self.playing_a_b = True