Hardware

Sound To Light: Simple was designed to be a simple device that converts audio amplitude to increased brightness of a normal light bulb. Made in collaboration with Liz Harris to use for her live musical performances, the STL:S was made with Arduino and various electronic components to control AC power for a power socket. This created a “dimming” ability for any light sockets connected to the device, in this case an Edison-style incandescent bulb.


Demo Video

Liz approached me with the idea to have a light react in relation to the sound she was creating for her performances. The specifics would determine the choice of components and programming of the Arduino. She wanted to have something that could fit in a backpack for easy transport, and simplicity in terms of operation so that not only she but other music techs could operate the device with little to no issues. She preferred the coloring and brightness of incandescent bulbs over that of LEDs, which made the biggest difference in the production of the device.

Converting audio to light in the microcontroller realm usually falls on the MSGEQ7 chip, which has Arduino shields and libraries available to use. Headphone ins and outs were available, as well as code that could analyse amplitude across the audio spectrum. Controlling AC mains power was a more daunting task. I’m a fan of experimentation, but not of tripping breakers and starting fires. My initial readings into TRIACs and AC control circuits seemed to make sense, but I didn’t want to risk anything when giving my creation off to another person. I briefly considered mechanically moving physical dimmer switches with motors or servos, but that seemed like a possible point of failure for a piece of gear that would be travelling. In my research I also found out that there are such things as DC incandescent lights which would be much easier to code, wire, and safely construct, but that would greatly limit bulb choice and only cause further issue if this special bulb somehow broke on the road.

I decided to use established products for the AC dimming. The PowerSSR Tail and ZeroCross Tail products were proven and had example code available. For a moment I was on the hunt for a DMX controllable light socket, since there is documented code for controlling DMX devices. But I couldn’t find anything that was as compact or as cost effective as the PowerSSR Tail and ZeroCross Tail.

A simple box was laser cut and assembled with nails, glue, and Shape-Lock prototype plastic. This housed the Arduino and related circuitry.

Liz’s setup involved vocals, guitar with effects, and prepared tape loops. She was using a small mixer to adjust audio levels herself while performing. The 3.5mm headphone audio ins and outs for analysis could be converted to ¼” jacks, and audio could be passed through to the STL:S via FX or Monitor sends on her mixing board. This allowed for certain flexibility: the light could be reactive not only to all sound, but only her voice or guitar or her tape samples if she chose. More volume on the send would increase the maximum brightness of the bulb.

One AC socket allowed a power cord to power the unit, and any lamp or bulb fixture could be plugged into the other Arduino-controlled socket.

While there were some issues in getting everything working, and then getting it all working and inside the case, the end result was a success. Not all bulbs would dim properly: fluorescent, compact fluorescent and LED bulbs created flickering and erratic results. But normal filaments worked well, and the Edison bulbs in particular created a wonderful glow. There was no delay in processing, and the synchronicity created a hypnotic effect. Liz seemed satisfied with the final product as well and used the STL:S for multiple shows.

In the future I would be willing to perhaps try my hand at making my own AC dimming circuit, though I still hold a healthy respect for AC mains voltage. But having this AC limitation made for a much more challenging and satisfying project than a more standard LED based build. The end result was functionally able to be controlled via audio alone using musician-based paradigms like mixers, fx sends and monitor sends. Being able to hand off something that achieved the technical magic that more or less ‘just worked’ for a gigging musician without dragging them into a laptop/microcontroller world was rewarding.

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.