% Talkie library % Copyright 2011 Peter Knight % This code is released under GPLv2 license. % % Home in on best fit pitch function [pitch,score] = pitchRefine(w,pitchGuess,pitchRange,sampleRate) score = 0; phase = (1:length(w))*2*pi/sampleRate; for (newGuess = pitchGuess-pitchRange:pitchRange/10:pitchGuess+pitchRange) signal = exp(i*(newGuess*phase))'; pitchScore = abs(mean(w .* signal)); if (pitchScore > score) score = pitchScore; pitch = newGuess; end end