Changeset 252a080
 Timestamp:
 Oct 1, 2009, 5:36:01 PM (11 years ago)
 Branches:
 feature/autosink, feature/constantq, feature/pitchshift, feature/pydocstrings, feature/timestretch, master, pitchshift, sampler, timestretch, yinfft+
 Children:
 e6c11e3
 Parents:
 04d50b0
 File:

 1 edited
Legend:
 Unmodified
 Added
 Removed

src/onset/onsetdetection.c
r04d50b0 r252a080 35 35 smpl_t threshold; /**< minimum norm threshold for phase and specdiff */ 36 36 fvec_t *oldmag; /**< previous norm vector */ 37 fft_data_t *meas; /**< current onset detection measure complex vector */38 37 fvec_t *dev1 ; /**< current onset detection measure vector */ 39 38 fvec_t *theta1; /**< previous phase vector, one frame behind */ … … 75 74 onset>data[i][0] = 0.; 76 75 for (j=0;j<nbins; j++) { 77 o>dev1>data[i][j] = aubio_unwrap2pi( 78 fftgrain>phas[i][j] 79 2.0*o>theta1>data[i][j]+ 80 o>theta2>data[i][j]); 81 #ifdef HAVE_COMPLEX_H 82 o>meas[j] = fftgrain>norm[i][j]*CEXPC(I*o>dev1>data[i][j]); 83 /* sum on all bins */ 84 onset>data[i][0] += //(fftgrain>norm[i][j]); 85 SQRT(SQR( REAL(o>oldmag>data[i][j]o>meas[j]) ) 86 + SQR( IMAG(o>oldmag>data[i][j]o>meas[j]) ) 87 ); 88 #else 89 o>meas[j] = (fftgrain>norm[i][j])*COS(o>dev1>data[i][j]); 90 o>meas[(nbins1)*21j] = (fftgrain>norm[i][j])*SIN(o>dev1>data[i][j]); 91 /* sum on all bins */ 92 onset>data[i][0] += //(fftgrain>norm[i][j]); 93 SQRT(SQR( (o>oldmag>data[i][j]o>meas[j]) ) 94 + SQR( (o>meas[(nbins1)*21j]) ) 95 ); 96 #endif 76 // compute the predicted phase 77 o>dev1>data[i][j] = 2. * o>theta1>data[i][j]  o>theta2>data[i][j]; 78 // compute the euclidean distance in the complex domain 79 // sqrt ( r_1^2 + r_2^2  2 * r_1 * r_2 * \cos ( \phi_1  \phi_2 ) ) 80 onset>data[i][0] += 81 SQRT (ABS (SQR (o>oldmag>data[i][j]) + SQR (fftgrain>norm[i][j]) 82  2. * o>oldmag>data[i][j] * fftgrain>norm[i][j] 83 * COS (o>dev1>data[i][j]  fftgrain>phas[i][j]))); 97 84 /* swap old phase data (need to remember 2 frames behind)*/ 98 85 o>theta2>data[i][j] = o>theta1>data[i][j]; … … 235 222 case aubio_onset_complex: 236 223 o>oldmag = new_fvec(rsize,channels); 237 /** bug: must be complex array */238 o>meas = AUBIO_ARRAY(fft_data_t,size+1);239 for (i=0; i<size+1; i++) o>meas[i] = 0;240 224 o>dev1 = new_fvec(rsize,channels); 241 225 o>theta1 = new_fvec(rsize,channels); … … 309 293 /* the other approaches will need some more memory spaces */ 310 294 case aubio_onset_complex: 311 AUBIO_FREE(o>meas);312 295 del_fvec(o>oldmag); 313 296 del_fvec(o>dev1);
Note: See TracChangeset
for help on using the changeset viewer.