# HG changeset patch # User matthiasm # Date 1391553086 0 # Node ID e5ccda2c06d95843a1b71a240f73a3616b034bdb # Parent ae21806fe84bd4b00f314037f1bd8d9d199d9444 fixed some issues (in a very slightly hacky way) -- need to revisit. diff -r ae21806fe84b -r e5ccda2c06d9 LocalCandidatePYIN.cpp --- a/LocalCandidatePYIN.cpp Thu Jan 30 18:25:28 2014 +0000 +++ b/LocalCandidatePYIN.cpp Tue Feb 04 22:31:26 2014 +0000 @@ -339,17 +339,26 @@ vector freqSum = vector(m_nCandidate); vector freqNumber = vector(m_nCandidate); vector freqMean = vector(m_nCandidate); - + for (size_t iCandidate = 0; iCandidate < m_nCandidate; ++iCandidate) { pitchTracks.push_back(vector(nFrame)); vector mpOut = mp.process(m_pitchProb[iCandidate]); + float prevFreq = 0; for (size_t iFrame = 0; iFrame < nFrame; ++iFrame) { if (mpOut[iFrame] > 0) { + if (prevFreq>0 && fabs(log2(mpOut[iFrame]/prevFreq)) > 0.1) { + for (size_t jFrame = iFrame; jFrame != -1; --jFrame) { + // hack: setting all freqs to 0 -- will be eliminated later + pitchTracks[iCandidate][jFrame] = 0; + } + break; + } pitchTracks[iCandidate][iFrame] = mpOut[iFrame]; freqSum[iCandidate] += mpOut[iFrame]; freqNumber[iCandidate]++; + prevFreq = mpOut[iFrame]; } } freqMean[iCandidate] = freqSum[iCandidate]*1.0/freqNumber[iCandidate];