Mercurial > hg > tipic
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);