Following acreil's links I found this wonderful thesis by Philip McLeod, discussing pitch tracking methods and proposing a thoroughly tested new method:
http://miracle.otago.ac.nz/tartini/papers/Philip_McLeod_PhD.pdf
As it turns out, autocorrelation only gives good result when the analyzed segment is an integer multiple of the period. So you have to know the period length to find the period length! A chicken and egg problem.
Besides reading patent applications and theses, I'm also using Pd to gain insight and find a practical solution. It seems to me that correlation could be combined with the old method of finding zero crossings in the following way:
1. filter DC from the signal
2. filter high frequencies from the signal, to eliminate redundant zero crossings
3. only let through zero cross detections when the signal level is above a threshold
4. use the zero cross indexes to do correlation tests on appropriate signal segments
This would make for an efficient and hopefully robust period tracking method.
The zero cross detection is done in a Pd patch, see attached periodtrack01.pd. This patch shows plots and gives a good indication how many zero crossings are found for a period, depending on the signal type. Amongst other things, I tested this with my voice. On average there are only three zero crossings per period in my voice. Using correlation, it could be checked which segment length is the right one of the limited possibilities.
The correlations can not be done in a Pd patch. This really requires intra-block conditional checks and manipulations, for which an external must be written.
I'd be happy when you can check the patch [periodtrack01] with your voice or monophonic instrument and report if the zero crossing indicators are OK (not too many, not too little) for periodic segments of your sound.
Katja
http://www.pdpatchrepo.info/hurleur/periodtrack01.pd