Shouldn't this be "faster tone detection algorithm".
I don't see how to perform a convolution with this algorithm, which I would be able to do if it was an FFT.
There are many algorithms for FFT that are faster, e.g. the split radix FFT, Gentleman and Sande's approach, the Matrix Fourier Algorithm and scores of variations on a theme. The article doesn't make clear whether this is one of them.
Indeed, a faster multi-frequency fourier transform would be a huge deal. It would speed up everything that involves multiplying large numbers (encryption, but also lots of biology and other scientific problems), due to FFT multiplication.
Not explicitly stated in the article : The reason this is so fast is that you're only detecting a single frequency. If you wanted to detect a few (M, say), you'd have to keep updating M sets of Qs. While M<<N this is really efficient (and each one looks like a notch filter, or something).
But for larger M, it's better to do the FFT, since that gives you back O(N) frequencies in O(NlogN) time - because of the tricks it can do with N if it's a power of 2.
Very interesting : I was actually thinking about redoing the spectrometer music visualization for MythTV to be use 'piano keyboard' pitches (rather than the FFT that they're using at the moment). And I came to the conclusion that some kind of recurrence (short) resonant filter would do the trick (with 88 different copies) - but never got further than that, since I had limited imagination about what algorithms to search for. Unfortunately, I've got overwhelmed with other projects now...
Yes, the discrete Fourier transform (DFT) detects N frequencies in parallel, where N is the block size, and you can disregard the uninteresting frequencies. The fast Fourier transform (FFT) is an efficient algorithm that computes the DFT. For detecting M frequencies where M << N, the Goertzel algorithm requires less computation than the FFT. Also, the Goertzel algorithm allows targeting more exact frequencies regardless of the sampling rate (Fs), while the FFT's bins have a fixed spacing of ±Fs/N.
As with everything, there are trade-offs associated with these three options.
I don't see how to perform a convolution with this algorithm, which I would be able to do if it was an FFT.
There are many algorithms for FFT that are faster, e.g. the split radix FFT, Gentleman and Sande's approach, the Matrix Fourier Algorithm and scores of variations on a theme. The article doesn't make clear whether this is one of them.