changeset 6:a9bf0cfe9383

* Make tempo tracker return locked tempo as well as beats
author cannam
date Fri, 08 Dec 2006 18:05:36 +0000
parents 1e6d89e4f441
children 85a9e268a8c4
files dsp/tempotracking/TempoTrack.cpp dsp/tempotracking/TempoTrack.h
diffstat 2 files changed, 17 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/dsp/tempotracking/TempoTrack.cpp	Thu Nov 30 14:52:53 2006 +0000
+++ b/dsp/tempotracking/TempoTrack.cpp	Fri Dec 08 18:05:36 2006 +0000
@@ -13,6 +13,8 @@
 #include "dsp/maths/MathAliases.h"
 #include "dsp/maths/MathUtilities.h"
 
+#include <iostream>
+
 
 //////////////////////////////////////////////////////////////////////
 // Construction/Destruction
@@ -166,7 +168,12 @@
 	    maxIndexRCF = i;
 	}
     }
-	
+
+    double locked = 5168.f / maxIndexRCF;
+    if (locked >= 30 && locked <= 180) {
+        m_lockedTempo = locked;
+    }
+
     if( tsig == 0 )
 	tsig = 4;
 
@@ -634,10 +641,13 @@
 
 
 
-vector<int> TempoTrack::process( vector <double> DF )
+vector<int> TempoTrack::process( vector <double> DF,
+                                 vector <double> *tempoReturn )
 {
     m_dataLength = DF.size();
 	
+    m_lockedTempo = 0.0;
+
     double	period = 0.0;
     int stepFlag = 0;
     int constFlag = 0;
@@ -758,6 +768,8 @@
 
 	FSP += (m_lagLength);
 
+        if (tempoReturn) tempoReturn->push_back(m_lockedTempo);
+
 	TTLoopIndex++;
     }
 
--- a/dsp/tempotracking/TempoTrack.h	Thu Nov 30 14:52:53 2006 +0000
+++ b/dsp/tempotracking/TempoTrack.h	Fri Dec 08 18:05:36 2006 +0000
@@ -47,7 +47,7 @@
     TempoTrack( TTParams Params );
     virtual ~TempoTrack();
 
-    vector<int> process( vector <double> DF );
+    vector<int> process( vector <double> DF, vector <double> *tempoReturn = 0);
     vector<int> process( double* DF, unsigned int length );
 
 	
@@ -74,6 +74,8 @@
 
     vector<int>	 m_beats; // Vector of detected beats
 
+    double m_lockedTempo;
+
     double* m_tempoScratch;
 	
     // Processing Buffers