I am designing a smart RGB LED strip driver based on a Raspberry Pi and an Ardunio. The Ardunio would controll the LED strip, and other LEDs connected to a shift register, while the RPi would manage inputs and a display and would be the I2C master of the Ardunio.
One of the planned features is a kind of 'disco light': the RGB strip would change color based on the Spectral/Frequency input (i.e. blue brightness ~ bass, green ~ treble, red ~ high). There are pretty obivious solutions for this using transistors/mosfets, but I want to have software controll over the colors. What I would need is some kind of audio spectrum sensor:
Option 1: a circuit or microchip that somehow analyzes/interacts with the audio input (without distorting it, of course), and outputs some (preferably 3-5) analog voltage signal for different frequency ranges regarding to their loudness
Option 2: An IC designed/usable for this purpose: it analyzes the spektrum of the input audio and sends the bandwidth data to the Ardunio by SPI.
Option 3: A way to use the Atmega328 itself for the analyzation. The process should not be laggy or 'processor-expensive' since I have other things to do with the Ardunio.
The problem is with me; I have no experience with analog circuits, and even less with audio circuits, and honestly I have no idea how to solve this. Good guy Google did not help me out this time either, so I ask for your help.
Do you know any chip or (considering my near-zero analog experience, preferably as simple as possible) circuit that fits to one of these descriptions?
There is an overall plan of the 'disco part':
Best Answer
There are three ways of doing this.
ATMega8 FFT + LCD (Less powerful than Arduino Uno's ATMega328): https://www.youtube.com/watch?v=drhF_F2Xehg
LM3916: https://www.youtube.com/watch?v=vLYpGfShEBo
LM4970: https://www.youtube.com/watch?v=mCvn9v5jyw4