Interactive LED Music Visualizer

Contributors: Michael Bartlett
Favorited Favorite 28


Let's face it: nowadays, most musical performances are complimented by some fancy light shows. Go to any concert, festival, club -- they all have a corresponding visual performance or effects. Why not add your own home to that list? Here's a simple yet effective project to make your very own son et lumière!

All palettes work with every visualization, but, for timeliness, not every combination is shown.

Required Materials

To follow along with this tutorial, you'll need the following materials. The partial wishlist on the left is for the simple circuit. It does not include the potentiometer and buttons. The full wishlist on the right is for the full circuit. You may not need everything though depending on what you have. Add it to your cart, read through the guide, and adjust the cart as necessary.

Any microcontroller with 3.3V and 5V pins will suffice. Any analog potentiometer and size momentary button should work. Depending on your intent, the trimpot and buttons may not be necessary.

  • Trimpot -- The trimpot is only used to adjust the brightness threshold, so, if you want maximum brightness, you don't have to worry about incorporating it.
  • Buttons -- The three buttons cycle color schemes, visualizations, and shuffle mode respectively, so, if you want to do without those features (and just use shuffle mode all the time), that's also a possibility.

If you're compiling from the Arduino IDE or similar, you'll want to snag the the NeoPixel Library since the code used is heavily based on it. The resistor and capacitor are not required, but they will help prevent possible damage to the LEDs. Any resistor between 300–500 Ω can be used.

It is also suggested that you use an Arduino and Breadboard Holder to simplify wiring and to mount the LED strip:

Full Visualizer

A small notch was cut in the Breadboard Holder to hold a piece of MDF, on which the LEDs are attached.

Recommended Reading

Before embarking upon this tutorial, you may find the following links useful:

Since we're using the NeoPixel library, it may also be a good idea to get familiar with the NeoPixel Documentation.