LED Sax
Project Overview
This product enhances musical performances through audio and visual effects. With the ability to act as a backup band, light show and effects generator any performance is transformed from average to spectacular. The idea came to my head in high school, and only recently had the skills necessary to obtain a high quality device. As a saxophone player the ability to mount a speaker, microphone, audio effects processor and light show compactly on my instrument is a huge advantage when setting myself apart as a performer.
My Role:
Everything
Built from scratch, I developed everything including:
Software
Programming on the RaspberryPi in Python, Arduino in quasi-C++. An audiocard is used as a microphone which is sampled at 44.1kHz. This data is sent through an FFT to obtain loudness in each frequency band, which is communicated to the LED strip through the Arduino (via USB serial). All of this code refreshes faster than a human can detect, no perceived latency is present.
Electronics
I used a battery pack to power the Arduino, RaspberryPi and LED strip. Mountable speaker is connectiblevia a standard 1/8" audio jack or even bluetooth for added simplicity. The LED strip is custom wired to provide four bars of frequency response.
Mechanical
Combination of battery pack, Arduino and RaspberryPi into a tight form factor to be usable and portable for a mobile performer. Mounting of the LED strip, electronics mentioned, and the speaker is all achieved with velcro.
Requirements
-
Real-time audio processing from live sound
-
So easy a musician could do it
-
Compact and unobtrusive mounting
-
Frequency response LEDs are accurate to sax
-
Scalable for new features such as custom effects (currently under development)
Highlights
When booting up, the system takes an average noise level over about 5 seconds to use as the noise floor for the LEDs. This means that if you play alone in your room or with a metal band, the LEDs will only respond to your instrument's sound.
Obtaining no-preceived latency was a challenge. The baud rate from RasperryPi to Arduino is 115200 bits per second, increased by orders of magnitude from the standard 9600. The sampling frequency and chunk size were lowered to their minimum while still providing accurate reproduction.