DSPRelated.com
Forums

Getting better FFT resolution in lowend by downsampling?

Started by jungledmnc January 4, 2011
Hi,

just a little idea that came in my seriously distorted mind :), hopefully
it's not a complete nonsense.

When analysing audio signals, we like log domain, so Q transform, but AFAIK
it hasn't been implemented fast enough yet, right? So I thought we can just
use FFT and then use another FFT specifically for low-frequencies.
Example:

SR 44kHz, nyquist 22kHz, FFT 8192, resolution 22000/4096=about 6Hz. Not
bad, but for bass spectrum say up to 200Hz, it's not really good.
So the idea is to use a LP at say 500Hz, downsample it to 1kHz, zero-pad it
to 8192 samples and FFT again. This leads to 500/8192=0.6Hz resolution.

Finally convert both FFTs into log domain, let's say I'm interested in
magnitudes only, say 1024 log bins from 20Hz to 20kHz. Bins below 200Hz use
completely from the secondary FFT, bins above 500Hz completely from primary
FFT, 200-500Hz crossfade or something.

Does it make sense?
jungledmnc
On 1/4/2011 6:51 AM, jungledmnc wrote:
> Hi, > > just a little idea that came in my seriously distorted mind :), hopefully > it's not a complete nonsense. > > When analysing audio signals, we like log domain, so Q transform, but AFAIK > it hasn't been implemented fast enough yet, right? So I thought we can just > use FFT and then use another FFT specifically for low-frequencies. > Example: > > SR 44kHz, nyquist 22kHz, FFT 8192, resolution 22000/4096=about 6Hz. Not > bad, but for bass spectrum say up to 200Hz, it's not really good. > So the idea is to use a LP at say 500Hz, downsample it to 1kHz, zero-pad it > to 8192 samples and FFT again. This leads to 500/8192=0.6Hz resolution. > > Finally convert both FFTs into log domain, let's say I'm interested in > magnitudes only, say 1024 log bins from 20Hz to 20kHz. Bins below 200Hz use > completely from the secondary FFT, bins above 500Hz completely from primary > FFT, 200-500Hz crossfade or something. > > Does it make sense? > jungledmnc
Other than: - a 500Hz cutoff filter, depending on what cutoff means, may be rather inadequate. So perhaps increase the sample rate? See Tim Wescott's paper on sampling. - the time span for 6Hz resolution is 0.167 seconds; the time span for 0.6Hz is 1.67 seconds. So, the two don't match. When you combine the measures does that matter to you? Seems like it might. Fred
On Jan 4, 6:51 am, "jungledmnc" <jungledmnc@n_o_s_p_a_m.gmail.com>
wrote:
> Hi, > > just a little idea that came in my seriously distorted mind :), hopefully > it's not a complete nonsense. > > When analysing audio signals, we like log domain, so Q transform, but AFAIK > it hasn't been implemented fast enough yet, right? So I thought we can just > use FFT and then use another FFT specifically for low-frequencies. > ...
Since the 1970s military wideband passive sonar processors have used a stepwise linear constant Q approximation. In each octave of processing, a linear spaced fft would produce a few hundred frequency bins in the range 0.2 to 0.4 of Fs. The channels could then be lowpass filtered and desampled by two to generate the next lower octave 0.0 to 0.4 Fs band from the higher octave 0.0 to 0.2 Fs band. The lowpass filter transition band would be 0.2 to 0.3 Fs (of the higher octave). The process could be repeated for multiple octaves. After the last octave, the remaining lowpass band would be processed with a linear spaced fft. Using multiple ffts to provide multiple resolutions has been around in systems for a long time. It was common to use Fs = 2.56 times the top octave band edge to allow practical anti-aliasing filter realizations. Both time and frequency domain versions have been implemented. These frequency choices allow the use for display of, for example, 400 bins of a 512 , 1024 or 2048 point fft (depending on whether the implementation was time or frequency domain and whether the fft was real or complex). Dale B. Dalrymple
>- a 500Hz cutoff filter, depending on what cutoff means, may be rather >inadequate. So perhaps increase the sample rate? See Tim Wescott's >paper on sampling.
I'm not sure if I understand. The thing is that with 8192 fft we get quite accurate (at least for audio) results allover the spectrum above say 500Hz (not sure about precise value, I just guessed). Below this value the accuracy is just too low, so I was looking for a way to compensate for this.
>- the time span for 6Hz resolution is 0.167 seconds; the time span for >0.6Hz is 1.67 seconds. So, the two don't match. When you combine the >measures does that matter to you? Seems like it might.
But the main idea was to low-pass, downsample, and then ZEROPAD it. So it uses the same time-interval. My main concern was if there is actually enough information in the low-pass filtered block. Anyway Dale you said it has been around for a while, so it should work, right? Thanks! jungledmnc
On Jan 4, 4:06&#4294967295;pm, "jungledmnc" <jungledmnc@n_o_s_p_a_m.gmail.com>
wrote:
...
> But the main idea was to low-pass, downsample, and then ZEROPAD it. So it > uses the same time-interval. My main concern was if there is actually > enough information in the low-pass filtered block.
If you want more resolution, you need more samples. To use the same fft size at a lower octave there must have been twice as many samples at the next higher octave (before the desample by two). Yes, there are different time periods involved. Higher resolution bins from the same input data stream will have fewer independent samples and a lower update rate. That's what you ask for by specifying constant Q. Zero- padding is not used, it does not alter resolution, the sample frequency and data window size do. To keep display update times constant across octaves, some systems use more and more overlap in the lower octaves. This can make the low frequency/high resolution bins look smeared (because they have been).
> > Anyway Dale you said it has been around for a while, so it should work, > right? >
On Jan 4, 4:06&#4294967295;pm, "jungledmnc" <jungledmnc@n_o_s_p_a_m.gmail.com>
wrote:
>... > > Anyway Dale you said it has been around for a while, so it should work, > right? >
The US and allied navies have used this processing for towed array and sonobuoy data analysis in submarines, ships, aircraft and laboratories since the 70s and still do. Dale B. Dalrymple