DJ Lighting System
from smart bulbs to DMX fixtures, Pro DJ Link integration, and a roadmap toward AI that pre-sequences light shows for every track.
the problem
i have 8 Govee lights in my apartment, 4 COB strip lights and 4 smart bulbs. the Govee app lets you pick scenes, but that's about it. during a DJ set, i'd pick one scene and just live with it for the whole set because switching meant pulling out my phone, opening the app, changing the scene on the bulbs, then changing the scene on the COBs separately. that's time away from the decks, and it kills the flow.
the "feel the AGI" moment
this was actually the first thing i hooked into Ultron. Govee had emailed me an API key, so i forwarded the email to Ultron on Telegram and texted "check your email." thirty seconds later the lights in my room started flickering. my friend and i just looked at each other. all i did was forward an email.
that moment is what made everything else on this site happen. if an AI can go from "here's an email" to "i'm controlling your lights" in 30 seconds, what else can it do?
what it does now
what started as Govee scene rotation has turned into a real lighting system. here's the current hardware stack:
| device | type | connection |
|---|---|---|
| Enttec Open DMX USB | DMX Interface | USB to Mac mini |
| 2x Venue Tetra 12 | RGBA Wash | DMX daisy chain |
| 1x Venue Tetra Bar | 4-zone RGBA Strip | DMX daisy chain |
| 4x Govee COB Strips | RGB LED Strips | WiFi / HTTP API |
| 4x Govee Bulbs | RGB Bulbs | WiFi / HTTP API |
| Scarlett 2i2 | Audio Interface (FFT input) | USB to Mac mini |
| Pioneer XDJ-XZ | DJ Controller | Ethernet (Pro DJ Link) |
the brain is lightd, a 5,400-line daemon running across 12 files. it does FFT audio analysis from the Scarlett 2i2, beat detection, BPM tracking, and manages 31 scenes across 7 categories. scenes change on phrase boundaries (every 32 bars), with drop detection and 6 inline modes for different energy levels.
yesterday i completed Phase 1: Pro DJ Link integration. the Mac mini runs a Python bridge that creates a Virtual CDJ (shows up as Player 5 on the XDJ-XZ screen). it captures track metadata, beat position, BPM, play state, loops, and which deck is master. Pro DJ Link is now the primary clock—FFT is secondary, used only for energy analysis. there's a live dashboard on port 8420 showing per-deck info in real time.
this isn't "text DJ mode and scenes rotate" anymore. this is real stage lighting synced to the decks.
the roadmap
phase 1: pro DJ link integration ✅ COMPLETE
ethernet connection to XDJ-XZ. virtual CDJ (player 5), real-time beat position, BPM, track metadata, master deck detection. live dashboard on port 8420.
phase 2: on-load track analysis
when a track loads into a deck, analyze it in 3-6 seconds. librosa and madmom for spectral analysis, section detection (intro, verse, build, drop, outro), vibe vectors. cache results in SQLite so we only analyze once per track.
phase 3: full track light sequencing
each track gets a color identity. filter the random scene pool based on vibe. plan an arc across the drops—energy envelope from waveform analysis. detect pre-drop blackouts (silence before the slam). automate the silence→slam moment.
phase 4: live DJ override detection
detect when i'm doing something live. loop escalation (looping the same 8 bars means keep building energy). hot cue jumps (skip the intro, slam straight into the drop). EQ kill detection via hybrid FFT + Pro DJ Link data. the system adjusts in real time.
phase 5: DJ Sam integration + live style switching
hand off lighting control to DJ Sam. Sam gets real-time track info, energy data, and a restricted lighting toolkit. Sam makes scene decisions, handles build-ups, and triggers drops. fully autonomous operation—i just mix, Sam handles the lights.
why it matters
most DJ lighting is either manual (distracting) or pre-programmed (doesn't react to what you're playing). this system knows the music in real time. beat position, track structure, energy level, drops. it's not a light show on a timer—it's synced to the actual mix.
phase 1 alone makes bedroom sets feel like a proper show. by phase 5, the system will pre-sequence an entire light show for every track, then adjust live based on how i'm DJing. that's the goal: AI-driven lighting that feels intentional, not random.
Architecture Prompt
Build an audio-reactive DMX lighting system synced to DJ hardware via Pro DJ Link protocol. Start with a daemon that does FFT audio analysis, beat detection, and phrase-based scene changes. Add Pro DJ Link integration over Ethernet to get real-time beat position, BPM, track metadata, and master deck info from the DJ controller. Use that as the primary clock and FFT for energy analysis. Build a live dashboard showing per-deck status. Then add on-load track analysis (spectral analysis, section detection, vibe vectors, SQLite cache). Plan light arcs across track structure—color identity per track, energy envelope from waveform, pre-drop blackout detection. Add live override detection (loop escalation, hot cue jumps, EQ kill detection). Finally, integrate an AI agent that gets real-time track info and makes autonomous scene decisions, handling build-ups and triggering drops.