Sooner or later an installation needs to control real lights — not LED strips you drive from a microcontroller, but stage fixtures, washes, moving heads, architectural lighting, the things a venue already owns. All of it speaks DMX512, a protocol from 1986 that is still the universal language of lighting.
It’s simple, unforgiving, and worth an afternoon.
The mental model
A DMX universe is 512 channels. Each channel is one byte, 0–255. That’s it.
There’s no addressing in the packet, no acknowledgement, no error checking. A controller broadcasts all 512 values continuously, roughly 44 times a second, and every fixture on the line listens to the channels it’s been told to care about.
A fixture has a start address and consumes a run of channels from there. A simple dimmer uses one channel. An RGB fixture set to address 1 uses channels 1, 2, 3 — red, green, blue. A moving head might use 16 channels: pan, pan fine, tilt, tilt fine, dimmer, shutter, colour wheel, gobo, and so on.
So “patching” is just deciding which fixture starts at which channel and setting that address on the fixture itself. Two fixtures at the same address do the same thing — sometimes deliberately, usually by mistake.
Every fixture has a channel map, in its manual. Read it. There is no discovery mechanism; DMX is broadcast-only and nothing tells you what’s out there.
Art-Net: DMX over Ethernet
DMX itself runs over XLR-style 5-pin (often 3-pin) cable in a daisy chain, one universe per line, 32 devices max, terminated at the end.
Art-Net carries DMX over ordinary Ethernet/IP, and is what you’ll use from software:
- Many universes down one network cable instead of one line per universe
- Your computer talks Art-Net to a node (an Art-Net-to-DMX box), which converts to physical DMX
- Works over normal network gear, so it plays nicely with the rest of a rig
The usual topology for an installation: software → Art-Net over Ethernet → node → DMX chain → fixtures.
Driving it from a computer: QLC+
QLC+ (Q Light Controller Plus) is free, open source, cross-platform — Linux, Windows, macOS, and Raspberry Pi — and controls DMX, Art-Net and analog lighting. For installation work it’s the pragmatic default.
Setup:
- Inputs/Outputs → select the ArtNet output and enter the node’s IP address (or a USB-DMX adapter like a uDMX if you’re going direct)
- Fixtures tab → add your fixtures from the library, set each one’s start address to match what you physically set on the fixture
- Functions → build scenes (static looks) and chasers (sequences)
- Virtual Console → buttons, faders and sliders to trigger them
- Show Manager if you need a timeline
The Raspberry Pi support is the underrated part: a Pi running QLC+ is a permanent, silent, cheap lighting controller you can leave inside a plinth for a three-month exhibition.
Sending Art-Net from your own software
For generative or interactive lighting you’ll want to send Art-Net directly rather than trigger QLC+ scenes.
- TouchDesigner — the
DMX OutCHOP, set to Art-Net. Channel values are just CHOP samples, so anything that generates a number can drive a light. - Python —
StupidArtnetis the simplest library; you build a 512-byte array and send it. - Max/MSP, openFrameworks, Processing, Node all have Art-Net libraries.
- QLab can output Art-Net directly in its lighting tier, if the show is cue-based.
The pattern to internalise: whatever your software does, it ends up writing bytes into a 512-slot array and sending it 40-odd times a second. Once you see it that way, lighting is just another output buffer.
The mistakes that cost you an install day
- Fixture address not matching the patch. The commonest error by a wide margin. Check the address on the fixture, physically, not on your plan.
- No terminator. A 120Ω terminator on the last fixture of a DMX chain. Without it you get reflections — flickering, random movement, fixtures doing things nobody asked for. Intermittent enough to waste hours.
- Using microphone cable because the connector fits. DMX needs 120Ω data cable. Mic cable works until the run gets long or the rig gets electrically noisy, then fails unpredictably.
- Art-Net universe numbering off by one. Some software counts universes from 0, some from 1. If everything is silent but the network is fine, this is why.
- Broadcast Art-Net flooding the venue network. Art-Net can broadcast heavily. Use unicast to the node’s IP, or put lighting on its own switch or VLAN — otherwise you may take down the venue’s Wi-Fi and become very unpopular.
- Forgetting fixtures have their own menus. Many need to be set to DMX mode, and some default to a standalone or sound-active mode that ignores DMX entirely.
Where to go next
Once a universe works: RDM for bidirectional fixture discovery, sACN (E1.31) as the more modern Ethernet transport that scales better than Art-Net, and pixel mapping if you’re driving LED tape as a low-resolution display.
And the thing worth knowing culturally: lighting technicians have had this solved for forty years, with conventions, safety practice and vocabulary that are genuinely worth adopting. If you’re putting lights in a venue, the LX crew know things you don’t — ask them.