This project began as a graduation gift to my sister. I thought it would be cool to install lights in our basement that react to music so that it could be used as a dance floor at her graduation party. I first experimented with just using the ADC of an atmega328 to process the audio signal but that gave me too little information about the signal to do any cool affects. I then found the MSGEQ7 which breaks the signal into 7 different frequency bands and outputs the DC representation of the amplitude of each band. This chip allowed me to make my system have more complex modes.
To control the system there are 3 buttons and a rotary encoder. The LCD presents the user with a menu where they can turn the lights on/off, change the mode of the lights, edit the sensitivity of the sound reactive modes, and use a few other features.
The lights currently have 5 modes: On, Full Trigger, Half Trigger, Strobe, and Fade. The half and full trigger modes both use the set sensitivity of the lights to determine when to turn the lights on/off. The sensitivity can be set between 0 and 100 for each band using the buttons and rotary encoder. For the full trigger mode, if the amplitude of any of the 7 frequency bands passes the set threshold, all of the lights turn on. If none of the amplitudes are large enough, all the lights turn off. The half trigger mode uses the same principal but when the threshold is not passed, half of the lights (in an checkerboard pattern) are on and when the threshold is passed the half that were on, turn off, and the half that were off, turn on. This creates the effect of a strobe when looking at the lights while keeping the amount of light outputed constant. The last mode that requires explaination is the fade mode. In this mode, the brightness of all the LEDs is determined by the volume of the music. This mode can also be modified by editing the sensitivity.
Since not all applications (music, games, movies...) are the same, the sensitivity needs to change pretty often. Because of this, I added presets as a feature. The control unit can store 5 different presets that can easily be loaded or writen to through the menu.
The videos demonstrate the lights reacting to songs in Full Trigger mode. I appologize for them being very dim, since its blacklight the camera could not pick up the light well.
The main control unit of the system consists of an Atmeg328, MSGEQ7, and a 20x4 Character LCD (with a serial backpack from Modern Device). It connects to the lights through a CAT5 Jack and audio input can come from a 3.5mm or RCA jack.
There are 39 foot long LED strips spread out across the ceiling. All LED borads as well as the shift register boxes and the CAT5 cable are attached using magnets so that the whole system can easily be removed if needed.
To control all of the light boards individually and reduce the number of wires leaving the control unit, I used 5 shift registers spread across the center beam of the basement all connected by CAT5 cable. By using shift registers I could control all 39 lights using only 3 pins from the atmega.