changeset 5:383c5b497f4a track

Vertical filtering
author Chris Cannam
date Tue, 26 Jun 2012 15:30:12 +0100
parents c74846514b09
children 291c75f6e837
files CepstrumPitchTracker.cpp CepstrumPitchTracker.h
diffstat 2 files changed, 14 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/CepstrumPitchTracker.cpp	Mon Jun 25 16:35:38 2012 +0100
+++ b/CepstrumPitchTracker.cpp	Tue Jun 26 15:30:12 2012 +0100
@@ -38,7 +38,8 @@
     m_blockSize(1024),
     m_fmin(50),
     m_fmax(1000),
-    m_histlen(3),
+    m_histlen(1),
+    m_vflen(3),
     m_binFrom(0),
     m_binTo(0),
     m_bins(0),
@@ -246,7 +247,17 @@
     }
 
     for (int i = 0; i < m_bins; ++i) {
-        m_history[hix][i] = cep[i + m_binFrom];
+        double v = 0;
+        int n = 0;
+        // average according to the vertical filter length
+        for (int j = -m_vflen/2; j <= m_vflen/2; ++j) {
+            int ix = i + m_binFrom + j;
+            if (ix >= 0 && ix < m_blockSize) {
+                v += cep[ix];
+                ++n;
+            }
+        }
+        m_history[hix][i] = v / n;
     }
 
     for (int i = 0; i < m_bins; ++i) {
--- a/CepstrumPitchTracker.h	Mon Jun 25 16:35:38 2012 +0100
+++ b/CepstrumPitchTracker.h	Tue Jun 26 15:30:12 2012 +0100
@@ -69,6 +69,7 @@
     float m_fmin;
     float m_fmax;
     int m_histlen;
+    int m_vflen;
 
     int m_binFrom;
     int m_binTo;