comparison src/MatchVampPlugin.cpp @ 156:d6df9fe7b12f refactors

Implement distance metric selection (euclidean or cosine)
author Chris Cannam
date Thu, 29 Jan 2015 10:25:47 +0000
parents 246de093f0f1
children d6c1556fadd0
comparison
equal deleted inserted replaced
151:246de093f0f1 156:d6df9fe7b12f
212 desc.minValue = 0; 212 desc.minValue = 0;
213 desc.maxValue = 1; 213 desc.maxValue = 1;
214 desc.defaultValue = m_defaultFcParams.silenceThreshold; 214 desc.defaultValue = m_defaultFcParams.silenceThreshold;
215 desc.isQuantized = false; 215 desc.isQuantized = false;
216 list.push_back(desc); 216 list.push_back(desc);
217
218 desc.identifier = "metric";
219 desc.name = "Distance metric";
220 desc.description = "Metric for distance calculations.";
221 desc.minValue = 0;
222 desc.maxValue = 1;
223 desc.defaultValue = (int)m_defaultDParams.metric;
224 desc.isQuantized = true;
225 desc.quantizeStep = 1;
226 desc.valueNames.clear();
227 desc.valueNames.push_back("Euclidean");
228 desc.valueNames.push_back("Cosine");
229 list.push_back(desc);
230 desc.valueNames.clear();
217 231
218 desc.identifier = "noise"; 232 desc.identifier = "noise";
219 desc.name = "Mix in Noise"; 233 desc.name = "Mix in Noise";
220 desc.description = "Whether to mix in a small constant white noise term when calculating feature distance. This can improve alignment against sources containing cleanly synthesised audio."; 234 desc.description = "Whether to mix in a small constant white noise term when calculating feature distance. This can improve alignment against sources containing cleanly synthesised audio.";
221 desc.minValue = 0; 235 desc.minValue = 0;
291 return (float)m_params.blockTime; 305 return (float)m_params.blockTime;
292 } else if (name == "smooth") { 306 } else if (name == "smooth") {
293 return m_smooth ? 1.0 : 0.0; 307 return m_smooth ? 1.0 : 0.0;
294 } else if (name == "silencethreshold") { 308 } else if (name == "silencethreshold") {
295 return m_fcParams.silenceThreshold; 309 return m_fcParams.silenceThreshold;
310 } else if (name == "metric") {
311 return (int)m_dParams.metric;
296 } else if (name == "noise") { 312 } else if (name == "noise") {
297 return m_dParams.noise; 313 return m_dParams.noise;
298 } 314 }
299 315
300 return 0.0; 316 return 0.0;
321 m_params.blockTime = value; 337 m_params.blockTime = value;
322 } else if (name == "smooth") { 338 } else if (name == "smooth") {
323 m_smooth = (value > 0.5); 339 m_smooth = (value > 0.5);
324 } else if (name == "silencethreshold") { 340 } else if (name == "silencethreshold") {
325 m_fcParams.silenceThreshold = value; 341 m_fcParams.silenceThreshold = value;
342 } else if (name == "metric") {
343 m_dParams.metric = (DistanceMetric::Metric)(int(value + 0.1));
326 } else if (name == "noise") { 344 } else if (name == "noise") {
327 m_dParams.noise = (DistanceMetric::NoiseAddition)(int(value + 0.1)); 345 m_dParams.noise = (DistanceMetric::NoiseAddition)(int(value + 0.1));
328 } 346 }
329 } 347 }
330 348