Changeset 168337e for src/pitch/pitch.c


Ignore:
Timestamp:
Dec 4, 2009, 1:44:41 AM (15 years ago)
Author:
Paul Brossier <piem@piem.org>
Branches:
feature/autosink, feature/cnn, feature/cnn_org, feature/constantq, feature/crepe, feature/crepe_org, feature/pitchshift, feature/pydocstrings, feature/timestretch, fix/ffmpeg5, master, pitchshift, sampler, timestretch, yinfft+
Children:
02a01dd
Parents:
fc61225
Message:

src/pitch: switch to mono

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/pitch/pitch.c

    rfc61225 r168337e  
    114114aubio_pitch_t *
    115115new_aubio_pitch (char_t * pitch_mode,
    116     uint_t bufsize, uint_t hopsize, uint_t channels, uint_t samplerate)
     116    uint_t bufsize, uint_t hopsize, uint_t samplerate)
    117117{
    118118  aubio_pitch_t *p = AUBIO_NEW (aubio_pitch_t);
     
    142142  switch (p->type) {
    143143    case aubio_pitcht_yin:
    144       p->buf = new_fvec (bufsize, channels);
     144      p->buf = new_fvec (bufsize);
    145145      p->yin = new_aubio_pitchyin (bufsize);
    146146      p->callback = aubio_pitch_do_yin;
     
    148148      break;
    149149    case aubio_pitcht_mcomb:
    150       p->pv = new_aubio_pvoc (bufsize, hopsize, channels);
    151       p->fftgrain = new_cvec (bufsize, channels);
    152       p->mcomb = new_aubio_pitchmcomb (bufsize, hopsize, channels);
    153       p->filter = new_aubio_filter_c_weighting (samplerate, channels);
     150      p->pv = new_aubio_pvoc (bufsize, hopsize);
     151      p->fftgrain = new_cvec (bufsize);
     152      p->mcomb = new_aubio_pitchmcomb (bufsize, hopsize);
     153      p->filter = new_aubio_filter_c_weighting (samplerate);
    154154      p->callback = aubio_pitch_do_mcomb;
    155155      break;
    156156    case aubio_pitcht_fcomb:
    157       p->buf = new_fvec (bufsize, channels);
    158       p->fcomb = new_aubio_pitchfcomb (bufsize, hopsize, channels);
     157      p->buf = new_fvec (bufsize);
     158      p->fcomb = new_aubio_pitchfcomb (bufsize, hopsize);
    159159      p->callback = aubio_pitch_do_fcomb;
    160160      break;
    161161    case aubio_pitcht_schmitt:
    162       p->buf = new_fvec (bufsize, channels);
     162      p->buf = new_fvec (bufsize);
    163163      p->schmitt = new_aubio_pitchschmitt (bufsize);
    164164      p->callback = aubio_pitch_do_schmitt;
    165165      break;
    166166    case aubio_pitcht_yinfft:
    167       p->buf = new_fvec (bufsize, channels);
     167      p->buf = new_fvec (bufsize);
    168168      p->yinfft = new_aubio_pitchyinfft (bufsize);
    169169      p->callback = aubio_pitch_do_yinfft;
     
    211211aubio_pitch_slideblock (aubio_pitch_t * p, fvec_t * ibuf)
    212212{
    213   uint_t i, j = 0, overlap_size = 0;
     213  uint_t j = 0, overlap_size = 0;
    214214  overlap_size = p->buf->length - ibuf->length;
    215   for (i = 0; i < p->buf->channels; i++) {
    216     for (j = 0; j < overlap_size; j++) {
    217       p->buf->data[i][j] = p->buf->data[i][j + ibuf->length];
    218     }
    219   }
    220   for (i = 0; i < ibuf->channels; i++) {
    221     for (j = 0; j < ibuf->length; j++) {
    222       p->buf->data[i][j + overlap_size] = ibuf->data[i][j];
    223     }
     215  for (j = 0; j < overlap_size; j++) {
     216    p->buf->data[j] = p->buf->data[j + ibuf->length];
     217  }
     218  for (j = 0; j < ibuf->length; j++) {
     219    p->buf->data[j + overlap_size] = ibuf->data[j];
    224220  }
    225221}
     
    283279aubio_pitch_do (aubio_pitch_t * p, fvec_t * ibuf, fvec_t * obuf)
    284280{
    285   uint_t i;
    286281  p->callback (p, ibuf, obuf);
    287   for (i = 0; i < obuf->channels; i++) {
    288     p->freqconv (obuf->data[i][0], p->srate, p->bufsize);
    289   }
     282  obuf->data[0] = p->freqconv (obuf->data[0], p->srate, p->bufsize);
    290283}
    291284
     
    293286aubio_pitch_do_mcomb (aubio_pitch_t * p, fvec_t * ibuf, fvec_t * obuf)
    294287{
    295   uint_t i;
    296288  aubio_filter_do (p->filter, ibuf);
    297289  aubio_pvoc_do (p->pv, ibuf, p->fftgrain);
    298290  aubio_pitchmcomb_do (p->mcomb, p->fftgrain, obuf);
    299   for (i = 0; i < obuf->channels; i++) {
    300     obuf->data[i][0] = aubio_bintofreq (obuf->data[i][0], p->srate, p->bufsize);
    301   }
     291  obuf->data[0] = aubio_bintofreq (obuf->data[0], p->srate, p->bufsize);
    302292}
    303293
     
    306296{
    307297  smpl_t pitch = 0.;
    308   uint_t i;
    309298  aubio_pitch_slideblock (p, ibuf);
    310299  aubio_pitchyin_do (p->yin, p->buf, obuf);
    311   for (i = 0; i < obuf->channels; i++) {
    312     pitch = obuf->data[i][0];
    313     if (pitch > 0) {
    314       pitch = p->srate / (pitch + 0.);
    315     } else {
    316       pitch = 0.;
    317     }
    318     obuf->data[i][0] = pitch;
    319   }
     300  pitch = obuf->data[0];
     301  if (pitch > 0) {
     302    pitch = p->srate / (pitch + 0.);
     303  } else {
     304    pitch = 0.;
     305  }
     306  obuf->data[0] = pitch;
    320307}
    321308
     
    325312{
    326313  smpl_t pitch = 0.;
    327   uint_t i;
    328314  aubio_pitch_slideblock (p, ibuf);
    329315  aubio_pitchyinfft_do (p->yinfft, p->buf, obuf);
    330   for (i = 0; i < obuf->channels; i++) {
    331     pitch = obuf->data[i][0];
    332     if (pitch > 0) {
    333       pitch = p->srate / (pitch + 0.);
    334     } else {
    335       pitch = 0.;
    336     }
    337     obuf->data[i][0] = pitch;
    338   }
     316  pitch = obuf->data[0];
     317  if (pitch > 0) {
     318    pitch = p->srate / (pitch + 0.);
     319  } else {
     320    pitch = 0.;
     321  }
     322  obuf->data[0] = pitch;
    339323}
    340324
     
    342326aubio_pitch_do_fcomb (aubio_pitch_t * p, fvec_t * ibuf, fvec_t * out)
    343327{
    344   uint_t i;
    345328  aubio_pitch_slideblock (p, ibuf);
    346329  aubio_pitchfcomb_do (p->fcomb, p->buf, out);
    347   for (i = 0; i < out->channels; i++) {
    348     out->data[i][0] = aubio_bintofreq (out->data[i][0], p->srate, p->bufsize);
    349   }
     330  out->data[0] = aubio_bintofreq (out->data[0], p->srate, p->bufsize);
    350331}
    351332
     
    354335{
    355336  smpl_t period, pitch = 0.;
    356   uint_t i;
    357337  aubio_pitch_slideblock (p, ibuf);
    358338  aubio_pitchschmitt_do (p->schmitt, p->buf, out);
    359   for (i = 0; i < out->channels; i++) {
    360     period = out->data[i][0];
    361     if (period > 0) {
    362       pitch = p->srate / period;
    363     } else {
    364       pitch = 0.;
    365     }
    366     out->data[i][0] = pitch;
    367   }
    368 }
     339  period = out->data[0];
     340  if (period > 0) {
     341    pitch = p->srate / period;
     342  } else {
     343    pitch = 0.;
     344  }
     345  out->data[0] = pitch;
     346}
Note: See TracChangeset for help on using the changeset viewer.