‘DMX‘ is the name given to a lighting protocol that can be used to automate and co-ordinate the control of these kinds of lights, which is something you desperately want to know about because it turns out that one day
you’re putting on a play, or
you have a pub and want to bring in and daze a few punters, or
you want to cut down on your obsessive OCD light switching ritual you need to perform every time you leave the house.
If this sounds like you, then you’ll probably want some software that can speak DMX.
The link-levelDMX protocol is fairly simple: each DMX cable is daisy chained from one light to the next, with each ‘fixture‘ on that chain taking up a finite number of ‘channels‘ in a 512-channel ‘universe‘. If you want more than 512 one-channel lights, or, say, 64 eight-channel lights, then you need to run multiple universes (sometimes called a multiverse).
I didn’t come up with these names.
Perhaps a diagram is in order:
So here we have a 5-channel LED spotlight (called a ‘par‘), a 3-channel box that shoots lasers out of its eyes, and an 8-channel moving head spotlight (called a ‘wash‘, for reasons explained in this wikipedia page).
The channels that each light occupies in the universe can’t overlap with any of the other lights, so each fixture is given an ‘offset‘ defining that fixture’s starting channel, usually by dialling it in on a panel on the back of the thing using mislabelled DIP switches or some kind of digital readout that have differing opinions on where channel 1 is.
The individual channels that a fixture responds to is different for each fixture type, but typically involve some combination of the following:
what colour it is
what brightness it is
where it’s pointing
how fast it’s moving
what kind of shape it’s casting on the wall (possibly using gobos, which in all likelihood are spinning at some defined rate)
how big the shape is
whether the shape is in focus or not
whether the light is rapidly pulsing on and off and how quickly it’s doing that (‘strobe’)
whether it’s intentionally emitting smoke
whether it’s currently in a manufacturer-defined light-show (called a ‘macro‘ in DMX terminology), which may or may not be synchronised with whatever the light is hearing in it’s built-in microphone. Disco lights have microphones, you’ll be please to hear, especially if you’re the sort of person who wears tin-foil millinery. Anyway, if a fixture is currently in ‘macro’ mode, then that usually means it will ignore any inputs on its other channels, except when it doesn’t.
and for light fixtures that have multiple outputs, some unintuitive combination of the above
There’s no consistent standard for this, so you might also have extra-special fixtures that do something else, like shoot fireworks or change the channel on a TV or something. If you get enough of these fixtures operating in one place, then you can keep people entertained whilst they’re forced to listen to (popular artist of the day), make your house be the envy of your neighbourhood during the Christmas season, or group them together to form a very bright 0.0001 mega-pixel display.
What you want to do, say, is set the value at channel 20 to 255 and then to 0 again in a loop to make the thing flash . And there are many, many, many software products out there that help you to do that.
Why isn’t there even more software that allows me to do this ?
It also runs in a web browser, which I think is something that might take off one day.
When you fire the thing up, you get a selection of buttons that look a bit like this down the left hand side:
Clicking or tapping one of those big, fat, roadie-sized buttons will change the display to show you information relevant to that view:
Each panel on the right is slightly purple in colour, which apparently is less blinding in low-light conditions. I wrote it about 5 years ago, so it probably looks a bit naff. It’s all HTML though, so presumably you could make the buttons look like whatever MS/Apple think buttons should look like this week.
At any rate, each panel provides a slightly different abstraction of the light show; the DMX panel allows you to view and modify the raw DMX values that are being sent down the wire, the fixtures panel allow you to tell individual or groups of lights to do things that a human might understand (e.g. make the stage go green), and the show panel allows you to trigger pre-arranged sequences of light and/or sound (e.g. cast a spotlight on stage left, play a dramatic sting, and put ‘ACT III SCENE IV – THE NEXT BIT’ on the overhead projector).
In the interests of pragmatism, there’s also a big red button that turns off everything, which is what you’ll be hitting when things start going haywire, a log panel which gives you some feedback on what’s currently going wrong, and a config panel to configure everything.
Actually configuring the thing is the fun part of course, which is probably too complex to go into in any great depth here. Suffice to say there are another three levels of abstraction in that, depending on whether you want to point and click at things or describe the light show in code, which obviously takes less time, if you’re willing to learn a scripting language and the associated API, which I can pretty much guarantee that you aren’t.
2021-01-09 Update: So after 5 years and failing to make any improvements on this at all, thought it’d be easier just to dump the thing up on github (with a list of caveats) and let someone else have a go at finishing it.
 Obviously you’ll be using gold-plated XLR digital DMX cables with platinum connectors, because that will make things flash better, man. Or you’ll use a bit of microphone cable.  Buy them in packs of ten, and then leave them around so that people steal them  Yes, gobos. Not just a character from Fraggle Rock.  Which, incidentally, would look fantastic under the disco ball.  Because the build process has failed, or no-one’s getting on the rollercoaster, your stock price has raised or lowered by 5%, or you’ve just set initiated your self-destruct sequence.