Mercurial > hg > match-vamp
diff src/MatchVampPlugin.cpp @ 38:8cce4e13ede3 refactors
Make use of FeatureExtractor in Matcher
author | Chris Cannam |
---|---|
date | Thu, 13 Nov 2014 12:50:54 +0000 |
parents | 16870e8770ae |
children | 8cbc15519d2c a540137d393b |
line wrap: on
line diff
--- a/src/MatchVampPlugin.cpp Thu Nov 13 12:03:52 2014 +0000 +++ b/src/MatchVampPlugin.cpp Thu Nov 13 12:50:54 2014 +0000 @@ -57,7 +57,9 @@ m_locked(false), m_smooth(true), m_params(inputSampleRate, defaultStepTime, m_blockSize), - m_defaultParams(inputSampleRate, defaultStepTime, m_blockSize) + m_defaultParams(inputSampleRate, defaultStepTime, m_blockSize), + m_feParams(inputSampleRate, m_blockSize), + m_defaultFeParams(inputSampleRate, m_blockSize) { if (inputSampleRate < sampleRateMin) { std::cerr << "MatchVampPlugin::MatchVampPlugin: input sample rate " @@ -157,7 +159,7 @@ desc.description = "Type of normalisation to use for frequency-domain audio features"; desc.minValue = 0; desc.maxValue = 2; - desc.defaultValue = (int)m_defaultParams.frameNorm; + desc.defaultValue = (int)m_defaultFeParams.frameNorm; desc.isQuantized = true; desc.quantizeStep = 1; desc.valueNames.clear(); @@ -187,7 +189,7 @@ desc.description = "Whether to use half-wave rectified spectral difference instead of straight spectrum"; desc.minValue = 0; desc.maxValue = 1; - desc.defaultValue = m_defaultParams.useSpectralDifference ? 1 : 0; + desc.defaultValue = m_defaultFeParams.useSpectralDifference ? 1 : 0; desc.isQuantized = true; desc.quantizeStep = 1; list.push_back(desc); @@ -197,7 +199,7 @@ desc.description = "Whether to use a chroma frequency map instead of the default warped spectrogram"; desc.minValue = 0; desc.maxValue = 1; - desc.defaultValue = m_defaultParams.useChromaFrequencyMap ? 1 : 0; + desc.defaultValue = m_defaultFeParams.useChromaFrequencyMap ? 1 : 0; desc.isQuantized = true; desc.quantizeStep = 1; list.push_back(desc); @@ -243,13 +245,13 @@ if (name == "serialise") { return m_serialise ? 1.0 : 0.0; } else if (name == "framenorm") { - return (int)m_params.frameNorm; + return (int)m_feParams.frameNorm; } else if (name == "distnorm") { return (int)m_params.distanceNorm; } else if (name == "usespecdiff") { - return m_params.useSpectralDifference ? 1.0 : 0.0; + return m_feParams.useSpectralDifference ? 1.0 : 0.0; } else if (name == "usechroma") { - return m_params.useChromaFrequencyMap ? 1.0 : 0.0; + return m_feParams.useChromaFrequencyMap ? 1.0 : 0.0; } else if (name == "gradientlimit") { return m_params.maxRunCount; } else if (name == "zonewidth") { @@ -267,13 +269,13 @@ if (name == "serialise") { m_serialise = (value > 0.5); } else if (name == "framenorm") { - m_params.frameNorm = (Matcher::FrameNormalisation)(int(value + 0.1)); + m_feParams.frameNorm = (FeatureExtractor::FrameNormalisation)(int(value + 0.1)); } else if (name == "distnorm") { m_params.distanceNorm = (DistanceMetric::DistanceNormalisation)(int(value + 0.1)); } else if (name == "usespecdiff") { - m_params.useSpectralDifference = (value > 0.5); + m_feParams.useSpectralDifference = (value > 0.5); } else if (name == "usechroma") { - m_params.useChromaFrequencyMap = (value > 0.5); + m_feParams.useChromaFrequencyMap = (value > 0.5); } else if (name == "gradientlimit") { m_params.maxRunCount = int(value + 0.1); } else if (name == "zonewidth") { @@ -300,8 +302,9 @@ { m_params.hopTime = m_stepTime; m_params.fftSize = m_blockSize; - pm1 = new Matcher(m_params, 0); - pm2 = new Matcher(m_params, pm1); + m_feParams.fftSize = m_blockSize; + pm1 = new Matcher(m_params, m_feParams, 0); + pm2 = new Matcher(m_params, m_feParams, pm1); pm1->setOtherMatcher(pm2); feeder = new MatchFeeder(pm1, pm2); } @@ -420,12 +423,14 @@ m_abRatioOutNo = list.size(); list.push_back(desc); + int featureSize = FeatureExtractor(m_feParams).getFeatureSize(); + desc.identifier = "a_features"; desc.name = "A Features"; desc.description = "Spectral features extracted from performance A"; desc.unit = ""; desc.hasFixedBinCount = true; - desc.binCount = Matcher::getFeatureSizeFor(m_params); + desc.binCount = featureSize; desc.hasKnownExtents = false; desc.isQuantized = false; desc.sampleType = OutputDescriptor::FixedSampleRate; @@ -438,7 +443,7 @@ desc.description = "Spectral features extracted from performance B"; desc.unit = ""; desc.hasFixedBinCount = true; - desc.binCount = Matcher::getFeatureSizeFor(m_params); + desc.binCount = featureSize; desc.hasKnownExtents = false; desc.isQuantized = false; desc.sampleType = OutputDescriptor::FixedSampleRate;