I’m currently trying to build a spectroscope based on the “Tutorial: Visualise the frequencies of a signal in real time”.
Technicaly speaking everything is working fine, but as we all know, FFT always has the tradeoff of time / resolution.
With the fftSize of 2048 (used in the tutorial) and my desired SR of 48khz I get ~23.5hz per bin, which just isn’t enough for my purpose in the lower end.
Now I’m trying to come up with a good solution to get a better resolution in the lower end without introducing too much delay / huge fft-sizes (if that’s even mathematical possible?).
My first thought was to make a second FFT just for the lower end where I do lowpass filter -> downsampling so I get a higher resolution per bin. But From my understanding that would introduce quite a big delay, since I have to “wait” to collect enough samples at the lower sample rate to perform the FFT.
(for example downsample to 6khz with fft-size 2048 I get ~3hz per bin which would be fine, but 2048 samples at 6khz are a third of a second before my fft-buffer is filled).
Another thought was to avoid FFT in the lower end and maybe use bandpass-filters and get the magnitude for each one, but then I would need some real steep filters to really separate the bands,wouldn’t I?
So long story short, has anyone any experience / ideas how to get a good resolution in the lower end of the spectrum without introducing too much delay / complicating things for the rest of the spectrum?
Maybe there are other techniques (overlapping etc.) around which I’m not aware might help me in this case?
Many thanks in advance