Oftentimes the built-in sound recognition systems in lighting fixtures are rudimentary and boring. Here I describe a method for utilizing Ableton Live and some third-party plugins to create an automatic DMX light controller system. The system also implements the iPad for controlling the lights when automatic sequences become boring.
Recently, I had the opportunity of building a discotheque at a house party. My initial thought was to use the microphone on one of the fixtures and use this light as the master that would control the rest of the lights (slaves). This simple approach has two problems. First, the integrated sound recognition systems in fixtures aren’t too complex. This prevents one from assigning certain frequencies (e.g kick drum) to specific lights. One could of course apply the integrated microphones in each fixture separately and adjust their frequency responses accordingly (essentially having no master fixture), but this would result in a horrible, uncontrollable mashup of all possible colors. The other problem is that having a fixture made by company A does not necessarily talk with the fixture from company B in a logical way. There is no universal rule for “green” (at least that I’m aware of) and the channel architecture of the fixtures is mainly specified by the type of fixture in question (The DMX channel for “green intensity” for light A might be “spin motor 180 degrees” for light B).
I needed to create a system that would analyze the currently playing music (in this case, from Spotify), divide it to specific frequency bands, quantify the velocity changes from audio and route these commands to the lighting system. This had to be done without any DMX controller hardware (apart from a USB-DMX converter). As a bonus, I wanted create a simple iPad interface for overriding the automatic controls in favor of more specific lighting scenarios. The dancing folk would then be able to grab the iPad and become light mixers themselves – this required the iPad system to be wireless. I managed to get all of the above working by modifying Unzyme’s live lighting rig and by using some third party Max for live plugins.
This guide is written for OSX, but the setup can be fairly easily replicated in Windows as well.
- Enttec DMX USB Pro
- Fixtures with DMX cables running through
- Sound card with multiple outputs (M-audio Profire 610 was used here)
The audio-to-DMX chain in Ableton Live
First, audio is fed into Ableton Live. Then, the audio is transformed to midi data and assigned to specific lights.
Routing Spotify to Ableton Live
Using an external microphone for capturing and analyzing music is possible, but issues such as reverb, general muddiness and dependency on stable volume level are a nuisance. Instead of using a separate mic for capturing the audio, the audio was routed internally to Live. In Windows XP it was easy to virtually route an output to an input. OSX, however, doesn’t offer such a possibility (as far as I know) and so I had to do the thing most perverse: I routed two outputs from the sound card directly to its inputs. An Ableton Live audio track was then set to receive this input. The output from this was fed to the master channel, which was finally output to the PA-system through a hardware mixer. Internal routing also allowed for easy delay adjustment directly in Live, which was necessary to compensate for the lag arising from audio-to-midi conversion.
Transforming the audio signal to midi velocity
The transformation step requires three separate Live channels (coined 1st, 2nd and 3rd phase).
The key part was transforming the music into midi data in real-time. Live offers audio to midi conversion of readily recorded tracks, but not real time conversion. After about an hour of googling I discovered a Max for Live plugin that does exactly what I wanted. Threshold with notes is a two part plugin by yehezkel raz that takes audio input (from the Spotify channel) and sends out a midi note signal when a specified audio velocity threshold is crossed (1st phase, with Threshold). The triggered midi note is then routed to a channel in Ableton Live that contains a Drum Rack (2nd phase containing Notes, see next paragraph). Note that only a single note may be output (per channel) and the only aspect of the incoming audio signal that is analysed, is its velocity.
Each “cell” in the drum rack contains a dummy audio clip and represents a certain function of a physical lighting fixture. For example, C1 might be be the motor velocity of an American DJ Dekker and C#1 the intensity of green LEDs within the same fixture. Every time a cell (or note) in the drum rack is triggered, a midi note is sent to yet another midi channel (3rd phase), which eventually outputs the midi data through a virtual midi port to a DMX control software called QLC (this additional midi channel is necessary, since Live, for some reason, requires a midi track to be completely devoid of devices in order to even have an option for midi output). The lighting software then receives the midi note, converts it to DMX and outputs the signal through Enttec DMX USB Pro to our daisy chained lighting rig (functions within QLC are beyond the scope of this post).
When the Audio-to-midi track is used to pick up only certain frequencies, it’s useful to add an EQ before Threshold. The EQ can be calibrated so that it only outputs, for example, the most distinctive kick drum snaps or the 200 hZ snare drum snap in snappy drum’n’bass song. Note that for each frequency area that you want to isolate, a fresh track is required. I ended up only using two different frequencies: one that separates the kick drum (relatively easy) and one that tries to pick up the snare (not so easy).
A crucial aspect to remember is that we don’t want each fixture randomly displaying the colours of the rainbow, unless you’re throwing a party for gay unicorns (disclaimer: which is OK!). Some consistency, or a theme, is usually a good idea. The key to this is utilizing the master fader of the fixtures (not all fixtures have this option, though). What we did was create a midi clip in Live’s session view named “default light runner”. This clip was always playing (unless it was overridden by the iPad, see end of post) and it contained no master intensity data. Instead, it told each fixture in the rig to be e.g green, if their master switch were on. The global color theme could then be controlled even if there was no light. The only exception here were the two Led Bars on our set, which contain no master channel. These simply displayed a dim ambient glow representing the current color scheme.
Song structure intelligence
I wanted the setup to contain some sort of song structure recognition. I figured the most obvious solution would be to try to recognise a short silent section, which might precede a chorus or a drop of some sort (some may call this a ‘pre-drop’). I wanted the strobe light go off when the bomb is dropped.
The solution was to employ a gate in Live, which would prevent any notes going out from the audio-to-midi channels unless the gate was turned on for a specified amount of time. When this specified amount of time was over, the volume would cross the gate threshold, which would then send a short audio clip to the audio-to-midi plugin and eventually flash the strobe for a specified amount of time. This worked out very well.
I didn’t want to settle for just an automatic light show, which might eventually become slightly boring and repetitive. I had the idea of creating some custom midi clips besides the default light runner that would contain interesting lighting sequences. These sequences could then be launched using Lemur from an iPad. The sequences would play for a while and would then automatically revert back to the default light runner using the automation parameters in Live’s session view. This was as easily done as it was said, since we use a similar setup for launching backing tracks in our live shows. I created a simple user interface in the awesome Lemur Editor and mapped the midi outs of the buttons in the interface to the midi clips. The interface also includes a “tap” button for syncing Live to the music (this has no other effect besides sometimes making the default light runner change colours in more or less sync). The Lemur template also contains a metronome, just for fun.
If you have any suggestions or questions, insert them in the form below.
– written by Ville Hoikkala (disco picture by Samuel Lehtonen)