How to increase accuracy

Apr 26, 2014 at 5:21 PM
Edited Apr 26, 2014 at 5:22 PM
Although the code works for the generated sin wave, that is not very accurate for real sounds with noises. I tested the code for recorded sound and the error was in range of 10 cents.
Is there any way to increase the accuracy?
I've always wonder which method tuners use? Auto-correaltion-based or FFT-based?
Apr 26, 2014 at 5:55 PM
Unfortunately there isn't a simple way to increase the accuracy of the pitch tracker. I found it works fine with some types of sounds but fails with other types, like a tuner for an acoustic or bass guitar. I have since abandoned this particular approach and have been working on a completely different approach that has given me much better results, even able to deal with missing fundamentals and much noisier environments (like an acoustic guitar with many body resonances etc).

Basically, my new approach uses FFT to determine peaks, then use some fancy algorithms to find musical patterns in the peaks and come up with the most likely pitch. Then it uses high-Q filters to zoom in on the actual frequency and then does a simple zero crossing detection to calculate the actual pitch very accurately.

However this code is far from done so I'm not sure if/when I will post that.

Back to this particular pitch tracker... You can try to play with some of the internal constants of to see if you can get better results given a certain type of source material. But I doubt you will have too much luck as I have tried for a long time to come up with good values to handle the broadest range of sounds.