Remove solo buttons, hide mute on mics, fix master volume, add mic_on MIDI, resize fonts
- Removed solo buttons from all mixer channels - Mute button hidden on mic channels (0,1) — mic_on toggle replaces it - Fixed master volume fader not being applied in audio _process() - Added mixer_mic_on MIDI signal and learnable action - Added CLEAR MIDI button to settings popup - Increased settings popup fonts 7pt→9pt, popup size 460→620px - Reduced deck fonts (header 24→16, elapsed 32→22, etc.) and spacing - Increased mixer fonts (names 8→9, headers 9→11, etc.) - Added missing MIDI learn entries (mute ch3-8, pfl ch3-8, mic_on ch1-2)
This commit is contained in:
+19
-41
@@ -9,7 +9,7 @@ from PySide6.QtCore import Qt, QTimer, QSize
|
||||
from PySide6.QtGui import QFont, QPainter, QColor, QLinearGradient, QPen
|
||||
|
||||
from audio_engine import NUM_MIXER_CHANNELS
|
||||
from icons import icon_mute, icon_solo, icon_mic
|
||||
from icons import icon_mute, icon_mic
|
||||
import math
|
||||
|
||||
|
||||
@@ -43,13 +43,13 @@ class VUMeter(QWidget):
|
||||
if db == -6:
|
||||
painter.setPen(QPen(QColor("#00ff88"), 2))
|
||||
painter.drawLine(rect.right() - 3, y, rect.right(), y)
|
||||
painter.setFont(QFont("Segoe UI", 8, QFont.Bold))
|
||||
painter.setFont(QFont("Segoe UI", 9, QFont.Bold))
|
||||
painter.setPen(QPen(QColor("#ffffff"), 1))
|
||||
else:
|
||||
painter.setPen(QPen(QColor("#2a2a2a"), 1))
|
||||
painter.drawLine(rect.right() - 5, y, rect.right(), y)
|
||||
painter.setPen(QPen(QColor("#cccccc"), 1))
|
||||
painter.setFont(QFont("Segoe UI", 7))
|
||||
painter.setFont(QFont("Segoe UI", 8))
|
||||
painter.drawText(rect.left() - 16, y + 3, f"{db}")
|
||||
|
||||
painter.setPen(QPen(QColor("#1a1a1a"), 1))
|
||||
@@ -93,7 +93,7 @@ class ChannelStrip(QFrame):
|
||||
self.channel_index = channel_index
|
||||
self._channel = engine.get_channel(channel_index)
|
||||
|
||||
self.setFixedWidth(90)
|
||||
self.setFixedWidth(100)
|
||||
self.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Expanding)
|
||||
self.setStyleSheet("""
|
||||
ChannelStrip {
|
||||
@@ -117,14 +117,14 @@ class ChannelStrip(QFrame):
|
||||
root.setSpacing(4)
|
||||
|
||||
self.name_btn = QPushButton(self._channel.name)
|
||||
self.name_btn.setFont(QFont("Segoe UI", 8, QFont.Bold))
|
||||
self.name_btn.setFont(QFont("Segoe UI", 9, QFont.Bold))
|
||||
self.name_btn.setStyleSheet("""
|
||||
QPushButton {
|
||||
background-color: transparent;
|
||||
color: #999aaa;
|
||||
border: none;
|
||||
padding: 2px;
|
||||
font-size: 8pt;
|
||||
font-size: 9pt;
|
||||
}
|
||||
QPushButton:hover {
|
||||
color: #ffffff;
|
||||
@@ -174,6 +174,8 @@ class ChannelStrip(QFrame):
|
||||
btn_row = QHBoxLayout()
|
||||
btn_row.setSpacing(3)
|
||||
|
||||
is_mic = self.channel_index < 2
|
||||
|
||||
self.mute_btn = QPushButton()
|
||||
self.mute_btn.setFixedSize(28, 24)
|
||||
self.mute_btn.setIconSize(QSize(16, 16))
|
||||
@@ -192,28 +194,9 @@ class ChannelStrip(QFrame):
|
||||
}
|
||||
QPushButton:hover { background-color: #343036; }
|
||||
""")
|
||||
self.mute_btn.setVisible(not is_mic)
|
||||
btn_row.addWidget(self.mute_btn)
|
||||
|
||||
self.solo_btn = QPushButton()
|
||||
self.solo_btn.setFixedSize(28, 24)
|
||||
self.solo_btn.setIconSize(QSize(16, 16))
|
||||
self.solo_btn.setIcon(icon_solo())
|
||||
self.solo_btn.setCheckable(True)
|
||||
self.solo_btn.setToolTip("Solo")
|
||||
self.solo_btn.setStyleSheet("""
|
||||
QPushButton {
|
||||
background-color: #262420;
|
||||
border: 1px solid #3a3830;
|
||||
border-radius: 3px;
|
||||
}
|
||||
QPushButton:checked {
|
||||
background-color: #4a4a1a;
|
||||
border: 1px solid #ffaa00;
|
||||
}
|
||||
QPushButton:hover { background-color: #363430; }
|
||||
""")
|
||||
btn_row.addWidget(self.solo_btn)
|
||||
|
||||
# Mic ON/OFF button for channels 0 and 1
|
||||
self.mic_btn = QPushButton()
|
||||
self.mic_btn.setFixedSize(28, 24)
|
||||
@@ -233,12 +216,12 @@ class ChannelStrip(QFrame):
|
||||
}
|
||||
QPushButton:hover { background-color: #303436; }
|
||||
""")
|
||||
self.mic_btn.setVisible(self.channel_index < 2)
|
||||
self.mic_btn.setVisible(is_mic)
|
||||
btn_row.addWidget(self.mic_btn)
|
||||
|
||||
self.pfl_btn = QPushButton("PFL")
|
||||
self.pfl_btn.setFixedSize(28, 24)
|
||||
self.pfl_btn.setFont(QFont("Segoe UI", 7, QFont.Bold))
|
||||
self.pfl_btn.setFont(QFont("Segoe UI", 8, QFont.Bold))
|
||||
self.pfl_btn.setCheckable(True)
|
||||
self.pfl_btn.setToolTip("Pre-Fader Listen")
|
||||
self.pfl_btn.setStyleSheet("""
|
||||
@@ -263,7 +246,6 @@ class ChannelStrip(QFrame):
|
||||
self.name_btn.clicked.connect(self._rename)
|
||||
self.volume_slider.valueChanged.connect(self._on_volume_changed)
|
||||
self.mute_btn.toggled.connect(self._on_mute_toggled)
|
||||
self.solo_btn.toggled.connect(self._on_solo_toggled)
|
||||
self.mic_btn.toggled.connect(self._on_mic_toggled)
|
||||
self.pfl_btn.toggled.connect(self._on_pfl_toggled)
|
||||
|
||||
@@ -283,9 +265,6 @@ class ChannelStrip(QFrame):
|
||||
def _on_mute_toggled(self, checked: bool):
|
||||
self.engine.set_channel_mute(self.channel_index, checked)
|
||||
|
||||
def _on_solo_toggled(self, checked: bool):
|
||||
self.engine.set_channel_solo(self.channel_index, checked)
|
||||
|
||||
def _on_pfl_toggled(self, checked: bool):
|
||||
self.engine.set_channel_pfl(self.channel_index, checked)
|
||||
|
||||
@@ -331,7 +310,7 @@ class MasterPreSection(QFrame):
|
||||
root.setSpacing(4)
|
||||
|
||||
header = QLabel("MASTER")
|
||||
header.setFont(QFont("Segoe UI", 8, QFont.Bold))
|
||||
header.setFont(QFont("Segoe UI", 10, QFont.Bold))
|
||||
header.setAlignment(Qt.AlignCenter)
|
||||
header.setStyleSheet("color: #888; background: transparent; border: none;")
|
||||
root.addWidget(header)
|
||||
@@ -399,7 +378,7 @@ class EffectSection(QFrame):
|
||||
root.setSpacing(2)
|
||||
|
||||
header = QLabel("FX")
|
||||
header.setFont(QFont("Segoe UI", 8, QFont.Bold))
|
||||
header.setFont(QFont("Segoe UI", 10, QFont.Bold))
|
||||
header.setAlignment(Qt.AlignCenter)
|
||||
header.setStyleSheet("color: #556670; background: transparent; border: none;")
|
||||
root.addWidget(header)
|
||||
@@ -411,19 +390,19 @@ class EffectSection(QFrame):
|
||||
lufs_layout.setSpacing(2)
|
||||
|
||||
self.lufs_value = QLabel("-70.0")
|
||||
self.lufs_value.setFont(QFont("Segoe UI", 13, QFont.Bold))
|
||||
self.lufs_value.setFont(QFont("Segoe UI", 14, QFont.Bold))
|
||||
self.lufs_value.setAlignment(Qt.AlignCenter)
|
||||
self.lufs_value.setStyleSheet("color: #00cc88; background: transparent; border: none;")
|
||||
lufs_layout.addWidget(self.lufs_value)
|
||||
|
||||
lufs_unit = QLabel("LUFS")
|
||||
lufs_unit.setFont(QFont("Segoe UI", 6))
|
||||
lufs_unit.setFont(QFont("Segoe UI", 7))
|
||||
lufs_unit.setAlignment(Qt.AlignCenter)
|
||||
lufs_unit.setStyleSheet("color: #556; background: transparent; border: none;")
|
||||
lufs_layout.addWidget(lufs_unit)
|
||||
|
||||
self.pfl_indicator = QLabel("PFL\n—")
|
||||
self.pfl_indicator.setFont(QFont("Segoe UI", 5))
|
||||
self.pfl_indicator.setFont(QFont("Segoe UI", 7))
|
||||
self.pfl_indicator.setAlignment(Qt.AlignCenter)
|
||||
self.pfl_indicator.setStyleSheet("color: #556; background: transparent; border: none;")
|
||||
lufs_layout.addWidget(self.pfl_indicator)
|
||||
@@ -490,12 +469,12 @@ class EffectSection(QFrame):
|
||||
dial.setValue(_val_to_pos(default))
|
||||
|
||||
lbl = QLabel(label)
|
||||
lbl.setFont(QFont("Segoe UI", 8, QFont.Bold))
|
||||
lbl.setFont(QFont("Segoe UI", 9, QFont.Bold))
|
||||
lbl.setAlignment(Qt.AlignLeft | Qt.AlignVCenter)
|
||||
lbl.setStyleSheet("color: #889; background: transparent; border: none;")
|
||||
|
||||
val_label = QLabel(f"{default}{suffix}")
|
||||
val_label.setFont(QFont("Segoe UI", 7))
|
||||
val_label.setFont(QFont("Segoe UI", 8))
|
||||
val_label.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
|
||||
val_label.setStyleSheet("color: #667; background: transparent; border: none;")
|
||||
|
||||
@@ -561,7 +540,7 @@ class MixerWidget(QFrame):
|
||||
root.setSpacing(4)
|
||||
|
||||
header = QLabel("MIXER")
|
||||
header.setFont(QFont("Segoe UI", 9, QFont.Bold))
|
||||
header.setFont(QFont("Segoe UI", 11, QFont.Bold))
|
||||
header.setStyleSheet("color: #556670; background: transparent; border: none; "
|
||||
"letter-spacing: 2px;")
|
||||
root.addWidget(header)
|
||||
@@ -623,5 +602,4 @@ class MixerWidget(QFrame):
|
||||
strip.name_btn.setText(ch.name)
|
||||
strip.volume_slider.setValue(int(ch.volume * 100))
|
||||
strip.mute_btn.setChecked(ch.muted)
|
||||
strip.solo_btn.setChecked(ch.solo)
|
||||
strip.pfl_btn.setChecked(ch.pfl)
|
||||
Reference in New Issue
Block a user