Mercurial > hg > vamp-fanchirp
comparison FChTransformF0gram.cpp @ 22:a1879532385e spect
Connect up an interesting parameter that was exposed but not connected
author | Chris Cannam |
---|---|
date | Thu, 04 Oct 2018 14:56:41 +0100 |
parents | 37917af73ae9 |
children | 2c54d83a196f |
comparison
equal
deleted
inserted
replaced
21:37917af73ae9 | 22:a1879532385e |
---|---|
353 f0s_per_oct.quantizeStep = 1.0; | 353 f0s_per_oct.quantizeStep = 1.0; |
354 list.push_back(f0s_per_oct); | 354 list.push_back(f0s_per_oct); |
355 | 355 |
356 ParameterDescriptor f0_prefer_fun; | 356 ParameterDescriptor f0_prefer_fun; |
357 f0_prefer_fun.identifier = "f0_prefer_fun"; | 357 f0_prefer_fun.identifier = "f0_prefer_fun"; |
358 f0_prefer_fun.name = "f0 preference function"; | 358 f0_prefer_fun.name = "Use f0 weighting"; |
359 f0_prefer_fun.description = "Whether to use a f0 weighting function."; | 359 f0_prefer_fun.description = "Whether to use a f0 weighting function to prefer frequencies nearer a mean value."; |
360 f0_prefer_fun.unit = ""; | 360 f0_prefer_fun.unit = ""; |
361 f0_prefer_fun.minValue = 0; | 361 f0_prefer_fun.minValue = 0; |
362 f0_prefer_fun.maxValue = 1; | 362 f0_prefer_fun.maxValue = 1; |
363 f0_prefer_fun.defaultValue = 1; | 363 f0_prefer_fun.defaultValue = 1; |
364 f0_prefer_fun.isQuantized = true; | 364 f0_prefer_fun.isQuantized = true; |
365 f0_prefer_fun.quantizeStep = 1.0; | 365 f0_prefer_fun.quantizeStep = 1.0; |
366 list.push_back(f0_prefer_fun); | 366 list.push_back(f0_prefer_fun); |
367 | 367 |
368 ParameterDescriptor f0_prefer_mean; | 368 ParameterDescriptor f0_prefer_mean; |
369 f0_prefer_mean.identifier = "f0_prefer_mean"; | 369 f0_prefer_mean.identifier = "f0_prefer_mean"; |
370 f0_prefer_mean.name = "mean f0 preference function"; | 370 f0_prefer_mean.name = "Mean pitch for f0 weighting"; |
371 f0_prefer_mean.description = "Mean value for f0 weighting function (MIDI number)."; | 371 f0_prefer_mean.description = "Mean value for f0 weighting function (MIDI number)."; |
372 f0_prefer_mean.unit = ""; | 372 f0_prefer_mean.unit = ""; |
373 f0_prefer_mean.minValue = 1; | 373 f0_prefer_mean.minValue = 1; |
374 f0_prefer_mean.maxValue = 127; | 374 f0_prefer_mean.maxValue = 127; |
375 f0_prefer_mean.defaultValue = 60; | 375 f0_prefer_mean.defaultValue = 60; |
377 f0_prefer_mean.quantizeStep = 1.0; | 377 f0_prefer_mean.quantizeStep = 1.0; |
378 list.push_back(f0_prefer_mean); | 378 list.push_back(f0_prefer_mean); |
379 | 379 |
380 ParameterDescriptor f0_prefer_stdev; | 380 ParameterDescriptor f0_prefer_stdev; |
381 f0_prefer_stdev.identifier = "f0_prefer_stdev"; | 381 f0_prefer_stdev.identifier = "f0_prefer_stdev"; |
382 f0_prefer_stdev.name = "stdev of f0 preference function"; | 382 f0_prefer_stdev.name = "Stdev for f0 weighting"; |
383 f0_prefer_stdev.description = "Stdev for f0 weighting function (MIDI number)."; | 383 f0_prefer_stdev.description = "Standard deviation for f0 weighting function (MIDI number)."; |
384 f0_prefer_stdev.unit = ""; | 384 f0_prefer_stdev.unit = ""; |
385 f0_prefer_stdev.minValue = 1; | 385 f0_prefer_stdev.minValue = 1; |
386 f0_prefer_stdev.maxValue = 127; | 386 f0_prefer_stdev.maxValue = 127; |
387 f0_prefer_stdev.defaultValue = 18; | 387 f0_prefer_stdev.defaultValue = 18; |
388 f0_prefer_stdev.isQuantized = true; | 388 f0_prefer_stdev.isQuantized = true; |
426 } else if (identifier == "f0s_per_oct") { | 426 } else if (identifier == "f0s_per_oct") { |
427 return m_f0_params.num_f0s_per_oct; | 427 return m_f0_params.num_f0s_per_oct; |
428 } else if (identifier == "num_f0_hyps") { | 428 } else if (identifier == "num_f0_hyps") { |
429 return m_f0_params.num_f0_hyps; | 429 return m_f0_params.num_f0_hyps; |
430 } else if (identifier == "f0_prefer_fun") { | 430 } else if (identifier == "f0_prefer_fun") { |
431 return m_f0_params.prefer; | 431 return m_f0_params.prefer ? 1.0 : 0.0; |
432 } else if (identifier == "f0_prefer_mean") { | 432 } else if (identifier == "f0_prefer_mean") { |
433 return m_f0_params.prefer_mean; | 433 return m_f0_params.prefer_mean; |
434 } else if (identifier == "f0_prefer_stdev") { | 434 } else if (identifier == "f0_prefer_stdev") { |
435 return m_f0_params.prefer_stdev; | 435 return m_f0_params.prefer_stdev; |
436 } else if (identifier == "f0gram_mode") { | 436 } else if (identifier == "f0gram_mode") { |
462 } else if (identifier == "f0s_per_oct") { | 462 } else if (identifier == "f0s_per_oct") { |
463 m_f0_params.num_f0s_per_oct = value; | 463 m_f0_params.num_f0s_per_oct = value; |
464 } else if (identifier == "num_f0_hyps") { | 464 } else if (identifier == "num_f0_hyps") { |
465 m_f0_params.num_f0_hyps = value; | 465 m_f0_params.num_f0_hyps = value; |
466 } else if (identifier == "f0_prefer_fun") { | 466 } else if (identifier == "f0_prefer_fun") { |
467 m_f0_params.prefer = value; | 467 m_f0_params.prefer = (value > 0.5); |
468 } else if (identifier == "f0_prefer_mean") { | 468 } else if (identifier == "f0_prefer_mean") { |
469 m_f0_params.prefer_mean = value; | 469 m_f0_params.prefer_mean = value; |
470 } else if (identifier == "f0_prefer_stdev") { | 470 } else if (identifier == "f0_prefer_stdev") { |
471 m_f0_params.prefer_stdev = value; | 471 m_f0_params.prefer_stdev = value; |
472 } else if (identifier == "f0gram_mode") { | 472 } else if (identifier == "f0gram_mode") { |
663 m_glogs_f0_preference_weights = allocate<double>(m_f0_params.num_octs*m_f0_params.num_f0s_per_oct); | 663 m_glogs_f0_preference_weights = allocate<double>(m_f0_params.num_octs*m_f0_params.num_f0s_per_oct); |
664 m_glogs_median_correction = allocate<double>(m_f0_params.num_octs*m_f0_params.num_f0s_per_oct); | 664 m_glogs_median_correction = allocate<double>(m_f0_params.num_octs*m_f0_params.num_f0s_per_oct); |
665 m_glogs_sigma_correction = allocate<double>(m_f0_params.num_octs*m_f0_params.num_f0s_per_oct); | 665 m_glogs_sigma_correction = allocate<double>(m_f0_params.num_octs*m_f0_params.num_f0s_per_oct); |
666 double MIDI_value; | 666 double MIDI_value; |
667 for (int i = 0; i < m_f0_params.num_octs*m_f0_params.num_f0s_per_oct; i++) { | 667 for (int i = 0; i < m_f0_params.num_octs*m_f0_params.num_f0s_per_oct; i++) { |
668 MIDI_value = 69.0 + 12.0 * log2(m_glogs_f0[i + m_glogs_init_f0s]/440.0); | 668 if (m_f0_params.prefer) { |
669 m_glogs_f0_preference_weights[i] = 1.0/sqrt(2.0*M_PI*m_f0_params.prefer_stdev*m_f0_params.prefer_stdev)*exp(-(MIDI_value-m_f0_params.prefer_mean)*(MIDI_value-m_f0_params.prefer_mean)/(2.0*m_f0_params.prefer_stdev*m_f0_params.prefer_stdev)); | 669 MIDI_value = 69.0 + 12.0 * log2(m_glogs_f0[i + m_glogs_init_f0s]/440.0); |
670 m_glogs_f0_preference_weights[i] = (0.01 + m_glogs_f0_preference_weights[i]) / (1.01); | 670 m_glogs_f0_preference_weights[i] = 1.0/sqrt(2.0*M_PI*m_f0_params.prefer_stdev*m_f0_params.prefer_stdev)*exp(-(MIDI_value-m_f0_params.prefer_mean)*(MIDI_value-m_f0_params.prefer_mean)/(2.0*m_f0_params.prefer_stdev*m_f0_params.prefer_stdev)); |
671 m_glogs_f0_preference_weights[i] = (0.01 + m_glogs_f0_preference_weights[i]) / (1.01); | |
672 } else { | |
673 m_glogs_f0_preference_weights[i] = 1.0; | |
674 } | |
671 | 675 |
672 m_glogs_median_correction[i] = m_glogs_params.median_poly_coefs[0]*(i+1.0)*(i+1.0) + m_glogs_params.median_poly_coefs[1]*(i+1.0) + m_glogs_params.median_poly_coefs[2]; | 676 m_glogs_median_correction[i] = m_glogs_params.median_poly_coefs[0]*(i+1.0)*(i+1.0) + m_glogs_params.median_poly_coefs[1]*(i+1.0) + m_glogs_params.median_poly_coefs[2]; |
673 m_glogs_sigma_correction[i] = 1.0 / (m_glogs_params.sigma_poly_coefs[0]*(i+1.0)*(i+1.0) + m_glogs_params.sigma_poly_coefs[1]*(i+1.0) + m_glogs_params.sigma_poly_coefs[2]); | 677 m_glogs_sigma_correction[i] = 1.0 / (m_glogs_params.sigma_poly_coefs[0]*(i+1.0)*(i+1.0) + m_glogs_params.sigma_poly_coefs[1]*(i+1.0) + m_glogs_params.sigma_poly_coefs[2]); |
674 } | 678 } |
675 } | 679 } |