An old friend of mine is a musician, so I made them an STM32 based VU Meter that would change
colors depending on the frequencies of the received sound. After sketching out an implementation
that used a lot of VCVS stages, I decided to use a digital implementation instead. A simple
microphone amplifier circuit feeds the raw sound signal to the ADC of an STM32F4, which DMAs a few
milliseconds worth of samples into a buffer and then uses the ARM CMSIS DSP library to take an FFT.
The brightness of the RGB leds around the PCB is set in real time by the coefficients from the FFT.
The VU Meter is powered by a Li-Ion coin cell mounted on the back, which is recharged using the USB-C
port on the bottom. The wires in the photo are for the ST-Link Programmer.