Wrote a frequency domain pitch detection algorithm in C and now I'm trying to estimate the fundamental frequency. I have the maximum magnitude bin from the Fourier Transform, but that can also be an harmonic not necessary F0. I read somewhere that it is possible to estimate F0 using cepstral analysis. So, here are the steps I follow:
- Take time domain buffer x, make a windowed copy w.
- FTTw = FFT(w)
- a = Log of square magnitude of FTTw
- FTTa = FFT(a)
- b = square magnitude of FTTa
- Estimate fundamental using b
I'm having trouble with the last step (6). The magnitudes in b are pretty high and I'm not sure I fully understand what they represent (quefrencies?) and most of all how can I estimate the fundamental based on them.
Any advice is welcome! Thanks!