Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/mathutils.c

    rade9afe r0dbdb40  
    3030    case aubio_win_rectangle:
    3131      for (i=0;i<size;i++)
    32         w[i] = 0.5;
     32        w[i] = 0.5; 
    3333      break;
    3434    case aubio_win_hamming:
     
    4848        w[i] = 0.42
    4949          - 0.50 * COS(    TWO_PI*i/(size-1.0))
    50           + 0.08 * COS(2.0*TWO_PI*i/(size-1.0));
     50          +     0.08 * COS(2.0*TWO_PI*i/(size-1.0));
    5151      break;
    5252    case aubio_win_blackman_harris:
    5353      for (i=0;i<size;i++)
    54         w[i] = 0.35875
     54        w[i] = 0.35875 
    5555          - 0.48829 * COS(    TWO_PI*i/(size-1.0))
    5656          + 0.14128 * COS(2.0*TWO_PI*i/(size-1.0))
     
    7474}
    7575
     76
    7677smpl_t aubio_unwrap2pi(smpl_t phase) {
    7778  /* mod(phase+pi,-2pi)+pi */
     
    7980}
    8081
    81 smpl_t vec_mean(fvec_t *s) {
     82
     83smpl_t vec_mean(fvec_t *s)
     84{
    8285  uint_t i,j;
    8386  smpl_t tmp = 0.0f;
     
    8891}
    8992
    90 smpl_t vec_sum(fvec_t *s) {
     93
     94smpl_t vec_sum(fvec_t *s)
     95{
    9196  uint_t i,j;
    9297  smpl_t tmp = 0.0f;
     
    97102}
    98103
    99 smpl_t vec_max(fvec_t *s) {
     104
     105smpl_t vec_max(fvec_t *s)
     106{
    100107  uint_t i,j;
    101108  smpl_t tmp = 0.0f;
     
    106113}
    107114
    108 smpl_t vec_min(fvec_t *s) {
     115smpl_t vec_min(fvec_t *s)
     116{
    109117  uint_t i,j;
    110118  smpl_t tmp = s->data[0][0];
     
    115123}
    116124
    117 uint_t vec_min_elem(fvec_t *s) {
     125
     126uint_t vec_min_elem(fvec_t *s)
     127{
    118128  uint_t i,j=0, pos=0.;
    119129  smpl_t tmp = s->data[0][0];
     
    126136}
    127137
    128 uint_t vec_max_elem(fvec_t *s) {
     138uint_t vec_max_elem(fvec_t *s)
     139{
    129140  uint_t i,j=0, pos=0.;
    130141  smpl_t tmp = 0.0f;
     
    137148}
    138149
    139 void vec_shift(fvec_t *s) {
     150void vec_shift(fvec_t *s)
     151{
    140152  uint_t i,j;
    141153  //smpl_t tmp = 0.0f;
     
    149161}
    150162
    151 smpl_t vec_local_energy(fvec_t * f) {
     163smpl_t vec_local_energy(fvec_t * f)
     164{
    152165  smpl_t locE = 0.;
    153166  uint_t i,j;
     
    158171}
    159172
    160 smpl_t vec_local_hfc(fvec_t * f) {
     173smpl_t vec_local_hfc(fvec_t * f)
     174{
    161175  smpl_t locE = 0.;
    162176  uint_t i,j;
     
    167181}
    168182
    169 smpl_t vec_alpha_norm(fvec_t * DF, smpl_t alpha) {
     183smpl_t vec_alpha_norm(fvec_t * DF, smpl_t alpha)
     184{
    170185  smpl_t tmp = 0.;
    171186  uint_t i,j;
     
    176191}
    177192
    178 void vec_dc_removal(fvec_t * mag) {
     193
     194void vec_dc_removal(fvec_t * mag)
     195{
    179196    smpl_t mini = 0.;
    180197    uint_t length = mag->length, i=0, j;
     
    185202}
    186203
    187 void vec_alpha_normalise(fvec_t * mag, uint_t alpha) {
     204
     205void vec_alpha_normalise(fvec_t * mag, uint_t alpha)
     206{
    188207  smpl_t alphan = 1.;
    189208  uint_t length = mag->length, i=0, j;
     
    194213}
    195214
     215
    196216void vec_add(fvec_t * mag, smpl_t threshold) {
    197217  uint_t length = mag->length, i=0, j;
     
    201221}
    202222
    203 void vec_adapt_thres(fvec_t * vec, fvec_t * tmp,
    204     uint_t post, uint_t pre) {
     223
     224void vec_adapt_thres(fvec_t * vec, fvec_t * tmp,
     225    uint_t post, uint_t pre)
     226{
    205227  uint_t length = vec->length, i=0, j;
    206228  for (j=0;j<length;j++) {
     
    210232
    211233smpl_t vec_moving_thres(fvec_t * vec, fvec_t * tmpvec,
    212     uint_t post, uint_t pre, uint_t pos) {
     234    uint_t post, uint_t pre, uint_t pos)
     235{
    213236  smpl_t * medar = (smpl_t *)tmpvec->data[0];
    214237  uint_t k;
     
    217240  /* post part of the buffer does not exist */
    218241  if (pos<post+1) {
    219     for (k=0;k<post+1-pos;k++)
     242    for (k=0;k<post+1-pos;k++) 
    220243      medar[k] = 0.; /* 0-padding at the beginning */
    221244    for (k=post+1-pos;k<win_length;k++)
     
    229252    for (k=0;k<length-pos+post+1;k++)
    230253      medar[k] = vec->data[0][k+pos-post];
    231     for (k=length-pos+post+1;k<win_length;k++)
     254    for (k=length-pos+post+1;k<win_length;k++) 
    232255      medar[k] = 0.; /* 0-padding at the end */
    233   }
     256  } 
    234257  return vec_median(tmpvec);
    235258}
     
    298321    for (frac = 0.; frac < 2.; frac = frac + step) {
    299322      res = aubio_quadfrac(s0, s1, s2, frac);
    300       if (res > resold)
     323      if (res > resold) 
    301324        resold = res;
    302       else {
     325      else {                           
    303326        exactpos += (frac-step)*2. - 1.;
    304327        break;
     
    322345      if (res < resold) {
    323346        resold = res;
    324       } else {
     347      } else {                         
    325348        exactpos += (frac-step)*span - span/2.;
    326349        break;
     
    337360
    338361uint_t vec_peakpick(fvec_t * onset, uint_t pos) {
    339   uint_t i=0, tmp=0;
    340   /*for (i=0;i<onset->channels;i++)*/
    341   tmp = (onset->data[i][pos] > onset->data[i][pos-1]
    342       &&  onset->data[i][pos] > onset->data[i][pos+1]
    343       &&  onset->data[i][pos] > 0.);
    344   return tmp;
     362        uint_t i=0, tmp=0;
     363        /*for (i=0;i<onset->channels;i++)*/
     364                tmp = (onset->data[i][pos] > onset->data[i][pos-1]
     365                        &&  onset->data[i][pos] > onset->data[i][pos+1]
     366                        &&      onset->data[i][pos] > 0.);
     367        return tmp;
    345368}
    346369
    347370smpl_t aubio_freqtomidi(smpl_t freq) {
    348   /* log(freq/A-2)/log(2) */
    349   smpl_t midi = freq/6.875;
    350   midi = LOG(midi)/0.69314718055995;
    351   midi *= 12;
    352   midi -= 3;
    353   return midi;
     371        /* log(freq/A-2)/log(2) */
     372        smpl_t midi = freq/6.875;
     373        midi = LOG(midi)/0.69314718055995;
     374        midi *= 12;
     375        midi -= 3; 
     376        return midi;
    354377}
    355378
    356379smpl_t aubio_miditofreq(smpl_t midi) {
    357   smpl_t freq = (midi+3.)/12.;
    358   freq = EXP(freq*0.69314718055995);
    359   freq *= 6.875;
    360   return freq;
     380        smpl_t freq = (midi+3.)/12.;
     381        freq = EXP(freq*0.69314718055995);
     382        freq *= 6.875;
     383        return freq;
    361384}
    362385
     
    381404}
    382405
    383 /** returns 1 if wassilence is 0 and RMS(ibuf)<threshold
     406
     407
     408/** returns 1 if wassilence is 0 and RMS(ibuf)<threshold
    384409 * \bug mono
    385410 */
     
    411436
    412437  if (loudness < threshold)
    413     return 1.;
     438      return 1.;
    414439  else
    415     return loudness;
     440      return loudness;
    416441}
    417442
     
    426451      }
    427452    //previous was positive
    428     } else if ( input->data[i][j] <= 0. ) {
     453    } else if ( input->data[i][j] <= 0. ){
    429454      zcr += 1;
    430455    }
     
    446471}
    447472
    448 void aubio_autocorr(fvec_t * input, fvec_t * output) {
    449   uint_t i = 0, j = 0, length = input->length;
    450   smpl_t * data = input->data[0];
    451   smpl_t * acf = output->data[0];
    452   smpl_t tmp =0.;
    453   for(i=0;i<length;i++){
    454     for(j=i;j<length;j++){
    455       tmp += data[j-i]*data[j];
    456     }
    457     acf[i] = tmp /(smpl_t)(length-i);
    458     tmp = 0.0;
    459   }
    460 }
    461 
    462 void aubio_cleanup(void) {
     473void aubio_autocorr(fvec_t * input, fvec_t * output){
     474        uint_t i = 0, j = 0, length = input->length;
     475        smpl_t * data = input->data[0];
     476        smpl_t * acf = output->data[0];
     477        smpl_t tmp =0.;
     478        for(i=0;i<length;i++){
     479                for(j=i;j<length;j++){
     480                        tmp += data[j-i]*data[j];
     481                }
     482                acf[i] = tmp /(smpl_t)(length-i);
     483                tmp = 0.0;
     484        }
     485}
     486
     487void aubio_cleanup(void)
     488{
    463489#if FFTW3_SUPPORT
    464   fftw_cleanup();
     490        fftw_cleanup();
    465491#else
    466492#if FFTW3F_SUPPORT
    467   fftwf_cleanup();
     493        fftwf_cleanup();
    468494#endif
    469495#endif
Note: See TracChangeset for help on using the changeset viewer.