It seems that this thread has split into a couple of somewhat disparate conversations:
1) Getting the audio library 4096 FFT to work, which I think has been established?
2) Analyzing/displaying partial frequency regions of an FFT. (See #44)
Let's discuss the latter:
As you are aware, spectral information is normally displayed in "Bode" form where
- Magnitude is displayed on a log/log scale (x is log of frequency - but usually labeled in Hz, y is log of magnitude usually in dB.
- Phase is displayed on log/linear form, where again frequency is in log form, but y (phase is shown on a linear scale in units of degrees or radians)
BUT this doesn't mean you need some sort of special FFT! Engineering/scientific software packages, such as MATLAB, simply compute their displays using a normal linear FFT analysis, then take the necessary logs of the bin frequencies and magnitude and
display the data in Bode form. Why can't that be done here?
Note: You can't go down to dc (0 Hz) because log(0) = -infinity, so you need to choose a suitable minimum frequency (bin) for your display.
I note the displays shown in the thread go from 20 Hz to 20 kHz - ie 3 decades of frequency. Since the FFT bin frequencies are n*f_sample/Nfft, to get down to 20 Hz for n = 1 we need Nfft > 44100/20 or >2205 (you could probably get away with 2048, where bin 1 corresponds to 21.5 Hz). Can you use decimation in this case? No - because you need to keep the analysis Nyquist frequency above 20 kHz (the highest in the display). So, unfortunately, you seem to be stuck with a large FFT if you want to duplicate this display...
The computational "cost" of an FFT is roughly proportional to Nfft*log_2(Nfft) so you might expect that the 2048 FFT will take about 46% of the time of a 4096 FFT...
BUT, if you are happy to make 50 Hz your minimum frequency, then a length 1024 FFT will do the trick, bin 1 is now 43 Hz, and you might expect the FFT to be 5 times faster than the 4096 one. Now we're talking