To receive quite good results with FFT I always make window (Hann or something similar) and overlapping. By overlapping I mean second half of one block of data is overlapped with first half of next block and so on. But recently my friend told me that the best result I would receive if I perform FFT on each sample. I mean the scenario that I have block from sample 0 to 4095 and I perform on it FFT. And then I should perform next FFT on samples from 1 to 4096, and then from 2 to 4097 and so on. For me it sounds radiculous from the CPU point of view. But my friend told me that all great and famous FFT analysers like Voxengo SPAN or Fabfilter Pro-Q3 works like that. I can’t believe that. So I would like to ask what do you think about such solution. Is it worth to write and test code like that?
Second question is about juce::AbstractFifo. Is there any nice solution to get overlapped windows of audio blocks with Juce? The first idea in my mind is to use two instances of AbstractFifo and using them on overlapped blocks. But it looks like it is not elegant solution. So I wonder if is there any ready to use solution in Juce for collecting and using overlapped audio blocks?
For 1) I raise you another question: you sure your friend isn’t joking? It of course depends on the application and what you want to achieve, but I very much doubt that those analysers have a 1 sample hop-size.
Hello Daniel! Thanks for your reply.
Yes at first I also thought my friend was joking but he claimed he heard about that from someone much more experienced in that case. So I it looks like I need to make more research.
For the second question: thanks for your code. I will research it and if I use it I will tell you.
1 sample hopsize would mean that you would get 48’000 spectra per second (@ 48kHz). So just for displaying a spectrogram that’s nuts also the time resolution wouldn’t be improved as there’s still Heisenberg having the last word. The results will be just an interpolated version of those with a higher hopsize.