I've been working on sound-reactive interactive art installations for the past few years, and this year set out to build an immersive space that visualized the spectrum of sound people make. Earlier this year I received a grant from the Apogaea art festival in Colorado to start working on this project, called SoundPuddle.
My previous project (Sound Reactive Flowers
for Apogaea) used an Arduino Uno to perform a 128 step FFT sampling the output from a microphone on one of the analog inputs. It then performed some math to go from the FFT array to an array of colors, and controlled a bunch of LEDs with 4 TLC5940 LED drivers. Each flower in that project had 16 RGB channels, and my whole system had a loop time of ~10-20mS.
For the new project I needed to drive enough LEDs to fill a room (1664 LEDs, so far). This was beyond what I could do with an 8-bit Arduino (too bad the 32-bit Due isn't out, yet!), but I didn't want to leave the Arduino framework. My friend at the Boulder Hackerspace told me about the Papilio FPGA board and the Zpuino platform
, which is a 96Mhz 32-bit softcore programmable with a modified Arduino IDE.
My collaborator Alvaro Lopes helped modify the FFT C library I had used on the Uno to assembly on the Zpuino, and we used an interrupt to sample an 12-bit SPI ADC at 8Khz, collecting 1024 samples per cycle. The Zpuino then picks out the frequency steps we want (corresonding to musical notes) and uses a look-up table to do some linear transformations from FFT to RGB for each pixel. A DMA controller than moves those values from memory into 10 separate SPI controllers, allowing us to write to 10 LPD8806 LED strips simultaneously. This parallel movement of data allows us to perform the sound analysis and drive the LEDs super fast (<10mS for 1664 LEDs).
All our code is open and posted on github
. Some of it is directly usable for all Arduinos, and some is more Zpuino specific.
Here's a video of part of the LED array from a test-run:
The full SoundPuddle installation is in a 24-foot geodesic dome, with 200 watts of solar power. During the Apogaea art festival people were playing inside it from dusk to dawn, and it's a really cool environment for music and playing with the spectrum of sound. During the event there were a lot of impromptu performance, a few of which I recorded:
Yesterday I launched a kickstarter campaign for the project. We want to build a new PCB, better software, and bring the installation to several more art festivals. Hopefully we can also bring it to at least one maker faire in 2013. This is a very expensive endeavour, so we're trying to crowd-source the funding we need to keep it going. Ultimately we're going to donate it to a local science discovery museum, and we'll continue to post all our code on github. I'll also be documenting and posting on our open-hardware PCB design for improved audio input and control of the LPD8806 LED strips for large arrays. Check out our kickstarter page
There are more pictures of the project on our flickr photostream
, and more information on the project page at soundpuddle.org