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 44100Hz
.
With window of 1024
samples I get frequency bin resolution of 22500Hz/512=43Hz
.
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:
Method1:
- Divide signal into frequency bands with bandpassfilters (for example
0-11.25Hz
and11.25-22.5Hz
). - 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.
Method2:
- 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.