# Harmonic estimation from a single note

I have a recording of a single note played several times on a violin. I'm working with Matlab to estimate the amplitude of the first N harmonics. I already know which note is played but there can be fluctuations in frequency and noise (very little, actually). Can you suggest me the more robust method in this kind of situation? At the moment I am windowing the signal and using a peak detection algorithm on the FFT of each frame in order to find the amplitude of the harmonics. Is there anything better?

• You can also try to compute the autocorrelation of the signal und looking for more than only one local maximum in the ACF. Apr 21 '15 at 10:24
• In music processing FFT is not the best way to find the first harmonic frequency. This report discusses exactly your problem musingpaw.com/2012/04/… Nov 17 '15 at 22:01
• Francesco, did you ever get this question answered to your satisfaction? i just now realized you're the same person asking about AMDF pitch detection. Apr 16 '16 at 4:39
• I chose to go with ASDF, so I think this question can be considered answered Apr 16 '16 at 7:57
• so now you got the pitch $\omega_0$ and you can track it. you still need to build either a heterodyne oscillator (essentially multiply your waveform $x[n]$ by $e^{jk\omega_0 n}$ and LPF to get the component at $k\omega_0$, or you need to resample each cycle (with a period of $\frac{2 \pi}{\omega_0}$ to an $N$ sample wavetable and perform an $N$-point FFT on it (the $k$th harmonic will be in $X[k]$). that's how you can get the amplitude and phase of each harmonic. Apr 16 '16 at 9:33