Pitch detection algorithm
Appearance
An algorithm that attempts to detect the pitch (inverse of frequency) of a periodic signal (for example digitized sound).
Below is an example implementation in pascal language:
(* XAMDF pitch detection algorithm *) const Sample_Size = 128; Half_Size = Sample_Size div 2; Sample_Rate = 5000; var Samples : array [1..Sample_Size] of byte; function Detect_Frequency:real; var Period, Time : integer; ErrPer1, ErrPerX : longint; begin ErrPer1:=0; for Time:=1 to Half_Size do ErrPer1:=ErrPer1+abs(Samples[Time]-Samples[Time+1]); for Period:=2 to Half_Size do begin ErrPerX:=0; for Time:=1 to Half_Size do ErrPerX:=ErrPerX+abs(Samples[Time]-Samples[Time+Period]); if (ErrPerX < ErrPer1) then begin Detect_Frequency:=Sample_Rate/(Period+(ErrPerX/ErrPer1)); Exit; end; end; Detect_Frequency:=0; end;