Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Yes—an ESP32 can drive a 16×16 WS2812B matrix as a music spectrum analyzer. The basic build samples audio with the ESP32 ADC, calculates an FFT, converts frequency magnitudes into LED columns, and refreshes the display. Mirko Pavleski’s 2021 design also provides VU-meter and waterfall views, with a microphone input as the quickest option and a biased, AC-coupled line input for a cleaner source.
What this project builds
The physical display is a 16×16 grid of individually addressable RGB LEDs using WS2812 chips, controlled by an ESP32. Firmware repeatedly captures audio samples, runs a fast Fourier transform (FFT), groups the resulting frequency magnitudes, and paints the matrix. The same hardware can show three spectrum-analyzer patterns, a VU meter, or a waterfall-style history display.
The matrix was described as costing about US$12 when the project was published in 2021. That is a historical figure, not a current retail price.
Core parts
- ESP32 development board
- 16×16 WS2812B addressable RGB LED matrix
- Small microphone module with a preamplifier, or a line-level audio source
- Pushbutton and slide switch
- Two 10 kΩ resistors, two 100 kΩ resistors, one 470 Ω resistor, and one 100 nF capacitor
- Wire, a suitable power supply, and an enclosure or mounting panel
The documented tools are an Arduino IDE, soldering iron, lead-free solder, and optionally a 3D printer for the pixel grid and enclosure.
PC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minute#1 Best Overall
- Alloy-Wired LED Solution: Premium Performance, Budget-Friendly Value.Cost-effective solution using alloy wiring instead of premium gold wires, significantly reducing production costs while maintaining reliable performance. Perfect for entry-level projects and budget-conscious makers, delivering excellent value while expanding affordable options for LED enthusiasts.
- 2 pack 16X16 256Pixels. This 16x16 LED matrix (256 total pixels, with 16 horizontal pixels and 16 vertical pixels) features a compact 16cm (Width) x 16cm (length) [6.3in x 6.3in] square design with individually addressable smart LEDs, enabling full customization of scrolling text, pixel art, and dynamic lighting patterns for creative displays.
- Featuring wide compatibility, this LED matrix seamlessly works with Arduino, Raspberry Pi, FastLED library, Rainbowduino,K-1000C,SP802E, SP530E and WLED controllers, offering diverse effects including spectrum music visualization, scrolling text, image/video display, fireworks animations, and dynamic chase patterns depending on your controller selection
- With a chainable and flexible construction, these LED panels easily connect via 3-pin JST connectors for modular expansion. The bendable FPCB substrate conforms naturally to curved surfaces while preserving pixel integrity, perfect for creating expansive displays or organic architectural lighting installations.
- Designed for budget-conscious creators, these durable and aesthetically pleasing LED panels deliver performance rivaling premium alternatives. Perfect for DIY LED screens, advertising displays, and decorative installations in hospitality venues like hotels, KTVs, and bars, they're equally suited for indoor signage and special event decorations including Christmas and wedding celebrations.
Choose the audio input before wiring
Your input circuit determines how predictable the analyzer will be. A microphone is fast to assemble; a line input generally gives a more controlled signal but needs an analog-conditioning network.
Microphone module: simplest build
Connect the preamplified microphone module to an ESP32 analog input, provide power and a common ground, and let the firmware sample its output. This avoids the stereo-summing and bias network required by line input.
The limitation is acoustic rather than computational: the usable frequency range depends on the microphone capsule and its preamplifier. A bar that is absent may indicate poor microphone sensitivity, room noise, placement, or gain—not an FFT failure.
Rank #2
- Alloy-Wired LED Solution: Premium Performance, Budget-Friendly Value.Cost-effective solution using alloy wiring instead of premium gold wires, significantly reducing production costs while maintaining reliable performance. Perfect for entry-level projects and budget-conscious makers, delivering excellent value while expanding affordable options for LED enthusiasts.
- This 16x16 LED matrix (256 total pixels, with 16 horizontal pixels and 16 vertical pixels) features a compact 16cm (Width) x 16cm (length) [6.3in x 6.3in] square design with individually addressable smart LEDs, enabling full customization of scrolling text, pixel art, and dynamic lighting patterns for creative displays.
- Featuring wide compatibility, this LED matrix seamlessly works with Arduino, Raspberry Pi, FastLED library, Rainbowduino,K-1000C,SP802E, SP530E and WLED controllers, offering diverse effects including spectrum music visualization, scrolling text, image/video display, fireworks animations, and dynamic chase patterns depending on your controller selection
- With a chainable and flexible construction, these LED panels easily connect via 3-pin JST connectors for modular expansion. The bendable FPCB substrate conforms naturally to curved surfaces while preserving pixel integrity, perfect for creating expansive displays or organic architectural lighting installations.
- Designed for budget-conscious creators, these durable and aesthetically pleasing LED panels deliver performance rivaling premium alternatives. Perfect for DIY LED screens, advertising displays, and decorative installations in hospitality venues like hotels, KTVs, and bars, they're equally suited for indoor signage and special event decorations including Christmas and wedding celebrations.
Line input: cleaner, but requires biasing
A line-level waveform swings above and below zero, while the ESP32 ADC must receive a voltage within its input range. The documented circuit handles that in three stages:
The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →- Combine stereo: feed the left and right channels through separate 10 kΩ resistors into one mono node.
- Remove DC: pass the summed signal through the 100 nF capacitor for AC coupling.
- Set the ADC midpoint: use two 100 kΩ resistors as a divider from the 3.3 V supply, placing the audio waveform at approximately 3.3 V ÷ 2 = 1.65 V when no audio is present.
That midpoint lets the ADC represent both polarities of the audio waveform as excursions around 1.65 V. Keep the line source at a suitable level; clipping the ADC produces misleading harmonics just as surely as an underpowered signal hides detail.
Hardware comparison
| Decision | WS2812B/ESP32 project | MAX7219 alternative |
|---|---|---|
| Controller and sampling | ESP32 ADC samples the audio and performs the FFT. | Arduino-compatible implementation with an analog microphone; sample count and sampling frequency are configurable. |
| LED hardware | 16×16 individually addressable RGB pixels. | MAX7219-driven matrix modules, normally monochrome. |
| Visual output | Color spectrum patterns, VU meter, and waterfall view. | Spectrum rendering on the matrix; color effects depend on the display hardware and are not available on a monochrome module. |
| Input wiring | Microphone module is the shortest path; line input uses stereo summing, AC coupling, and 1.65 V bias. | The corroborating implementation uses an analog microphone; its line-input circuit is not specified. |
| Configuration | FFT-to-column mapping, patterns, brightness, and decay are handled in the project firmware. | Sample count, sampling frequency, matrix dimensions, and decay are exposed configuration points. |
| Mechanical work | Pixel partition and diffuser make the RGB grid easier to read. | Module construction is simpler, but the final enclosure depends on the MAX7219 panel used. |
Both architectures follow the same signal chain—ADC samples, FFT calculation, magnitude mapping, and matrix rendering—but they are not drop-in electrical replacements.
Rank #3
- Highly smart. Each LED is individually addressable. You can set each LED as you wish to scroll messages or draw little images.
- Wide compatibility. It works great with programmable controller, SP107E, K1000C,T1000S, etc.
- Chainable and bendable design. You can extend the panel by hooking them up one by one with the 3pin JST connectors. Flexible FPCB can be gently bent and curved around surfaces.
- Save your money. It is sturdy, beautiful and very comparable to other similar products.
- Wide application: 6.25inx6.25inx0.07in. It can be used to make led screen, led wall, advertising board and widely applied to hotel, KTV, bars, Outdoor advertising signs, Christmas or wedding party decoration, etc.
Wire the display and controls
Matrix and power
Connect the ESP32 data output to the matrix data input identified by the panel’s arrow or “DIN” marking, and connect grounds together. Supply the matrix from a source sized for the panel and its chosen brightness; addressable RGB pixels can demand substantially more current than the ESP32 itself. Keep the power wiring short and secure, and verify the panel’s polarity before switching it on.
The listed 470 Ω resistor is used in the project’s signal/control wiring. Follow the original schematic and your particular matrix’s data-input recommendations rather than assuming every panel has the same connector order.
Button and slide switch
The pushbutton is the user interface for pattern, brightness, and automatic-mode controls. The slide switch provides a physical power or enable control in the enclosure. Use the ESP32 pin assignments from the firmware you load; pin numbers are implementation details and are not universal across ESP32 boards.
Rank #4
- [Smart device] Each LED controlled by integrated circuit, which is individually addressable. You can set each LED as you wish to scroll messages or draw little images.Full color, high brightness, good heat dissipation, long working life, up to 50,000 hours.
- [Safe to use] DC5V input and working. Unlike the traditional LED panel which has many circuit wires and is dangerous to touch, this LED Matrix adopts hidden circuit. You can touch it randomly and hang it at anywhere.
- [Wide compatibility] LED screen panel works great with Raspberry pi, Arduino or stand-alone ATmega328p setup. And also works directly with SP530E, SP801E,SP105E, SP107E, K1000C, T1000S and more controllers. With different controllers, it will provide different effects, spectrum music mode, rolling subtitle, picture display, video display, fireworks effect and chase effect.
- [Flexible design] You can extend the panel by hooking them up one by one with the 3pin JST connectors. Flexible FPCB can be gently bent and curved around surfaces. More panels can be spliced into a larger pixel screen.LED
- [Wide applications] Used to make LED wall, advertising board, taxi advertising or information signs, music beats board show and so on. Applied to shops, bars, clubs, shopping malls, dorms and boutique atmosphere lighting.
How the FFT becomes a 16×16 picture
The firmware repeats four operations:
- Sample: read equally spaced ADC values from the microphone or conditioned line input.
- Transform: calculate the FFT to obtain magnitude information for frequency bins.
- Map: combine bins into a manageable number of visual bands and convert magnitude into column height or color.
- Render: write the resulting pixels to the WS2812B matrix, applying brightness and decay rules.
With a sample rate of Fs and N samples, the nominal spacing between FFT bins is Fs/N. Increasing the sample count improves frequency spacing but requires more memory and processing time; increasing the sample rate extends the highest representable frequency but leaves fewer samples per low-frequency cycle for a fixed buffer. The project documentation does not publish validated frequency-error, refresh-rate, or repeatable-range measurements for this exact build, so treat those as design choices to tune rather than guaranteed specifications.
Band mapping and visual decay
A 16-column display cannot show every FFT bin separately. The firmware therefore groups or maps bins into columns. Low-frequency columns can be narrow while higher-frequency columns cover more bins, depending on the mapping chosen in code. Decay keeps a peak visible briefly after the signal falls; too much decay makes the display sluggish, while too little makes it flicker.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Operate the documented modes
The single-button interface uses press timing rather than a menu:
Best Value
- [Smart Device] 2 Packs Digital Flexible Individually Addressable LED Panel 16cm x 16cm (6.3in x 6.3in x 0.07in ). Each LED is controlled by an integrated circuit that can be individually addressed. You can set each LED the way you want to scroll messages or draw small pictures. Full color, high brightness, good heat dissipation, long life, up to 50,000 hours.
- [High safety] Traditional LED panels have many shortcomings such as many circuit lines and dangerous touches. However, this LED matrix panel uses hidden circuits, so there is no need to worry about safety hazards. You can touch it and place it anywhere.
- [Wide compatibility] Works great with Raspberry pi, Arduino or stand-alone ATmega328p setup. And also works directly with SP530E, SP801E,SP105E, SP107E, K1000C, T1000S and more controllers. With different controllers, it will provide different effects, spectrum music mode, rolling subtitle, picture display, video display, fireworks effect and chase effect.
- [Chainable design] You can use 3-PIN JST connector to connect ws2812b panels of various sizes one by one to form a larger pixel screen. The flexible PCB board can be gently bent around the surface.
- [Wide Applications] Used to display LED display, LED wall, billboard, taxi advertisement or information display, music beat display board, etc. Applied to shops, bars, clubs, shopping malls, dormitories and lighting in boutique atmosphere.
- One press: change the display pattern.
- Long press: change brightness.
- Three presses within two seconds: enable automatic pattern changes.
- Five presses within two seconds: turn the display off.
When troubleshooting, count presses from a definite idle state and keep the intervals inside the documented two-second window. A switch or button that bounces electrically can be interpreted as extra presses, so stable wiring and firmware debouncing matter.
Build sequence
- Test the ESP32 alone: install the Arduino IDE support for your board and confirm that a minimal sketch uploads.
- Test one audio path: start with the microphone module if you want the fewest connections. Confirm that the ADC sees a changing signal before adding FFT rendering.
- Assemble the matrix circuit: connect data, power, and common ground, then run a simple pixel test at low brightness.
- Load the analyzer firmware: set the input pin, matrix dimensions (16 columns by 16 rows), sample settings, and pixel-order options required by your hardware.
- Verify the FFT view: play a steady tone or music and check that columns respond. If the display is solid, inspect ADC range, grounding, and input bias before changing the mapping.
- Add controls: wire the button and slide switch, then verify single, long, triple, and five-press actions.
- Finish the enclosure: install the partition and diffuser only after the electronics are stable.
Make the matrix readable
Individual addressable pixels look like bright points unless neighboring LEDs are optically separated. The project uses a printed grid or partition in front of the matrix and tracing paper as a diffuser. A simple PVC-board enclosure with adhesive color covering supplies the outer finish. These choices improve presentation and viewing angle; they are not required for the FFT or for the electrical circuit to work.
Troubleshooting by symptom
No response to sound
- Check that the microphone preamplifier is powered and shares ground with the ESP32.
- For line input, confirm the 1.65 V midpoint with no signal and verify that the capacitor is in the signal path.
- Check that the firmware’s ADC pin matches the physical wiring.
Bars move but the spectrum looks wrong
- Reduce the source level if the ADC waveform is clipping.
- Try a different microphone position or capsule; sensitivity limits the detectable range.
- Review sample count, sampling frequency, and bin-to-column mapping together. Changing one changes how the display should be interpreted.
Pixels are dark, random, or reset
- Verify matrix data direction and common ground.
- Use a power source and wiring appropriate for the full pixel load, not just the ESP32.
- Test at low brightness first, then increase it after stable operation.
Button commands trigger unexpectedly
- Check for switch bounce and loose connections.
- Measure triple- and five-press sequences against the two-second requirement.
- Confirm that the firmware’s button pin and pull-up or pull-down arrangement match the circuit.
Which version is right for you?
Choose the ESP32 and WS2812B design when you want a compact 16×16 RGB display with multiple visual styles, a VU meter, and a waterfall mode. Use a microphone when speed and simplicity matter more than a controlled frequency response. Choose the biased line-input circuit when you have a suitable source and want repeatable signal levels without relying on room acoustics.
A MAX7219 matrix is a valid alternative if monochrome output is acceptable or you already own those modules. It follows the same ADC-to-FFT concept, but the wiring, display capabilities, and firmware configuration differ from the WS2812B build.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




