changeset 32:83e5bd7fb921

Rate calculation into PitchFilterbank class
author Chris Cannam
date Wed, 30 Sep 2015 14:18:41 +0100
parents 9e34c7d5bd1f
children e5d5a7098a32
files src/PitchFilterbank.cpp src/PitchFilterbank.h src/TipicVampPlugin.cpp
diffstat 3 files changed, 11 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/PitchFilterbank.cpp	Wed Sep 30 13:45:52 2015 +0100
+++ b/src/PitchFilterbank.cpp	Wed Sep 30 14:18:41 2015 +0100
@@ -120,8 +120,7 @@
     
     WindowPosition windowPosition(int block, int i) {
 
-	//!!! todo make this known through api. these values are at 22050Hz
-	uint64_t hop = 2205;
+	int hop = 2205;
 
 	double rate = filterRate(i);
 	double topRate = 22050.0;
@@ -129,7 +128,7 @@
 	double tuningRatio = m_sampleRate / double(m_effectiveInputRate);
 	double sizeRatio = tuningRatio / rateRatio;
 
-	uint64_t start(round((hop * block) * sizeRatio));
+	uint64_t start(round((hop * uint64_t(block)) * sizeRatio));
 	int size(round((hop * 2) * sizeRatio));
 
 	return { start, size, rateRatio };
@@ -322,4 +321,9 @@
     maxMidiPitch = 108;
 }
 
+double
+PitchFilterbank::getOutputSampleRate()
+{
+    return 22050.0 / 2205.0;
+}
 
--- a/src/PitchFilterbank.h	Wed Sep 30 13:45:52 2015 +0100
+++ b/src/PitchFilterbank.h	Wed Sep 30 14:18:41 2015 +0100
@@ -18,6 +18,8 @@
     RealBlock getRemainingOutput();
 
     static void getPitchRange(int &minMidiPitch, int &maxMidiPitch);
+
+    static double getOutputSampleRate();
     
 private:
     class D;
--- a/src/TipicVampPlugin.cpp	Wed Sep 30 13:45:52 2015 +0100
+++ b/src/TipicVampPlugin.cpp	Wed Sep 30 14:18:41 2015 +0100
@@ -204,7 +204,7 @@
     d.hasKnownExtents = false;
     d.isQuantized = false;
     d.sampleType = OutputDescriptor::FixedSampleRate;
-    d.sampleRate = 22050 / 2205; //!!! get block size & hop from filterbank
+    d.sampleRate = PitchFilterbank::getOutputSampleRate();
     d.hasDuration = false;
     m_pitchOutputNo = list.size();
     list.push_back(d);
@@ -219,7 +219,7 @@
     d.hasKnownExtents = false;
     d.isQuantized = false;
     d.sampleType = OutputDescriptor::FixedSampleRate;
-    d.sampleRate = 22050 / 2205; //!!! get block size & hop from filterbank
+    d.sampleRate = PitchFilterbank::getOutputSampleRate();
     d.hasDuration = false;
     m_cpOutputNo = list.size();
     list.push_back(d);