comparison MatchVampPlugin.cpp @ 18:207bbdf74ee3

Expose a number of MATCH parameters through the plugin
author Chris Cannam
date Fri, 10 Oct 2014 14:22:53 +0100
parents 27f418d77095
children a5e0633d5238
comparison
equal deleted inserted replaced
17:27f418d77095 18:207bbdf74ee3
138 MatchVampPlugin::getParameterDescriptors() const 138 MatchVampPlugin::getParameterDescriptors() const
139 { 139 {
140 ParameterList list; 140 ParameterList list;
141 141
142 ParameterDescriptor desc; 142 ParameterDescriptor desc;
143
143 desc.identifier = "serialise"; 144 desc.identifier = "serialise";
144 desc.name = "Serialise Plugin Invocations"; 145 desc.name = "Serialise Plugin Invocations";
145 desc.description = "Reduce potential memory load at the expense of multiprocessor performance by serialising multi-threaded plugin runs"; 146 desc.description = "Reduce potential memory load at the expense of multiprocessor performance by serialising multi-threaded plugin runs";
146 desc.minValue = 0; 147 desc.minValue = 0;
147 desc.maxValue = 1; 148 desc.maxValue = 1;
148 desc.defaultValue = 0; 149 desc.defaultValue = 0;
149 desc.isQuantized = true; 150 desc.isQuantized = true;
150 desc.quantizeStep = 1; 151 desc.quantizeStep = 1;
151 list.push_back(desc); 152 list.push_back(desc);
152 153
154 desc.identifier = "framenorm";
155 desc.name = "Frame Normalisation";
156 desc.description = "Type of normalisation to use for frequency-domain audio features";
157 desc.minValue = 0;
158 desc.maxValue = 2;
159 desc.defaultValue = (int)m_defaultParams.frameNorm;
160 desc.isQuantized = true;
161 desc.quantizeStep = 1;
162 desc.valueNames.clear();
163 desc.valueNames.push_back("None");
164 desc.valueNames.push_back("Sum To 1");
165 desc.valueNames.push_back("Long-Term Average");
166 list.push_back(desc);
167 desc.valueNames.clear();
168
169 desc.identifier = "distnorm";
170 desc.name = "Distance Normalisation";
171 desc.description = "Type of normalisation to use for distance metric";
172 desc.minValue = 0;
173 desc.maxValue = 2;
174 desc.defaultValue = (int)m_defaultParams.distanceNorm;
175 desc.isQuantized = true;
176 desc.quantizeStep = 1;
177 desc.valueNames.clear();
178 desc.valueNames.push_back("None");
179 desc.valueNames.push_back("Sum of Frames");
180 desc.valueNames.push_back("Log Sum of Frames");
181 list.push_back(desc);
182 desc.valueNames.clear();
183
184 desc.identifier = "usespecdiff";
185 desc.name = "Use Spectral Difference";
186 desc.description = "Whether to use half-wave rectified spectral difference instead of straight spectrum";
187 desc.minValue = 0;
188 desc.maxValue = 1;
189 desc.defaultValue = m_defaultParams.useSpectralDifference ? 1 : 0;
190 desc.isQuantized = true;
191 desc.quantizeStep = 1;
192 list.push_back(desc);
193
194 desc.identifier = "usechroma";
195 desc.name = "Use Chroma Frequency Map";
196 desc.description = "Whether to use a chroma frequency map instead of the default warped spectrogram";
197 desc.minValue = 0;
198 desc.maxValue = 1;
199 desc.defaultValue = m_defaultParams.useChromaFrequencyMap ? 1 : 0;
200 desc.isQuantized = true;
201 desc.quantizeStep = 1;
202 list.push_back(desc);
203
204 desc.identifier = "maxruncount";
205 desc.name = "Max Run Count";
206 desc.description = "Limit of number of frames that will be accepted from one source without a frame from the other source being accepted";
207 desc.minValue = 1;
208 desc.maxValue = 10;
209 desc.defaultValue = m_defaultParams.maxRunCount;
210 desc.isQuantized = true;
211 desc.quantizeStep = 1;
212 list.push_back(desc);
213
153 return list; 214 return list;
154 } 215 }
155 216
156 float 217 float
157 MatchVampPlugin::getParameter(std::string name) const 218 MatchVampPlugin::getParameter(std::string name) const
158 { 219 {
159 if (name == "serialise") { 220 if (name == "serialise") {
160 return m_serialise ? 1.0 : 0.0; 221 return m_serialise ? 1.0 : 0.0;
161 } 222 } else if (name == "framenorm") {
223 return (int)m_params.frameNorm;
224 } else if (name == "distnorm") {
225 return (int)m_params.distanceNorm;
226 } else if (name == "usespecdiff") {
227 return m_params.useSpectralDifference ? 1.0 : 0.0;
228 } else if (name == "usechroma") {
229 return m_params.useChromaFrequencyMap ? 1.0 : 0.0;
230 } else if (name == "maxruncount") {
231 return m_params.maxRunCount;
232 }
233
162 return 0.0; 234 return 0.0;
163 } 235 }
164 236
165 void 237 void
166 MatchVampPlugin::setParameter(std::string name, float value) 238 MatchVampPlugin::setParameter(std::string name, float value)
167 { 239 {
168 if (name == "serialise") { 240 if (name == "serialise") {
169 m_serialise = (value > 0.5); 241 m_serialise = (value > 0.5);
170 // std::cerr << "MatchVampPlugin::setParameter: set serialise to " << m_serialise << std::endl; 242 } else if (name == "framenorm") {
243 m_params.frameNorm = (Matcher::FrameNormalisation)(int(value + 0.1));
244 } else if (name == "distnorm") {
245 m_params.distanceNorm = (Matcher::DistanceNormalisation)(int(value + 0.1));
246 } else if (name == "usespecdiff") {
247 m_params.useSpectralDifference = (value > 0.5);
248 } else if (name == "usechroma") {
249 m_params.useChromaFrequencyMap = (value > 0.5);
250 } else if (name == "maxruncount") {
251 m_params.maxRunCount = int(value + 0.1);
171 } 252 }
172 } 253 }
173 254
174 size_t 255 size_t
175 MatchVampPlugin::getPreferredStepSize() const 256 MatchVampPlugin::getPreferredStepSize() const