Mercurial > hg > vamp-fanchirp
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]; |