Neopixel Music Visualizer
2026-04-23
A big music visualizer, using a 8x30 grid of neopixels and a raspberry pi pico
This article isn't finished yet!
One of my friends wanted a big music visualizer that would move up and down to music that was played through a speaker. I was given a big reel of neopixels to make the visualizer with. It needed to be able to work with a line in and a microphone, this was because the speaker may be a bluetooth speaker, in which case a microphone will need to placed near the speaker for the visualizer to pick it up and pass it into the controller board.
The Neopixel matrix
I needed to arrange the neopixels in a matrix for displaying the frequency bars (more on this later), so I decided
to cut the neopixels into 30 led strips and connect them in a 'snake' arrangement. This made it super easy to connect
the led strips together as I could use a much shorter bit of wire instead of having to go the whole length of the strip.
Once that was done I flashed some sample code to a pi pico to test that my setup was working. It worked first try! However
the neopixels were rather dim, turns out that they draw a LOT of power. To fix this I spliced in a external power source for
the neopixels so that I could use the full brightness.
I then drew up some brackets in inventor to hold the neopixels
at a equal distance from each other. This doesn't prevent them from rolling up, but it's going to be held up so this won't
really be an issue.
The Controller
For this project I wanted to yet again use the raspberry pi pico for my controller, due to its ease of programming and its cheap price. I made a little board to hold the pi pico and all the support components for the audio input and power circuitry, this was all made on veroboard as thats what I had lying around. This works quite well but it doesn't look super pretty. The two extra parts I've put on mine is a audio bias circuit and a 5V regulator, The bias circuit is rather simple, with just two resistors making a divider network and a input capacitor to remove DC from the signal. after the filtering, the signal gets fed into the analog pin of the pico, where it is digitized. The controller runs a fourier transform on a sample of the input signal to create the 8 different frequency bands, which makes the amplitude data used to drive the 8 strips of NeoPixels.