Mercurial > hg > vamp-fanchirp
diff FChTransformF0gram.cpp @ 10:af59167b3d35 perf
size_t -> int throughout: permits better optimisation for tight for-loops, making the whole thing about 10% faster
author | Chris Cannam |
---|---|
date | Tue, 02 Oct 2018 13:21:15 +0100 |
parents | 54dd64b6cfc0 |
children | fc8f351d2cd6 |
line wrap: on
line diff
--- a/FChTransformF0gram.cpp Tue Oct 02 13:17:19 2018 +0100 +++ b/FChTransformF0gram.cpp Tue Oct 02 13:21:15 2018 +0100 @@ -478,7 +478,7 @@ /* f0 values of F0gram grid as string values */ vector<string> f0values; - size_t ind = 0; + int ind = 0; char f0String[10]; while (ind < m_num_f0s) { sprintf(f0String, "%4.2f", m_f0s[ind]); @@ -552,19 +552,19 @@ FChTransformF0gram::design_GLogS() { // total number & initial quantity of f0s - m_glogs_init_f0s = (size_t)(((double)m_f0_params.num_f0s_per_oct)*log2(5.0))+1; + m_glogs_init_f0s = (int)(((double)m_f0_params.num_f0s_per_oct)*log2(5.0))+1; m_glogs_num_f0s = (m_f0_params.num_octs+1)*m_f0_params.num_f0s_per_oct + m_glogs_init_f0s; // Initialize arrays m_glogs_f0 = new double[m_glogs_num_f0s]; m_glogs = new double[m_glogs_num_f0s*m_warp_params.num_warps]; - m_glogs_n = new size_t[m_glogs_num_f0s]; - m_glogs_index = new size_t[m_glogs_num_f0s]; + m_glogs_n = new int[m_glogs_num_f0s]; + m_glogs_index = new int[m_glogs_num_f0s]; // Compute f0 values m_glogs_harmonic_count = 0; double factor = (double)(m_warp_params.nsamps_twarp/2)/(double)(m_warp_params.nsamps_twarp/2+1); - for (size_t i = 0; i < m_glogs_num_f0s; i++) { + for (int i = 0; i < m_glogs_num_f0s; i++) { m_glogs_f0[i] = (m_f0_params.f0min/5.0)*pow(2.0,(double)i/(double)m_f0_params.num_f0s_per_oct); // for every f0 compute number of partials less or equal than m_fmax. m_glogs_n[i] = m_fmax*factor/m_glogs_f0[i]; @@ -573,18 +573,18 @@ } // Initialize arrays for interpolation - m_glogs_posint = new size_t[m_glogs_harmonic_count]; + m_glogs_posint = new int[m_glogs_harmonic_count]; m_glogs_posfrac = new double[m_glogs_harmonic_count]; m_glogs_interp = new double[m_glogs_harmonic_count]; // Compute int & frac of interpolation positions - size_t aux_index = 0; + int aux_index = 0; double aux_pos; - for (size_t i = 0; i < m_glogs_num_f0s; i++) { - for (size_t j = 1; j <= m_glogs_n[i]; j++) { + for (int i = 0; i < m_glogs_num_f0s; i++) { + for (int j = 1; j <= m_glogs_n[i]; j++) { // indice en el vector de largo t_warp/2+1 donde el ultimo valor corresponde a f=m_fmax aux_pos = ((double)j*m_glogs_f0[i])*((double)(m_warp_params.nsamps_twarp/2+1))/m_fmax; - m_glogs_posint[aux_index] = (size_t)aux_pos; + m_glogs_posint[aux_index] = (int)aux_pos; m_glogs_posfrac[aux_index] = aux_pos - (double)m_glogs_posint[aux_index]; aux_index++; } @@ -592,22 +592,22 @@ // Third harmonic attenuation double aux_third_harmonic; - m_glogs_third_harmonic_posint = new size_t[(m_f0_params.num_octs+1)*m_f0_params.num_f0s_per_oct]; + m_glogs_third_harmonic_posint = new int[(m_f0_params.num_octs+1)*m_f0_params.num_f0s_per_oct]; m_glogs_third_harmonic_posfrac = new double[(m_f0_params.num_octs+1)*m_f0_params.num_f0s_per_oct]; - for (size_t i = 0; i < (m_f0_params.num_octs+1)*m_f0_params.num_f0s_per_oct; i++) { + for (int i = 0; i < (m_f0_params.num_octs+1)*m_f0_params.num_f0s_per_oct; i++) { aux_third_harmonic = (double)i + (double)m_glogs_init_f0s - ((double)m_f0_params.num_f0s_per_oct)*log2(3.0); - m_glogs_third_harmonic_posint[i] = (size_t)aux_third_harmonic; + m_glogs_third_harmonic_posint[i] = (int)aux_third_harmonic; m_glogs_third_harmonic_posfrac[i] = aux_third_harmonic - (double)(m_glogs_third_harmonic_posint[i]); } m_glogs_third_harmonic = new double[(m_f0_params.num_octs+1)*m_f0_params.num_f0s_per_oct]; // Fifth harmonic attenuation double aux_fifth_harmonic; - m_glogs_fifth_harmonic_posint = new size_t[(m_f0_params.num_octs+1)*m_f0_params.num_f0s_per_oct]; + m_glogs_fifth_harmonic_posint = new int[(m_f0_params.num_octs+1)*m_f0_params.num_f0s_per_oct]; m_glogs_fifth_harmonic_posfrac = new double[(m_f0_params.num_octs+1)*m_f0_params.num_f0s_per_oct]; - for (size_t i = 0; i < (m_f0_params.num_octs+1)*m_f0_params.num_f0s_per_oct; i++) { + for (int i = 0; i < (m_f0_params.num_octs+1)*m_f0_params.num_f0s_per_oct; i++) { aux_fifth_harmonic = (double)i + (double)m_glogs_init_f0s - ((double)m_f0_params.num_f0s_per_oct)*log2(5.0); - m_glogs_fifth_harmonic_posint[i] = (size_t)aux_fifth_harmonic; + m_glogs_fifth_harmonic_posint[i] = (int)aux_fifth_harmonic; m_glogs_fifth_harmonic_posfrac[i] = aux_fifth_harmonic - (double)(m_glogs_fifth_harmonic_posint[i]); } m_glogs_fifth_harmonic = new double[(m_f0_params.num_octs+1)*m_f0_params.num_f0s_per_oct]; @@ -618,7 +618,7 @@ m_glogs_sigma_correction = new double[m_f0_params.num_octs*m_f0_params.num_f0s_per_oct]; m_glogs_hf_smoothing_window = new double[m_warp_params.nsamps_twarp/2+1]; double MIDI_value; - for (size_t i = 0; i < m_f0_params.num_octs*m_f0_params.num_f0s_per_oct; i++) { + for (int i = 0; i < m_f0_params.num_octs*m_f0_params.num_f0s_per_oct; i++) { MIDI_value = 69.0 + 12.0 * log2(m_glogs_f0[i + m_glogs_init_f0s]/440.0); 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)); m_glogs_f0_preference_weights[i] = (0.01 + m_glogs_f0_preference_weights[i]) / (1.01); @@ -629,7 +629,7 @@ double smooth_width = 1000.0; // hertz. double smooth_aux = (double)(m_warp_params.nsamps_twarp/2+1)*(m_fmax-smooth_width)/m_fmax; - for (size_t i = 0; i < m_warp_params.nsamps_twarp/2+1; i++) { + for (int i = 0; i < m_warp_params.nsamps_twarp/2+1; i++) { if (i < smooth_aux) { m_glogs_hf_smoothing_window[i] = 1.0; } else { @@ -672,7 +672,7 @@ // time instants of the original signal frame double t_orig[m_warpings.nsamps_torig]; //float * t_orig = new float [m_warpings.nsamps_torig]; - for (size_t ind = 0; ind < m_warpings.nsamps_torig; ind++) { + for (int ind = 0; ind < m_warpings.nsamps_torig; ind++) { t_orig[ind] = ((double)(ind + 1) - (double)m_warpings.nsamps_torig / 2.0) / m_warpings.fs_orig; } @@ -684,8 +684,8 @@ // maximum relative frequency deviation double freq_relative_max = 0; - for (size_t i = 0; i < m_warpings.nsamps_torig; i++) - for (size_t j = 0; j < m_warp_params.num_warps; j++) + for (int i = 0; i < m_warpings.nsamps_torig; i++) + for (int j = 0; j < m_warp_params.num_warps; j++) if (freq_relative_max < freq_relative[j * m_warpings.nsamps_torig + i]) freq_relative_max = freq_relative[j * m_warpings.nsamps_torig + i]; @@ -694,7 +694,7 @@ // time instants of the warped signal frame double t_warp[m_warp_params.nsamps_twarp]; - for (size_t ind = 0; ind < m_warp_params.nsamps_twarp; ind++) { + for (int ind = 0; ind < m_warp_params.nsamps_twarp; ind++) { t_warp[ind] = ((double)((int)(ind + 1)- (int)m_warp_params.nsamps_twarp / 2)) / (double)m_warpings.fs_warp; } @@ -708,14 +708,14 @@ /* output << "chirp_rates" << endl; - for (size_t j = 0; j < m_warp_params.num_warps; j++){ + for (int j = 0; j < m_warp_params.num_warps; j++){ output << m_warpings.chirp_rates[j]; output << " "; } output << endl << "freq_relative" << endl; - for (size_t i = 0; i < m_warpings.nsamps_torig; i++){ - for (size_t j = 0; j < m_warp_params.num_warps; j++){ + for (int i = 0; i < m_warpings.nsamps_torig; i++){ + for (int j = 0; j < m_warp_params.num_warps; j++){ output << freq_relative[j * m_warpings.nsamps_torig + i]; output << " "; } @@ -724,7 +724,7 @@ output << endl << "t_orig" << endl; - for (size_t i = 0; i < m_warpings.nsamps_torig; i++){ + for (int i = 0; i < m_warpings.nsamps_torig; i++){ output << t_orig[i] << endl ; } */ @@ -749,7 +749,7 @@ hypothesis: sampling frequency at the central point equals the original */ - m_warpings.pos_int = new size_t[m_warp_params.num_warps * m_warp_params.nsamps_twarp]; + m_warpings.pos_int = new int[m_warp_params.num_warps * m_warp_params.nsamps_twarp]; m_warpings.pos_frac = new double[m_warp_params.num_warps * m_warp_params.nsamps_twarp]; // vector of phase values @@ -759,14 +759,14 @@ // warped positions double *pos1 = new double[m_warp_params.nsamps_twarp*m_warp_params.num_warps]; - for (size_t i = 0; i < m_warp_params.num_warps; i++) { + for (int i = 0; i < m_warp_params.num_warps; i++) { // integration of relative frequency to obtain phase values cumtrapz(t_orig, freq_relative + i*(m_warpings.nsamps_torig), m_warpings.nsamps_torig, phi); // centering of phase values to force original frequency in the middle aux = phi[m_warpings.nsamps_torig/2]; - for (size_t j = 0; j < m_warpings.nsamps_torig; j++) { + for (int j = 0; j < m_warpings.nsamps_torig; j++) { phi[j] -= aux; } //for @@ -781,10 +781,10 @@ // % fractional value that defines the warped position // warps.pos1_frac = (double(pos1)' - double(pos1_int)); - for (size_t j = 0; j < m_warp_params.nsamps_twarp*m_warp_params.num_warps; j++) { + for (int j = 0; j < m_warp_params.nsamps_twarp*m_warp_params.num_warps; j++) { // previous sample index pos1[j] = pos1[j]*m_warpings.fs_orig + m_warpings.nsamps_torig/2 + 1; - m_warpings.pos_int[j] = (size_t) pos1[j]; + m_warpings.pos_int[j] = (int) pos1[j]; m_warpings.pos_frac[j] = pos1[j] - (double)(m_warpings.pos_int[j]); } //for @@ -806,7 +806,7 @@ m_warpings.chirp_rates[0] = -m_warp_params.alpha_max; double increment = (double) m_warp_params.alpha_max / ((m_warp_params.num_warps - 1) / 2); - for (size_t ind = 1; ind < m_warp_params.num_warps; ind++) { + for (int ind = 1; ind < m_warp_params.num_warps; ind++) { m_warpings.chirp_rates[ind] = m_warpings.chirp_rates[ind - 1] + increment; } // force zero value @@ -826,20 +826,20 @@ // fill positive values int ind_log = middle_point; - for (size_t ind = 0; ind < (m_warp_params.num_warps + 1) / 2; ind++) { + for (int ind = 0; ind < (m_warp_params.num_warps + 1) / 2; ind++) { m_warpings.chirp_rates[ind_log] = pow(10, exponent) - 1; exponent += increment; ind_log++; } // fill negative values - for (size_t ind = 0; ind < (m_warp_params.num_warps - 1) / 2; ind++) { + for (int ind = 0; ind < (m_warp_params.num_warps - 1) / 2; ind++) { m_warpings.chirp_rates[ind] = -m_warpings.chirp_rates[m_warp_params.num_warps - 1 - ind]; } } // compute relative frequency deviation - for (size_t i = 0; i < m_warpings.nsamps_torig; i++) - for (size_t j = 0; j < m_warp_params.num_warps; j++) + for (int i = 0; i < m_warpings.nsamps_torig; i++) + for (int j = 0; j < m_warp_params.num_warps; j++) freq_relative[j * m_warpings.nsamps_torig + i] = 1.0 + t_orig[i] * m_warpings.chirp_rates[j]; //freq_relative[i * m_warpings.nsamps_torig + j] = 1.0 + t_orig[i] * m_warpings.chirp_rates[j]; //freq_relative[i][j] = 1.0 + t_orig[i] * m_warpings.chirp_rates[j]; @@ -855,8 +855,8 @@ double *lp_LPFWindow_aux = new double[m_blockSize/2+1]; mp_LPFWindow = new double[m_blockSize/2+1]; - size_t i_max = (size_t) ((2.0*m_fmax/m_fs) * ( (double)m_blockSize / 2.0 + 1.0 )); - for (size_t i = 0; i < m_blockSize/2+1; i++) { + int i_max = (int) ((2.0*m_fmax/m_fs) * ( (double)m_blockSize / 2.0 + 1.0 )); + for (int i = 0; i < m_blockSize/2+1; i++) { if (i >= i_max) { lp_LPFWindow_aux[i] = 0.0; } else { @@ -866,7 +866,7 @@ LPF_time = (double*)fftw_malloc(sizeof ( double) * m_warpings.nsamps_torig); //memset((char*)LPF_time, 0, m_warpings.nsamps_torig * sizeof(double)); // sustituyo el memset por un for: - for (size_t i = 0; i < m_warpings.nsamps_torig; i++) { + for (int i = 0; i < m_warpings.nsamps_torig; i++) { LPF_time[i] = 0.0; } #ifdef DEBUG @@ -875,7 +875,7 @@ LPF_frequency = (fftw_complex*)fftw_malloc(sizeof ( fftw_complex) * (m_warpings.nsamps_torig/2 + 1)); //tamaño de la fft cuando la entrada es real //memset((char*)LPF_frequency, 0, sizeof(fftw_complex) * (m_warpings.nsamps_torig/2 + 1)); // sustituyo el memset por un for: - for (size_t i = 0; i < (m_warpings.nsamps_torig/2 + 1); i++) { + for (int i = 0; i < (m_warpings.nsamps_torig/2 + 1); i++) { LPF_frequency[i][0] = 0.0; LPF_frequency[i][1] = 0.0; } @@ -885,24 +885,24 @@ plan_forward_LPF = fftw_plan_dft_r2c_1d(m_blockSize, LPF_time, LPF_frequency, FFTW_ESTIMATE); plan_backward_LPF = fftw_plan_dft_c2r_1d(m_warpings.nsamps_torig, LPF_frequency, LPF_time, FFTW_ESTIMATE|FFTW_PRESERVE_INPUT); - size_t winWidth = 11; + int winWidth = 11; double *lp_hanningWindow = new double[winWidth]; double accum=0; - for (size_t i = 0; i < winWidth; i++) { + for (int i = 0; i < winWidth; i++) { lp_hanningWindow[i]=0.5*(1.0-cos(2*M_PI*(double)(i+1)/((double)winWidth+1.0))); accum+=lp_hanningWindow[i]; } - for (size_t i = 0; i < winWidth; i++) { //window normalization + for (int i = 0; i < winWidth; i++) { //window normalization lp_hanningWindow[i]=lp_hanningWindow[i]/accum; } - for (size_t i = 0; i < m_blockSize/2+1; i++) { + for (int i = 0; i < m_blockSize/2+1; i++) { //if (((i-(winWidth-1)/2)<0)||(i+(winWidth-1))/2>m_blockSize/2-1) {//consideramos winWidth impar, si la ventana sale del arreglo se rellena con el valor origianl if ( (i > (i_max + (winWidth-1)/2)) || (i <= (i_max - (winWidth-1)/2)) ) { mp_LPFWindow[i]=lp_LPFWindow_aux[i]; } else { accum=0; - for (size_t j = -((winWidth-1)/2); j <= (winWidth-1)/2; j++) { + for (int j = -((winWidth-1)/2); j <= (winWidth-1)/2; j++) { accum+=lp_LPFWindow_aux[i-j]*lp_hanningWindow[j+(winWidth-1)/2]; } mp_LPFWindow[i]=accum; @@ -915,7 +915,7 @@ void FChTransformF0gram::apply_LPF() { fftw_execute(plan_forward_LPF); - for (size_t i = 0; i < m_blockSize/2+1; i++) { + for (int i = 0; i < m_blockSize/2+1; i++) { LPF_frequency[i][0]*=mp_LPFWindow[i]; LPF_frequency[i][1]*=mp_LPFWindow[i]; } @@ -1011,10 +1011,10 @@ printf(" m_glogs_harmonic_count = %d.\n",m_glogs_harmonic_count); #endif - // size_t n = m_nfft/2 + 1; + // int n = m_nfft/2 + 1; // double *tbuf = in_window; - for (size_t i = 0; i < m_blockSize; i++) { + for (int i = 0; i < m_blockSize; i++) { LPF_time[i] = (double)(inputBuffers[0][i]) * m_timeWindow[i]; } @@ -1032,13 +1032,13 @@ /* Solo a modo de prueba, voy a poner la salida del filtrado en «in» y voy a mostrar la FFT de eso, para ver el efecto del filtrado. */ -// for (size_t i = 0; i < m_nfft; i++) { +// for (int i = 0; i < m_nfft; i++) { // in[i][0] = tbuf[i]; // in[i][1] = 0; // } // fftw_execute(planFFT); // double real, imag; -// for (size_t i=0; i<n; ++i) { // preincremento?? ver version de nacho +// for (int i=0; i<n; ++i) { // preincremento?? ver version de nacho // real = out[i][0]; // imag = out[i][1]; // feature.values.push_back(real*real + imag*imag); @@ -1047,7 +1047,7 @@ // float real; // float imag; -// for (size_t i=0; i<m_blockSize/2+1; i++) { +// for (int i=0; i<m_blockSize/2+1; i++) { // real = (float)(LPF_frequency[i][0]); // imag = (float)(LPF_frequency[i][1]); // feature.values.push_back(real*real+imag*imag); @@ -1058,14 +1058,14 @@ // Hanning window & FFT for all warp directions double max_glogs = -DBL_MAX; - size_t ind_max_glogs = 0; + int ind_max_glogs = 0; - for (size_t i_warp = 0; i_warp < m_warp_params.num_warps; i_warp++) { + for (int i_warp = 0; i_warp < m_warp_params.num_warps; i_warp++) { // Interpolate interp1q(LPF_time, (m_warpings.pos_int) + i_warp*m_warp_params.nsamps_twarp, m_warpings.pos_frac + i_warp*m_warp_params.nsamps_twarp, x_warping, m_warp_params.nsamps_twarp); // Apply window - for (size_t i = 0; i < m_warp_params.nsamps_twarp; i++) { + for (int i = 0; i < m_warp_params.nsamps_twarp; i++) { x_warping[i] *= mp_HanningWindow[i]; } @@ -1075,7 +1075,7 @@ // Copy result //memcpy(m_absFanChirpTransform + i_warp*(m_warp_params.nsamps_twarp/2+1), m_auxFanChirpTransform, (m_warp_params.nsamps_twarp/2+1)*sizeof(fftw_complex)); asi como esta no funciona double *aux_abs_fcht = m_absFanChirpTransform + i_warp*(m_warp_params.nsamps_twarp/2+1); - for (size_t i = 0; i < (m_warp_params.nsamps_twarp/2+1); i++) { + for (int i = 0; i < (m_warp_params.nsamps_twarp/2+1); i++) { aux_abs_fcht[i] = log10(1.0 + 10.0*sqrt(m_auxFanChirpTransform[i][0]*m_auxFanChirpTransform[i][0]+m_auxFanChirpTransform[i][1]*m_auxFanChirpTransform[i][1])); // smoothing high frequency values //aux_abs_fcht[i] *= m_glogs_hf_smoothing_window[i]; @@ -1084,10 +1084,10 @@ // ----------------------------------------------------------------------------------------- // GLogS interp1q(aux_abs_fcht, m_glogs_posint, m_glogs_posfrac, m_glogs_interp, m_glogs_harmonic_count); - size_t glogs_ind = 0; - for (size_t i = 0; i < m_glogs_num_f0s; i++) { + int glogs_ind = 0; + for (int i = 0; i < m_glogs_num_f0s; i++) { double glogs_accum = 0; - for (size_t j = 1; j <= m_glogs_n[i]; j++) { + for (int j = 1; j <= m_glogs_n[i]; j++) { glogs_accum += m_glogs_interp[glogs_ind++]; } m_glogs[i + i_warp*m_glogs_num_f0s] = glogs_accum/(double)m_glogs_n[i]; @@ -1096,18 +1096,18 @@ // Sub/super harmonic correction 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); 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); - for (size_t i = m_glogs_num_f0s-1; i >= m_glogs_init_f0s; i--) { + for (int i = m_glogs_num_f0s-1; i >= m_glogs_init_f0s; i--) { 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]); //m_glogs[i] -= MAX(m_glogs[i-m_f0_params.num_f0s_per_oct],m_glogs_third_harmonic[i-m_glogs_init_f0s]); } - for (size_t i = m_glogs_init_f0s; i < m_glogs_num_f0s-m_f0_params.num_f0s_per_oct; i++) { + for (int i = m_glogs_init_f0s; i < m_glogs_num_f0s-m_f0_params.num_f0s_per_oct; i++) { 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]; // Median, sigma $ weights correction 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]; } // Look for maximum value to determine best direction - for (size_t i = m_glogs_init_f0s; i < m_glogs_num_f0s-m_f0_params.num_f0s_per_oct; i++) { + for (int i = m_glogs_init_f0s; i < m_glogs_num_f0s-m_f0_params.num_f0s_per_oct; i++) { if (m_glogs[i + i_warp*m_glogs_num_f0s] > max_glogs) { max_glogs = m_glogs[i + i_warp*m_glogs_num_f0s]; ind_max_glogs = i_warp; @@ -1117,8 +1117,8 @@ // ---------------------------------------------------------------------------------------------- - for (size_t i=m_glogs_init_f0s; i< m_glogs_num_f0s - m_f0_params.num_f0s_per_oct; i++) { - //for (size_t i=0; i<(m_warp_params.nsamps_twarp/2+1); i++) { + for (int i=m_glogs_init_f0s; i< m_glogs_num_f0s - m_f0_params.num_f0s_per_oct; i++) { + //for (int i=0; i<(m_warp_params.nsamps_twarp/2+1); i++) { //feature.values.push_back((float)(m_warpings.pos_int[i])+ (float)(m_warpings.pos_frac[i])); //feature.values.push_back((float)(phi[i]*100000.0)); //feature.values.push_back((float)(t_orig[i])); @@ -1129,7 +1129,7 @@ switch (m_f0gram_mode) { case 1: max_glogs = -DBL_MAX; - for (size_t i_warp = 0; i_warp < m_warp_params.num_warps; i_warp++) { + for (int i_warp = 0; i_warp < m_warp_params.num_warps; i_warp++) { if (m_glogs[i + i_warp*m_glogs_num_f0s] > max_glogs) { max_glogs = m_glogs[i + i_warp*m_glogs_num_f0s]; ind_max_glogs = i_warp; @@ -1138,7 +1138,7 @@ feature.values.push_back((float)max_glogs); break; case 0: - feature.values.push_back((float)m_glogs[i+(size_t)ind_max_glogs*(size_t)m_glogs_num_f0s]); + feature.values.push_back((float)m_glogs[i+(int)ind_max_glogs*(int)m_glogs_num_f0s]); break; } //feature.values.push_back((float)m_glogs_hf_smoothing_window[i]); @@ -1166,20 +1166,20 @@ void FChTransformF0gram::design_time_window() { - size_t transitionWidth = (size_t)m_blockSize/128 + 1;; + int transitionWidth = (int)m_blockSize/128 + 1;; m_timeWindow = new double[m_blockSize]; double *lp_transitionWindow = new double[transitionWidth]; //memset(m_timeWindow, 1.0, m_blockSize); - for (size_t i = 0; i < m_blockSize; i++) { + for (int i = 0; i < m_blockSize; i++) { m_timeWindow[i] = 1.0; } - for (size_t i = 0; i < transitionWidth; i++) { + for (int i = 0; i < transitionWidth; i++) { lp_transitionWindow[i]=0.5*(1.0-cos(2*M_PI*(double)(i+1)/((double)transitionWidth+1.0))); } - for (size_t i = 0; i < transitionWidth/2; i++) { + for (int i = 0; i < transitionWidth/2; i++) { m_timeWindow[i] = lp_transitionWindow[i]; m_timeWindow[m_blockSize-1-i] = lp_transitionWindow[transitionWidth-1-i]; }