comparison FChTransformF0gram.cpp @ 21:37917af73ae9 spect

Some tidying
author Chris Cannam
date Thu, 04 Oct 2018 14:46:41 +0100
parents 7964cc5ad98f
children a1879532385e
comparison
equal deleted inserted replaced
20:7964cc5ad98f 21:37917af73ae9
24 24
25 #include "bqvec/Allocators.h" 25 #include "bqvec/Allocators.h"
26 26
27 using namespace breakfastquay; 27 using namespace breakfastquay;
28 28
29 #define DEBUG 29 //#define DEBUG
30 30
31 #define MAX(x, y) (((x) > (y)) ? (x) : (y)) 31 #define MAX(x, y) (((x) > (y)) ? (x) : (y))
32 32
33 FChTransformF0gram::FChTransformF0gram(ProcessingMode mode, 33 FChTransformF0gram::FChTransformF0gram(ProcessingMode mode,
34 float inputSampleRate) : 34 float inputSampleRate) :
598 void 598 void
599 FChTransformF0gram::design_GLogS() { 599 FChTransformF0gram::design_GLogS() {
600 600
601 // total number & initial quantity of f0s 601 // total number & initial quantity of f0s
602 602
603 cerr << "per oct = " << m_f0_params.num_f0s_per_oct << ", octs = " << m_f0_params.num_octs << endl;
604 m_glogs_init_f0s = (int)(((double)m_f0_params.num_f0s_per_oct)*log2(5.0))+1; 603 m_glogs_init_f0s = (int)(((double)m_f0_params.num_f0s_per_oct)*log2(5.0))+1;
605 cerr << "init_f0s = " << m_glogs_init_f0s << endl;
606 m_glogs_num_f0s = (m_f0_params.num_octs+1)*m_f0_params.num_f0s_per_oct + m_glogs_init_f0s; 604 m_glogs_num_f0s = (m_f0_params.num_octs+1)*m_f0_params.num_f0s_per_oct + m_glogs_init_f0s;
607 cerr << "num_f0s = " << m_glogs_num_f0s << endl;
608 605
609 // Initialize arrays 606 // Initialize arrays
610 m_glogs_f0 = allocate<double>(m_glogs_num_f0s); 607 m_glogs_f0 = allocate<double>(m_glogs_num_f0s);
611 m_glogs = allocate<double>(m_glogs_num_f0s*m_warp_params.num_warps); 608 m_glogs = allocate<double>(m_glogs_num_f0s*m_warp_params.num_warps);
612 m_glogs_n = allocate<int>(m_glogs_num_f0s); 609 m_glogs_n = allocate<int>(m_glogs_num_f0s);
1021 // Sub/super harmonic correction 1018 // Sub/super harmonic correction
1022 Utils::interp1q(m_glogs + i_warp*m_glogs_num_f0s, m_glogs_third_harmonic_posint, m_glogs_third_harmonic_posfrac, m_glogs_third_harmonic, (m_f0_params.num_octs+1)*m_f0_params.num_f0s_per_oct); 1019 Utils::interp1q(m_glogs + i_warp*m_glogs_num_f0s, m_glogs_third_harmonic_posint, m_glogs_third_harmonic_posfrac, m_glogs_third_harmonic, (m_f0_params.num_octs+1)*m_f0_params.num_f0s_per_oct);
1023 Utils::interp1q(m_glogs + i_warp*m_glogs_num_f0s, m_glogs_fifth_harmonic_posint, m_glogs_fifth_harmonic_posfrac, m_glogs_fifth_harmonic, (m_f0_params.num_octs+1)*m_f0_params.num_f0s_per_oct); 1020 Utils::interp1q(m_glogs + i_warp*m_glogs_num_f0s, m_glogs_fifth_harmonic_posint, m_glogs_fifth_harmonic_posfrac, m_glogs_fifth_harmonic, (m_f0_params.num_octs+1)*m_f0_params.num_f0s_per_oct);
1024 for (int i = m_glogs_num_f0s-1; i >= m_glogs_init_f0s; i--) { 1021 for (int i = m_glogs_num_f0s-1; i >= m_glogs_init_f0s; i--) {
1025 m_glogs[i + i_warp*m_glogs_num_f0s] -= MAX(MAX(m_glogs[i-m_f0_params.num_f0s_per_oct + i_warp*m_glogs_num_f0s],m_glogs_third_harmonic[i-m_glogs_init_f0s]),m_glogs_fifth_harmonic[i-m_glogs_init_f0s]); 1022 m_glogs[i + i_warp*m_glogs_num_f0s] -= MAX(MAX(m_glogs[i-m_f0_params.num_f0s_per_oct + i_warp*m_glogs_num_f0s],m_glogs_third_harmonic[i-m_glogs_init_f0s]),m_glogs_fifth_harmonic[i-m_glogs_init_f0s]);
1026 //m_glogs[i] -= MAX(m_glogs[i-m_f0_params.num_f0s_per_oct],m_glogs_third_harmonic[i-m_glogs_init_f0s]);
1027 } 1023 }
1028 for (int i = m_glogs_init_f0s; i < m_glogs_num_f0s-m_f0_params.num_f0s_per_oct; i++) { 1024 for (int i = m_glogs_init_f0s; i < m_glogs_num_f0s-m_f0_params.num_f0s_per_oct; i++) {
1029 m_glogs[i + i_warp*m_glogs_num_f0s] -= 0.3*m_glogs[i+m_f0_params.num_f0s_per_oct + i_warp*m_glogs_num_f0s]; 1025 m_glogs[i + i_warp*m_glogs_num_f0s] -= 0.3*m_glogs[i+m_f0_params.num_f0s_per_oct + i_warp*m_glogs_num_f0s];
1030 // Median, sigma $ weights correction 1026 // Median, sigma $ weights correction
1031 m_glogs[i + i_warp*m_glogs_num_f0s] = (m_glogs[i + i_warp*m_glogs_num_f0s]-m_glogs_median_correction[i-m_glogs_init_f0s])*m_glogs_sigma_correction[i-m_glogs_init_f0s]*m_glogs_f0_preference_weights[i-m_glogs_init_f0s]; 1027 m_glogs[i + i_warp*m_glogs_num_f0s] = (m_glogs[i + i_warp*m_glogs_num_f0s]-m_glogs_median_correction[i-m_glogs_init_f0s])*m_glogs_sigma_correction[i-m_glogs_init_f0s]*m_glogs_f0_preference_weights[i-m_glogs_init_f0s];