ethanhouseworth

โ† back to projects

DJ Lighting System

Feb 2026 DJ / Hardware

Ethan Houseworth + Ultron

๐•in

one text message and the lights handle themselves.

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

i text "DJ mode" on Telegram. Ultron pulls up 12 curated scenes designed for deep house and tech house, stuff like "Deep Sea + Aurora" for the hypnotic opener, "Dance Party + Dance Party" for peak energy, "Heartbeat + Fire" for pulsing drops. the scenes rotate every 59 seconds, which hits roughly 32 bars at 130 BPM, my typical tempo. i don't touch my phone for the rest of the set.

Ultron built the scenes by pulling every available option from the Govee API, testing combinations, and curating the 12 that actually work for house music. i didn't pick them. i just said "make it look good for a DJ set" and he did.

the roadmap

phase 2: read real-time data from the Pioneer XDJ-XZ over ethernet via Pro DJ Link protocol. BPM, beat position (1-2-3-4), bar count, phrase position, track info. the XDJ-XZ broadcasts this on UDP port 50000. a prolink-go daemon on the Mac mini captures it.

phase 3: change scenes on musical phrase boundaries instead of arbitrary timers. every 32 bars, the lights shift, and it lands on the 1. feels intentional because it is. no drift from the actual music structure.

phase 4: BPM-synced pulse. at 130 BPM each beat is 461ms. with 0.2ms LAN latency there's massive headroom for reliable brightness pulsing on every beat. dim to bright to dim, synced to the kick drum.

phase 5: hand off lighting control to DJ Sam. Sam gets real-time track info plus a restricted govee toolkit, scene switching, intensity levels, flash triggers, beat-sync pulse. Sam decides which scene fits the current track based on genre, energy, and mood from Rekordbox tags.

phase 6: drop detection. either from Rekordbox phrase analysis (intro, verse, build, drop, outro tags) or rule-based (drops usually land at bar 32, 64, 96). dim during the build, flash on the drop.

why it matters

most DJ lighting is either manual (distracting during a set) or pre-programmed (doesn't react to what you're actually playing). this system is aware of the music in real-time and makes intelligent decisions about the vibe. phase 1 alone already makes bedroom sets feel like a proper show.

Share LinkedIn

monthly updates on new projects and experiments.