Main Content

This is a really simple build made up of essentially 3 components and some fun coding with nested loops to translate audio amplitude data into colorful displays;

An Arduino (I used an Uno but any Arduino with at least 2 analog inputs should work)
Arduino Audio Spectrum Shield, 2x MSGEQ7, 3.5mm Jacks + 3-pin In
Some number of WS2812 individually addressable LED strips. I used 7 strips, 1 meter long each, 30 LEDs each
The Audio Spectrum shield has a 3.5mm jack for stereo input and another to pass the audio through to the output. It has 2 chips (one for each channel) that split the audio signal into 7 frequency bands.

Code in the Arduino “strobes” a digital pin to cycle through the 7 channels and reads the left and right analog value using 2 analog inputs on the Arduino and stores them in a “left” and “right” array.

There’s a good tutorial at SparkFun on the board with some good example code which doesn’t need the LED strips; https://learn.sparkfun.com/tutorials/spectrum-shield-hookup-guide-v2

Within the Arduino “loop” you call the function to read those values and do some interesting processing to put values into an “leds” array and then use the FastLED library to “show” the LEDs. This happens about 100 times per second unless you insert some delay.

The LED strips have 3 wires. Ground, 5V, and the signal. On mine, white is ground, red is 5V, and green is the signal.

The LED strips are wired from the bottom left to the top right. So the bottom left LED is 0, the bottom right is 29. One row up on the left is 30, and on the right end is 59. The top right is 209 since I have 7 strips of 30 that’s 210 LEDs numbered 0 - 209.

Supplies:
Arduino
Audio Spectrum Shield
You’ll have to solder on some header pins.
LED strips
I had some 1/2” thick foam board
A bit of wire. “

Link to article