# HG changeset patch # User Chris Cannam # Date 1412947373 -3600 # Node ID 207bbdf74ee3c0310716f97a62eb693a4b999838 # Parent 27f418d77095a1132096f3b007b2e743af7674d1 Expose a number of MATCH parameters through the plugin diff -r 27f418d77095 -r 207bbdf74ee3 MatchVampPlugin.cpp --- a/MatchVampPlugin.cpp Fri Oct 10 14:01:43 2014 +0100 +++ b/MatchVampPlugin.cpp Fri Oct 10 14:22:53 2014 +0100 @@ -140,6 +140,7 @@ ParameterList list; ParameterDescriptor desc; + desc.identifier = "serialise"; desc.name = "Serialise Plugin Invocations"; desc.description = "Reduce potential memory load at the expense of multiprocessor performance by serialising multi-threaded plugin runs"; @@ -150,6 +151,66 @@ desc.quantizeStep = 1; list.push_back(desc); + desc.identifier = "framenorm"; + desc.name = "Frame Normalisation"; + 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.isQuantized = true; + desc.quantizeStep = 1; + desc.valueNames.clear(); + desc.valueNames.push_back("None"); + desc.valueNames.push_back("Sum To 1"); + desc.valueNames.push_back("Long-Term Average"); + list.push_back(desc); + desc.valueNames.clear(); + + desc.identifier = "distnorm"; + desc.name = "Distance Normalisation"; + desc.description = "Type of normalisation to use for distance metric"; + desc.minValue = 0; + desc.maxValue = 2; + desc.defaultValue = (int)m_defaultParams.distanceNorm; + desc.isQuantized = true; + desc.quantizeStep = 1; + desc.valueNames.clear(); + desc.valueNames.push_back("None"); + desc.valueNames.push_back("Sum of Frames"); + desc.valueNames.push_back("Log Sum of Frames"); + list.push_back(desc); + desc.valueNames.clear(); + + desc.identifier = "usespecdiff"; + desc.name = "Use Spectral Difference"; + 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.isQuantized = true; + desc.quantizeStep = 1; + list.push_back(desc); + + desc.identifier = "usechroma"; + desc.name = "Use Chroma Frequency Map"; + 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.isQuantized = true; + desc.quantizeStep = 1; + list.push_back(desc); + + desc.identifier = "maxruncount"; + desc.name = "Max Run Count"; + desc.description = "Limit of number of frames that will be accepted from one source without a frame from the other source being accepted"; + desc.minValue = 1; + desc.maxValue = 10; + desc.defaultValue = m_defaultParams.maxRunCount; + desc.isQuantized = true; + desc.quantizeStep = 1; + list.push_back(desc); + return list; } @@ -158,7 +219,18 @@ { if (name == "serialise") { return m_serialise ? 1.0 : 0.0; + } else if (name == "framenorm") { + return (int)m_params.frameNorm; + } else if (name == "distnorm") { + return (int)m_params.distanceNorm; + } else if (name == "usespecdiff") { + return m_params.useSpectralDifference ? 1.0 : 0.0; + } else if (name == "usechroma") { + return m_params.useChromaFrequencyMap ? 1.0 : 0.0; + } else if (name == "maxruncount") { + return m_params.maxRunCount; } + return 0.0; } @@ -167,7 +239,16 @@ { if (name == "serialise") { m_serialise = (value > 0.5); -// std::cerr << "MatchVampPlugin::setParameter: set serialise to " << m_serialise << std::endl; + } else if (name == "framenorm") { + m_params.frameNorm = (Matcher::FrameNormalisation)(int(value + 0.1)); + } else if (name == "distnorm") { + m_params.distanceNorm = (Matcher::DistanceNormalisation)(int(value + 0.1)); + } else if (name == "usespecdiff") { + m_params.useSpectralDifference = (value > 0.5); + } else if (name == "usechroma") { + m_params.useChromaFrequencyMap = (value > 0.5); + } else if (name == "maxruncount") { + m_params.maxRunCount = int(value + 0.1); } }