I'd like to use STFT for multipitch analysis. I realise detecting the partials existing in the signal is just the beginning. Still I have problem with it.
Let's say I have signal sampled with 'CD' frequency
With window of
1024 samples I get frequency bin resolution of
This is enough only to discern high piano notes like:
C5 = 523.251Hz and
C#5 = 554.365.
I used to think
1024 is quite a large window.
But maybe it isn't and normally larger windows are used for detecting partials?
Can frequency resolution be increased with some other method than increasing window size, which worsens time resolution? I thought of two methods:
- Divide signal into frequency bands with bandpassfilters (for example
- Downsample higher bands so that original high frequencies will be now low frequencies
(so do it for second band
11.25-22.5Hz -> 0Hz-22.5Hz) - not sure this is possible.
- Concat resulting bins sets with adjusted labels.
- Use series of lowpass filters with increasing limit.
- Perform FFT on increasing frequency ranges.
- For each frequency use best possible resolution (bins from the first FFT in which this frequency was included).
- This will cause low frequencies to have better resolution but I think this is ok because for higher notes the frequency difference is grater.
I will be grateful any remarks on this issues.
I also read here: How do window size, sample rate influence FFT pitch estimation? about method of improving peak picking results. I think will try to use it.