determine the strength of the detected pitch?

Mar 15, 2012 at 9:32 PM

Is there some way to determine how strong a detected pitch value is? I expected to see something like a "DBofDetectedPitch" in the PitchRecord structure.

Coordinator
Mar 24, 2012 at 4:47 PM

Yes I did not really think of that (or that it could be a useful value to have). For my own purposes, I just needed to know whether there was a detectable pitch or not. I don't think it would be too difficult to add, since there is already an internal threshold that needs to be reached before it is considered to be a valid pitch. However it might be difficult to map this internal level to an accurate db value since the level is calculated from a normalized version of the waveform, and from ratios as opposed to an actual level.

Out of interest, what would you use this value for?

Mar 25, 2012 at 3:11 AM

Well, I want to find all the pitches in a given time slice that are above some threshold. I'm not sure what that threshold should be. I was thinking if this information was reported I could use some kind of elbow algorithm to determine the appropriate value.

Coordinator
Mar 25, 2012 at 5:38 PM

I will be surprised if you can get this algorithm to work well with a waveform that contains multiple frequencies (that are not the same note at different octaves). The auto-correlation algorithm works by sliding a window of samples over a previous window and finding the point where if subtracted, cancels each other out. If you have multiple frequencies that are not octaves from each other, it will never cancel out.

Unfortunately I think you would need to use a different algorithm based on what you are trying to do.