float BPMDetect::getBpm() { float peakPos; PeakFinder peakFinder; // find peak position peakPos = peakFinder.detectPeak(xcorr, windowStart, windowLen); assert(decimateBy != 0); if (peakPos < 1e-6) return 0.0; // detection failed. // calculate BPM return 60.0f * (((float)sampleRate / (float)decimateBy) / peakPos); }
float BPMDetect::getBpm() { double peakPos; double coeff; PeakFinder peakFinder; coeff = 60.0 * ((double)sampleRate / (double)decimateBy); // save bpm debug analysis data if debug data enabled _SaveDebugData(xcorr, windowStart, windowLen, coeff); // remove bias from xcorr data removeBias(); // find peak position peakPos = peakFinder.detectPeak(xcorr, windowStart, windowLen); assert(decimateBy != 0); if (peakPos < 1e-9) return 0.0; // detection failed. // calculate BPM return (float) (coeff / peakPos); }