In general terminology, you're looking for a "spectrum analyzer"*.
(I've never done anything with frequency but I've made several sound-activated lighting effects.)
There are two ways of doing it:
The [u]MSGEQ7 chip[/u] has frequency filtering built-in and AC-to-DC built-in but it only gives you 7 frequency bands.
In software you can use [u]FFT[/u] or FHT to get many frequency bands. FFT and FHT are software intensive. There are libraries so you don't have to write the code yourself.
The Arduino ADC can't read the negative half of an AC audio waveform so with FFT/FHT you'll have to bias the input (2 resistors and a capacitor).
In either case, if you want to use a microphone you'll need a preamp. Or, you can get a [u]microphone board[/u] with a mic, preamp, and biased output. (That particular one doesn't have a gain control.)
- Measure the volume of each band
Yes, that's what spectrum analysis is. 
- Measure the peak volume of the overall sample
The "true peak" is a little tricky because frequency requires time and a single (or single sample) peak doesn't have any frequency information. Also, FFT/FHT on the Arduino don't "catch everything" because they take a short sample, and then "pause" to analyze it. The MSGEQ7 also has some "delay" or "smoothing" too. But, you should be able to get some useful quick readings that resemble peaks.
...8. Should last about 10ms before taking new sample and restarting.
Your software may not run that fast... But in my experience, 100ms is about as fast as you want to go for a visual effect, unless you want the perception of "dimming/brightness".
- Determine average volume of the overall sample
- Signal the LED/light source for a specific band to turn on if it's band average volume is above the
overall sample average volume (so it only activates the loudest few bands in the sample)
- Adjust brightness of each band based on how loud it is compared to the others that are active (if the band volume is 70% of peak, turn pin High for 7ms then Low 3ms, etc)
Once you get the data, that's fairly straightforward.
I do something similar so my lighting effects adjust automatically to volume changes - For all of my effects, I take a "sample" of the "loudness" once per second and I store it in a 20-second circular buffer. Then depending on the effect, I take the average and/or the peak from that buffer (array) to use as a reference. The way I'm doing it, I don't have a "true peak" I just have "a peak" but it works to set the "top reference" of my "VU meter" effect. My [u]World's Simplest Lighting Effect[/u] might give you some ideas.
- A spectrum analyzer is a measurement instrument or measurement software. You are not doing precise measurement/analysis so you're actually building a spectrum analyzer effect.