# Trying to understand the gold-rabiner pitch detection algorithm

I am currently in the process of taking on implementing the Gold-Rabiner pitch tracking algorithm, and I came across what seemed like a good explanation of it in David Meehan's "A Code Excited Linear Predictive Coder".

However, I am a bit confused with M5, which states: "the magnitude of the difference in amplitude between the current valley amplitude and the previous peak amplitude"-- Where M3 is depicted as the "previous peak", yet the arrow is going up to where M1 is, which is the "current peak"-- so either the instruction is wrong or the diagram is wrong-- or I am misunderstanding this entirely.

Also, a side question is, because this is talking about magnitude, this means that the arrow pointing downward at M1, is pointing at 0, correct?

• m1, m2 and m3 are all magnitudes that are calculated at a current peak. m4, m5 and m6 are all magnitudes that are calculated at the current valley (or what most people would call a negative peak). Only m1 and m4 are shown at the correct times in the diagram. m1 is the previous peak to m4, while m3 is the previous peak to m1. – user18171 Nov 8 '15 at 2:55
• Magnitudes are all absolute values (positive scalars). m1 and m4 are the only magnitudes referenced to 0. The others are referenced to other peaks / valleys as described. – user18171 Nov 8 '15 at 2:56
• this is admittedly a non-answer. hadn't seen this question until now. anyway i would not recommend any of these old threshold-crossing (of which zero-crossing is a subset) algs for robust pitch detection. i would begin with autocorrelation or AMDF or ASDF data and then the brains are at picking (and sticking with) the right peak indicating high correlation. – robert bristow-johnson Nov 8 '15 at 6:35