]> git.sesse.net Git - pitch/blobdiff - pitchdetector.cpp
Fix missing #include of string.h.
[pitch] / pitchdetector.cpp
index 02c7035754e2bf9b4940ec4823e951345f900069..3bf907a66be76ecb59e535f5919f1f4c240754ca 100644 (file)
@@ -107,7 +107,8 @@ std::pair<double, double> PitchDetector::find_peak(double *in, unsigned num_samp
        // see if we might have hit an overtone (set a limit of 10dB)
        for (unsigned i = 6; i >= 1; --i) {
                if (best_bin != best_bin / i &&
-                   20.0 * log10(in[best_bin] / in[best_bin / i]) < 10.0f) {
+                   20.0 * log10(in[best_bin] / in[best_bin / i]) < 10.0f &&
+                   best_bin / i >= 5) {
 #if 0
                        printf("Overtone of degree %u!\n", i);
 #endif
@@ -251,7 +252,7 @@ std::pair<double, double> PitchDetector::interpolate_peak(double ym1, double y0,
        double c = y0;
        
        double xmax = (ym1 - y1) / (2.0 * (y1 + ym1 - 2.0 * y0));
-       double ymax = 20.0 * (a * xmax * xmax + b * xmax + c) - 80.0;
+       double ymax = 20.0 * (a * xmax * xmax + b * xmax + c) - 70.0;
 
        return std::make_pair(xmax, ymax);
 }