v0.5 — cleanup orphan code, add MIDI master volume learn, fix turn-deck crashes

- Remove vestigial lufs_meter_widget.py and debug_audio.py
- Delete unused WaveformWidget/WaveformMonitor classes, dead stubs, duplicate code
- Fix turn-mode deck crashes (deck3/deck4 missing from engine.decks, uninitialized manual_elapsed/duration)
- Replace raw print() with logging in main.py
- Add master_volume MIDI learn signal + settings popup entry
- Bump version to 0.5
This commit is contained in:
2026-05-14 22:25:10 +10:00
parent 6067f442b0
commit 89fb7010fb
13 changed files with 356 additions and 752 deletions
+7 -2
View File
@@ -19,7 +19,6 @@ NOTE_ON = 0x90
NOTE_OFF = 0x80
CC = 0xB0
PITCH_BEND = 0xE0
PITCH_BEND = 0xE0
CONFIG_DIR = os.path.expanduser("~/.gti_radiostudio")
CONFIG_FILE = os.path.join(CONFIG_DIR, "midi_map.json")
@@ -96,6 +95,7 @@ class MidiEngine(QObject):
mixer_solo = Signal(int, bool)
mixer_pfl = Signal(int, bool)
master_control = Signal(str, float)
master_volume = Signal(float)
controller_connected = Signal(bool, str)
mapping_learned = Signal(str, object, int, int, int, bool)
raw_midi_event = Signal(str, int, int, int)
@@ -115,7 +115,6 @@ class MidiEngine(QObject):
self._last_cc_values = {}
self._channel_volumes = {}
self._master_knob_values = {}
self._master_knob_values = {}
@property
def learn_mode(self) -> bool:
@@ -303,6 +302,12 @@ class MidiEngine(QObject):
scaled = (127 - value if inv else value) / 127.0
self._master_knob_values[knob] = scaled
self.master_control.emit(knob, scaled)
elif action == 'master_volume':
if midi_type == PITCH_BEND:
scaled = (16383 - value if inv else value) / 16383.0
else:
scaled = (127 - value if inv else value) / 127.0
self.master_volume.emit(scaled)
def _handle_note_on(self, note: int):
# Hardcoded Numark DJ2Go mapping (legacy)