The MIDILED system is a combination of Arduino hardware, the Firmata firmware for Arduino, and a Puredata software interface. Made in collaboration with musician Josh Fulfs for his live performances, the MIDILED features four individually controllable LED lights that are controlled via MIDI input.
I was approached to create some kind of interactive light show for live musical performance. Despite this general blank slate, there were some considerations to take into account. The operation of the system should be able to be easily automated or controlled by someone with little technical know-how, the construction and connection should be conducive to a travelling musician, and the prototype phase should lend itself to quick iteration in order to evaluate a variety of approaches and physical design styles. My end user, Josh, was familiar with popular DAW programs and concepts, and would be using Ableton Live on a laptop with MIDI controllers in addition to live instruments and singing.
Usage of this system would be on stages of various sizes, so I wanted long cables for the Arduino and lights. But, being ‘gig ready’ suggested a certain robustness and keeping costs low was always a good goal. I wound up using an Arduino shield that broke out the GPIO into CAT5 Ethernet cable connections. Not only are Ethernet cables lengthy, relatively cheap, and robust, they offer more ins and outs within one cable compared to something like an audio cable.
I chose to keep the programming on the Arduino itself to a bare minimum. Any necessary changes that might need to be made by an audio-proficient end user would be easier to do in an environment like Pure Data as opposed to re-uploading firmware to the Arduino itself. The Arduino is basic in and out, while Pure Data handles the MIDI aspect of the operation. Josh was always going to be using a laptop with Ableton Live running, so I didn’t need to consider setups without a computer involved (hardware MIDI or audio only input).
The Puredata patch receives MIDI, analyses the incoming notes and triggers the corresponding color on the corresponding light fixture. This allows the user to pre-configure MIDI sequences to program their own light show within their DAW of choice. But it also lets them tie the lighting with live usage of a MIDI controller like a keyboard connected to Ableton Live. Or a mix of both approaches.
Josh designed and laser-cut a case that allowed for an outward facing stage light that could sit at the edge of the performance stage. I suggested using vellum paper as an opaque filter to diffuse the LEDs, so a slot was cut to accommodate a piece by simply sliding one in. This also opened the possibility of future variations: printing images on the vellum or cutting out patterns in paper to create stencils, for example. The case was cut from MDF wood. While not the sturdiest materials, it made for light weight and low cost construction.
Pure Data at first proved to be a little imposing for an end user who had no experience with coding or patching environments before. However, after explaining the basics (“Change this number to change the MIDI note”) and getting a streamlined instruction set (“Install Pure Data. Plug in the USB, open this file, open Ableton Live”), the MIDILED’s features became evident to Josh. If I was going to make something more polished in the future I would probably use at least Max/MSP if not Processing or openFrameworks, but Pure Data filled its role well at the time.