comparison src/MatchVampPlugin.cpp @ 180:d1bc89794cd4 tuning-rescale

Build with -Wconversion
author Chris Cannam
date Thu, 19 Feb 2015 16:14:33 +0000
parents 937951e66c5b
children a17b22abd551
comparison
equal deleted inserted replaced
179:9ab52cb6baa3 180:d1bc89794cd4
207 desc.identifier = "usespecdiff"; 207 desc.identifier = "usespecdiff";
208 desc.name = "Use feature difference"; 208 desc.name = "Use feature difference";
209 desc.description = "Whether to use half-wave rectified feature-to-feature difference instead of straight spectral or chroma feature"; 209 desc.description = "Whether to use half-wave rectified feature-to-feature difference instead of straight spectral or chroma feature";
210 desc.minValue = 0; 210 desc.minValue = 0;
211 desc.maxValue = 1; 211 desc.maxValue = 1;
212 desc.defaultValue = (int)m_defaultFcParams.order; 212 desc.defaultValue = (float)m_defaultFcParams.order;
213 desc.isQuantized = true; 213 desc.isQuantized = true;
214 desc.quantizeStep = 1; 214 desc.quantizeStep = 1;
215 list.push_back(desc); 215 list.push_back(desc);
216 216
217 desc.identifier = "framenorm"; 217 desc.identifier = "framenorm";
218 desc.name = "Frame normalisation"; 218 desc.name = "Frame normalisation";
219 desc.description = "Type of normalisation to use for features"; 219 desc.description = "Type of normalisation to use for features";
220 desc.minValue = 0; 220 desc.minValue = 0;
221 desc.maxValue = 2; 221 desc.maxValue = 2;
222 desc.defaultValue = (int)m_defaultFcParams.norm; 222 desc.defaultValue = (float)m_defaultFcParams.norm;
223 desc.isQuantized = true; 223 desc.isQuantized = true;
224 desc.quantizeStep = 1; 224 desc.quantizeStep = 1;
225 desc.valueNames.clear(); 225 desc.valueNames.clear();
226 desc.valueNames.push_back("None"); 226 desc.valueNames.push_back("None");
227 desc.valueNames.push_back("Sum to 1"); 227 desc.valueNames.push_back("Sum to 1");
233 desc.identifier = "metric"; 233 desc.identifier = "metric";
234 desc.name = "Distance metric"; 234 desc.name = "Distance metric";
235 desc.description = "Metric for distance calculations."; 235 desc.description = "Metric for distance calculations.";
236 desc.minValue = 0; 236 desc.minValue = 0;
237 desc.maxValue = 2; 237 desc.maxValue = 2;
238 desc.defaultValue = (int)m_defaultDParams.metric; 238 desc.defaultValue = (float)m_defaultDParams.metric;
239 desc.isQuantized = true; 239 desc.isQuantized = true;
240 desc.quantizeStep = 1; 240 desc.quantizeStep = 1;
241 desc.valueNames.clear(); 241 desc.valueNames.clear();
242 desc.valueNames.push_back("Manhattan"); 242 desc.valueNames.push_back("Manhattan");
243 desc.valueNames.push_back("Euclidean"); 243 desc.valueNames.push_back("Euclidean");
248 desc.identifier = "distnorm"; 248 desc.identifier = "distnorm";
249 desc.name = "Distance normalisation"; 249 desc.name = "Distance normalisation";
250 desc.description = "Type of normalisation to use for distance metric"; 250 desc.description = "Type of normalisation to use for distance metric";
251 desc.minValue = 0; 251 desc.minValue = 0;
252 desc.maxValue = 2; 252 desc.maxValue = 2;
253 desc.defaultValue = (int)m_defaultDParams.norm; 253 desc.defaultValue = (float)m_defaultDParams.norm;
254 desc.isQuantized = true; 254 desc.isQuantized = true;
255 desc.quantizeStep = 1; 255 desc.quantizeStep = 1;
256 desc.valueNames.clear(); 256 desc.valueNames.clear();
257 desc.valueNames.push_back("None"); 257 desc.valueNames.push_back("None");
258 desc.valueNames.push_back("Sum of frames"); 258 desc.valueNames.push_back("Sum of frames");
272 desc.identifier = "noise"; 272 desc.identifier = "noise";
273 desc.name = "Add noise"; 273 desc.name = "Add noise";
274 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."; 274 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.";
275 desc.minValue = 0; 275 desc.minValue = 0;
276 desc.maxValue = 1; 276 desc.maxValue = 1;
277 desc.defaultValue = (int)m_defaultDParams.noise; 277 desc.defaultValue = (float)m_defaultDParams.noise;
278 desc.isQuantized = true; 278 desc.isQuantized = true;
279 desc.quantizeStep = 1; 279 desc.quantizeStep = 1;
280 list.push_back(desc); 280 list.push_back(desc);
281 281
282 desc.identifier = "gradientlimit"; 282 desc.identifier = "gradientlimit";
283 desc.name = "Gradient limit"; 283 desc.name = "Gradient limit";
284 desc.description = "Limit of number of frames that will be accepted from one source without a frame from the other source being accepted"; 284 desc.description = "Limit of number of frames that will be accepted from one source without a frame from the other source being accepted";
285 desc.minValue = 1; 285 desc.minValue = 1;
286 desc.maxValue = 10; 286 desc.maxValue = 10;
287 desc.defaultValue = m_defaultParams.maxRunCount; 287 desc.defaultValue = (float)m_defaultParams.maxRunCount;
288 desc.isQuantized = true; 288 desc.isQuantized = true;
289 desc.quantizeStep = 1; 289 desc.quantizeStep = 1;
290 list.push_back(desc); 290 list.push_back(desc);
291 291
292 desc.identifier = "zonewidth"; 292 desc.identifier = "zonewidth";
338 MatchVampPlugin::getParameter(std::string name) const 338 MatchVampPlugin::getParameter(std::string name) const
339 { 339 {
340 if (name == "serialise") { 340 if (name == "serialise") {
341 return m_serialise ? 1.0 : 0.0; 341 return m_serialise ? 1.0 : 0.0;
342 } else if (name == "framenorm") { 342 } else if (name == "framenorm") {
343 return (int)m_fcParams.norm; 343 return (float)m_fcParams.norm;
344 } else if (name == "distnorm") { 344 } else if (name == "distnorm") {
345 return (int)m_dParams.norm; 345 return (float)m_dParams.norm;
346 } else if (name == "usespecdiff") { 346 } else if (name == "usespecdiff") {
347 return (int)m_fcParams.order; 347 return (float)m_fcParams.order;
348 } else if (name == "usechroma") { 348 } else if (name == "usechroma") {
349 return m_feParams.useChromaFrequencyMap ? 1.0 : 0.0; 349 return m_feParams.useChromaFrequencyMap ? 1.0 : 0.0;
350 } else if (name == "gradientlimit") { 350 } else if (name == "gradientlimit") {
351 return m_params.maxRunCount; 351 return (float)m_params.maxRunCount;
352 } else if (name == "diagonalweight") { 352 } else if (name == "diagonalweight") {
353 return m_params.diagonalWeight; 353 return m_params.diagonalWeight;
354 } else if (name == "zonewidth") { 354 } else if (name == "zonewidth") {
355 return (float)m_params.blockTime; 355 return (float)m_params.blockTime;
356 } else if (name == "smooth") { 356 } else if (name == "smooth") {
357 return m_smooth ? 1.0 : 0.0; 357 return m_smooth ? 1.0 : 0.0;
358 } else if (name == "silencethreshold") { 358 } else if (name == "silencethreshold") {
359 return (float)m_fcParams.silenceThreshold; 359 return (float)m_fcParams.silenceThreshold;
360 } else if (name == "metric") { 360 } else if (name == "metric") {
361 return (int)m_dParams.metric; 361 return (float)m_dParams.metric;
362 } else if (name == "noise") { 362 } else if (name == "noise") {
363 return m_dParams.noise; 363 return m_dParams.noise;
364 } else if (name == "freq1") { 364 } else if (name == "freq1") {
365 return (float)m_feParams.referenceFrequency; 365 return (float)m_feParams.referenceFrequency;
366 } else if (name == "freq2") { 366 } else if (name == "freq2") {
446 if (channels < getMinChannelCount() || 446 if (channels < getMinChannelCount() ||
447 channels > getMaxChannelCount()) return false; 447 channels > getMaxChannelCount()) return false;
448 if (stepSize > blockSize/2 || 448 if (stepSize > blockSize/2 ||
449 blockSize != getPreferredBlockSize()) return false; 449 blockSize != getPreferredBlockSize()) return false;
450 450
451 m_stepSize = stepSize; 451 m_stepSize = (int)stepSize;
452 m_stepTime = float(stepSize) / m_inputSampleRate; 452 m_stepTime = float(stepSize) / m_inputSampleRate;
453 m_blockSize = blockSize; 453 m_blockSize = (int)blockSize;
454 454
455 createMatchers(); 455 createMatchers();
456 m_begin = true; 456 m_begin = true;
457 m_locked = false; 457 m_locked = false;
458 458
487 desc.hasKnownExtents = false; 487 desc.hasKnownExtents = false;
488 desc.isQuantized = true; 488 desc.isQuantized = true;
489 desc.quantizeStep = 1; 489 desc.quantizeStep = 1;
490 desc.sampleType = OutputDescriptor::VariableSampleRate; 490 desc.sampleType = OutputDescriptor::VariableSampleRate;
491 desc.sampleRate = outRate; 491 desc.sampleRate = outRate;
492 m_pathOutNo = list.size(); 492 m_pathOutNo = int(list.size());
493 list.push_back(desc); 493 list.push_back(desc);
494 494
495 desc.identifier = "a_b"; 495 desc.identifier = "a_b";
496 desc.name = "A-B Timeline"; 496 desc.name = "A-B Timeline";
497 desc.description = "Timing in performance B corresponding to moments in performance A"; 497 desc.description = "Timing in performance B corresponding to moments in performance A";
500 desc.binCount = 1; 500 desc.binCount = 1;
501 desc.hasKnownExtents = false; 501 desc.hasKnownExtents = false;
502 desc.isQuantized = false; 502 desc.isQuantized = false;
503 desc.sampleType = OutputDescriptor::VariableSampleRate; 503 desc.sampleType = OutputDescriptor::VariableSampleRate;
504 desc.sampleRate = outRate; 504 desc.sampleRate = outRate;
505 m_abOutNo = list.size(); 505 m_abOutNo = int(list.size());
506 list.push_back(desc); 506 list.push_back(desc);
507 507
508 desc.identifier = "b_a"; 508 desc.identifier = "b_a";
509 desc.name = "B-A Timeline"; 509 desc.name = "B-A Timeline";
510 desc.description = "Timing in performance A corresponding to moments in performance B"; 510 desc.description = "Timing in performance A corresponding to moments in performance B";
513 desc.binCount = 1; 513 desc.binCount = 1;
514 desc.hasKnownExtents = false; 514 desc.hasKnownExtents = false;
515 desc.isQuantized = false; 515 desc.isQuantized = false;
516 desc.sampleType = OutputDescriptor::VariableSampleRate; 516 desc.sampleType = OutputDescriptor::VariableSampleRate;
517 desc.sampleRate = outRate; 517 desc.sampleRate = outRate;
518 m_baOutNo = list.size(); 518 m_baOutNo = int(list.size());
519 list.push_back(desc); 519 list.push_back(desc);
520 520
521 desc.identifier = "a_b_divergence"; 521 desc.identifier = "a_b_divergence";
522 desc.name = "A-B Divergence"; 522 desc.name = "A-B Divergence";
523 desc.description = "Difference between timings in performances A and B"; 523 desc.description = "Difference between timings in performances A and B";
526 desc.binCount = 1; 526 desc.binCount = 1;
527 desc.hasKnownExtents = false; 527 desc.hasKnownExtents = false;
528 desc.isQuantized = false; 528 desc.isQuantized = false;
529 desc.sampleType = OutputDescriptor::VariableSampleRate; 529 desc.sampleType = OutputDescriptor::VariableSampleRate;
530 desc.sampleRate = outRate; 530 desc.sampleRate = outRate;
531 m_abDivOutNo = list.size(); 531 m_abDivOutNo = int(list.size());
532 list.push_back(desc); 532 list.push_back(desc);
533 533
534 desc.identifier = "a_b_temporatio"; 534 desc.identifier = "a_b_temporatio";
535 desc.name = "A-B Tempo Ratio"; 535 desc.name = "A-B Tempo Ratio";
536 desc.description = "Ratio of tempi between performances A and B"; 536 desc.description = "Ratio of tempi between performances A and B";
539 desc.binCount = 1; 539 desc.binCount = 1;
540 desc.hasKnownExtents = false; 540 desc.hasKnownExtents = false;
541 desc.isQuantized = false; 541 desc.isQuantized = false;
542 desc.sampleType = OutputDescriptor::VariableSampleRate; 542 desc.sampleType = OutputDescriptor::VariableSampleRate;
543 desc.sampleRate = outRate; 543 desc.sampleRate = outRate;
544 m_abRatioOutNo = list.size(); 544 m_abRatioOutNo = int(list.size());
545 list.push_back(desc); 545 list.push_back(desc);
546 546
547 int featureSize = FeatureExtractor(m_feParams).getFeatureSize(); 547 int featureSize = FeatureExtractor(m_feParams).getFeatureSize();
548 548
549 desc.identifier = "a_features"; 549 desc.identifier = "a_features";
554 desc.binCount = featureSize; 554 desc.binCount = featureSize;
555 desc.hasKnownExtents = false; 555 desc.hasKnownExtents = false;
556 desc.isQuantized = false; 556 desc.isQuantized = false;
557 desc.sampleType = OutputDescriptor::FixedSampleRate; 557 desc.sampleType = OutputDescriptor::FixedSampleRate;
558 desc.sampleRate = outRate; 558 desc.sampleRate = outRate;
559 m_aFeaturesOutNo = list.size(); 559 m_aFeaturesOutNo = int(list.size());
560 list.push_back(desc); 560 list.push_back(desc);
561 561
562 desc.identifier = "b_features"; 562 desc.identifier = "b_features";
563 desc.name = "Raw B Features"; 563 desc.name = "Raw B Features";
564 desc.description = "Spectral features extracted from performance B"; 564 desc.description = "Spectral features extracted from performance B";
567 desc.binCount = featureSize; 567 desc.binCount = featureSize;
568 desc.hasKnownExtents = false; 568 desc.hasKnownExtents = false;
569 desc.isQuantized = false; 569 desc.isQuantized = false;
570 desc.sampleType = OutputDescriptor::FixedSampleRate; 570 desc.sampleType = OutputDescriptor::FixedSampleRate;
571 desc.sampleRate = outRate; 571 desc.sampleRate = outRate;
572 m_bFeaturesOutNo = list.size(); 572 m_bFeaturesOutNo = int(list.size());
573 list.push_back(desc); 573 list.push_back(desc);
574 574
575 desc.identifier = "a_cfeatures"; 575 desc.identifier = "a_cfeatures";
576 desc.name = "Conditioned A Features"; 576 desc.name = "Conditioned A Features";
577 desc.description = "Spectral features extracted from performance A, after normalisation and conditioning"; 577 desc.description = "Spectral features extracted from performance A, after normalisation and conditioning";
580 desc.binCount = featureSize; 580 desc.binCount = featureSize;
581 desc.hasKnownExtents = false; 581 desc.hasKnownExtents = false;
582 desc.isQuantized = false; 582 desc.isQuantized = false;
583 desc.sampleType = OutputDescriptor::FixedSampleRate; 583 desc.sampleType = OutputDescriptor::FixedSampleRate;
584 desc.sampleRate = outRate; 584 desc.sampleRate = outRate;
585 m_caFeaturesOutNo = list.size(); 585 m_caFeaturesOutNo = int(list.size());
586 list.push_back(desc); 586 list.push_back(desc);
587 587
588 desc.identifier = "b_cfeatures"; 588 desc.identifier = "b_cfeatures";
589 desc.name = "Conditioned B Features"; 589 desc.name = "Conditioned B Features";
590 desc.description = "Spectral features extracted from performance B, after norrmalisation and conditioning"; 590 desc.description = "Spectral features extracted from performance B, after norrmalisation and conditioning";
593 desc.binCount = featureSize; 593 desc.binCount = featureSize;
594 desc.hasKnownExtents = false; 594 desc.hasKnownExtents = false;
595 desc.isQuantized = false; 595 desc.isQuantized = false;
596 desc.sampleType = OutputDescriptor::FixedSampleRate; 596 desc.sampleType = OutputDescriptor::FixedSampleRate;
597 desc.sampleRate = outRate; 597 desc.sampleRate = outRate;
598 m_cbFeaturesOutNo = list.size(); 598 m_cbFeaturesOutNo = int(list.size());
599 list.push_back(desc); 599 list.push_back(desc);
600 600
601 desc.identifier = "overall_cost"; 601 desc.identifier = "overall_cost";
602 desc.name = "Overall Cost"; 602 desc.name = "Overall Cost";
603 desc.description = "Normalised overall path cost for the cheapest path"; 603 desc.description = "Normalised overall path cost for the cheapest path";
606 desc.binCount = 1; 606 desc.binCount = 1;
607 desc.hasKnownExtents = false; 607 desc.hasKnownExtents = false;
608 desc.isQuantized = false; 608 desc.isQuantized = false;
609 desc.sampleType = OutputDescriptor::FixedSampleRate; 609 desc.sampleType = OutputDescriptor::FixedSampleRate;
610 desc.sampleRate = 1; 610 desc.sampleRate = 1;
611 m_overallCostOutNo = list.size(); 611 m_overallCostOutNo = int(list.size());
612 list.push_back(desc); 612 list.push_back(desc);
613 613
614 return list; 614 return list;
615 } 615 }
616 616
702 702
703 int x = pathx[i]; 703 int x = pathx[i];
704 int y = pathy[i]; 704 int y = pathy[i];
705 705
706 Vamp::RealTime xt = Vamp::RealTime::frame2RealTime 706 Vamp::RealTime xt = Vamp::RealTime::frame2RealTime
707 (x * m_stepSize, lrintf(m_inputSampleRate)); 707 (x * m_stepSize, int(m_inputSampleRate + 0.5));
708 Vamp::RealTime yt = Vamp::RealTime::frame2RealTime 708 Vamp::RealTime yt = Vamp::RealTime::frame2RealTime
709 (y * m_stepSize, lrintf(m_inputSampleRate)); 709 (y * m_stepSize, int(m_inputSampleRate + 0.5));
710 710
711 Feature feature; 711 Feature feature;
712 feature.hasTimestamp = true; 712 feature.hasTimestamp = true;
713 feature.timestamp = m_startTime + xt; 713 feature.timestamp = m_startTime + xt;
714 feature.values.clear(); 714 feature.values.clear();