d2240c61c346242d5c71797add4fd7bca7a17999
- Mixer: 8 renamable stereo input channels with VU meter, volume fader, mute/solo - Master bus: compressor (threshold, ratio, attack, release, makeup) + limiter (ceiling), LUFS metering - Decks/carts keep their own JACK outputs, completely separate from mixer - MIDI learn: configurable bindings saved to ~/.gti_radiostudio/midi_map.json - mixer_widget.py: QDial-based DSP controls, scrollable channel strips
VIBE CODED AS FUCK. DO WHAT YOU WANT. I DON'T OWN IT YOU DON'T | Feature | Status | Notes | |---|---|---| | **Dual Deck Player** | ✅ | Play/Pause, Stop/Eject, Cue, ±15s scrub, Start/End jump, Queue system | | **4-Slot CART Machine** | ✅ | Toggle play/stop+reset, per-slot LCD display | | **Playlist Manager** | ✅ | Drag/drop, Add files/folder, Load to deck, Queue, Right-click menu | | **CART Playlist** | ✅ | Separate playlist panel, auto-fills next free cart slot | | **MIDI Controller** | ✅ | Numark DJ2Go - Play/Pause, Cue, Jog wheels, 4 Cart buttons | | **Audio Fingerprinting** | ⚠️ | AcoustID integrated, API working but database gaps | | **Play History** | ✅ | Scrollable session history, file tags + MusicBrainz metadata | | **Top Bar** | ✅ | 24hr clock, full date display | | **Colour Themes** | ✅ | 4 themes - Green, Amber, Blue, Red - cycle with ◈ button | | **Resizable Columns** | ✅ | QSplitter on all 3 columns | radiopanel/ ├── main.py # Entry point, layout, wiring ├── audio_engine.py # JACK client, deck states, recording ├── deck_widget.py # CDJ-style deck UI + transport controls ├── cart_widget.py # 4-slot CART machine ├── playlist_widget.py # Playlist + CART playlist panels ├── fingerprint_widget.py # AcoustID audio fingerprinting ├── midi_engine.py # Numark DJ2Go MIDI mapping ├── top_bar_widget.py # Clock, date, theme switcher ├── history_widget.py # Session play history └── requirements.txt # Dependencies
Languages
Python
100%