ethanhouseworth

← back to projects

DJ Lighting System

Feb 2026 · Updated Apr 2026 DJ / Hardware

Ethan Houseworth + Ultron

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.
Share LinkedIn

subscribe for a monthly bonus article and updates on new projects and experiments.