reducing MIPS in detecting tones Currently our software is detecting tones using FFT and checking if there is only a single peak in frequency spectrum. Our software needs to know what kind of input it is before taking action. So we differentiate the case when tone is fed as input or if the input is music.

However we are trying to reduce the MIPS and wondering if there is any other better ways to detect tones.

I found correlation with previous data can be used but again don't know the right method to do it. Is there any better method?
Assuming that the tones are sufficiently sinusoidal, here's a possible scheme, with a bandpass filter being controlled by a frequency estimator:



If the tunable bandpass filter's output is at about the same power as the input signal, then the input consists mainly of a sinusoidal tone. It is perfectly fine if the frequency estimator is a simple one that only gives a meaningful output for the tone to be detected.