processing sound with arduino and no computer

Hi everyone, this is my first post, and i'm kinda throwing myself in at the deep end! I would like to build an led system that can react to sound (different pitches in a song say), similar to a graphic equaliser display or the visualisation on windows media player, you know the kinda thing. But I just realised, that this might not be possible to do without using processing or max/msp AND a computer. Does anyone know if it is possible to achieve such a system without it needing to be connected to a computer? Is it possible to load max/msp or processing patches onto arduino or another chip? or is it possible to do it all with arduino and wiring?

thanks for any help and suggestions

I think that isn't enough processing power to do an FFT at anything approaching real time using an Arduino. I think the best you could get is if you built several band pass filters using op-amps and Rs and Cs. Then feed the output of each filter through a peak detector and then into an analogue input. I have done this quite a few times many years ago when doing it in software was not an option. It involves quite a bit of hardware.

Wouldn't it make more sense to do it with analog chips like those cheap kits that have been around for 20 years?

And jsut to be clear, Arduino is a computer. Making these artificial distictions just makes it harder to learn the technology.

Sure, it is doeable, you sould be able to approach 10000 hz which is a good chunk of the audio spectrum (more than an octive above the highest note on a piano), though it may take some advanced techniques. Basically do analogreads as fast as you can and keep track of the time between peaks (when an analog read goes from increasing to decreasing). Then figure out what you want to do at different frequencies.

I should note there are a ton of other approaches as well, like if you can condition the sound signal to look a little more binary to the arduino, you can have the frequency be interrupt driven and capture at much higher frequencies.

thanks for your responses guys! @ Grumpy_Mike, yeah I had a similar thought of using a few mics with different frequency responses, to cut down on the processing of sound frequencies. I guess it doesn't have to be too accurate, just as long as it can detect maybe 3, a good low a mid and high (audible to human ear range).

@ Oracle, what cheep kits are those? sounds interesting. yes i'm aware arduino is a computer. I meant that I would like this system to run without the aid of being hooked up to a computer running a max patch or processing program etc... I thought I made that clear enough.

@ dcb that idea seems quite simple and do-able. Are you suggesting that when an analog read goes from increasing to decreasing this is the change of frequency, and to trigger things between these times? closer to the peak would be one frequency and closer to the next peak would be another? Or suggesting to take time readings of the peaks and their levels and use the different level information to trigger frequency display. Could do with a bit more info on that one.

thanks very much for your help guys, I'd like to look further into all your suggestion. any further info, articles, hardware and diagrams suggestions would be very useful. thanks again

I think that isn't enough processing power to do an FFT at anything approaching real time using an Arduino...

I just came across this project which does FFT on an ATmega8! http://elm-chan.org/works/rsm/report_e.html

Its in assembler and the hardware is for rf frequencies not audio so not directlu usable here, but it looks like with some considerable effort it is possible to do.