コード例 #1
0
ファイル: test-filterbank_mel.c プロジェクト: daphne-yu/aubio
int
main (void)
{
  /* allocate some memory */
  uint_t win_s = 512;           /* fft size */
  uint_t n_filters = 40;        /* number of filters */
  cvec_t *in = new_cvec (win_s);      /* input buffer */
  fvec_t *out = new_fvec (win_s);     /* input buffer */
  fmat_t *coeffs = NULL;
  smpl_t samplerate = 16000.;

  /* allocate fft and other memory space */
  aubio_filterbank_t *o = new_aubio_filterbank (n_filters, win_s);

  /* assign Mel-frequency coefficients */
  aubio_filterbank_set_mel_coeffs_slaney (o, samplerate);

  coeffs = aubio_filterbank_get_coeffs (o);
  if (coeffs == NULL) {
    return -1;
  }

  //fmat_print (coeffs);

  //fprintf(stderr, "%f\n", fvec_sum(coeffs));

  aubio_filterbank_do (o, in, out);

  del_aubio_filterbank (o);
  del_cvec (in);
  del_fvec (out);
  aubio_cleanup ();

  return 0;
}
コード例 #2
0
void ofxAubioMelBands::setup(string method, int buf_s, int hop_s, int samplerate)
{
    ofxAubioBlock::setup(method, buf_s, hop_s, samplerate);
    pv = new_aubio_pvoc(buf_s, hop_s);
    spectrum = new_cvec(buf_s);
    fb = new_aubio_filterbank(40, buf_s);
    aubio_filterbank_set_mel_coeffs_slaney(fb, samplerate);
    bands = new_fvec(40);
    energies = bands->data;

    if (pv && fb) {
        ofLogNotice() << "created ofxAubioMelBands(" << method
          << ", " << buf_size
          << ", " << hop_size
          << ", " << samplerate
          << ")";
    }
}
コード例 #3
0
ファイル: test-filterbank.c プロジェクト: daphne-yu/aubio
int
main (void)
{
  /* allocate some memory */
  uint_t win_s = 1024;          /* window size */
  uint_t n_filters = 13;        /* number of filters */
  cvec_t *in = new_cvec (win_s);      /* input buffer */
  fvec_t *out = new_fvec (win_s);     /* input buffer */
  fmat_t *coeffs = NULL;

  /* allocate fft and other memory space */
  aubio_filterbank_t *o = new_aubio_filterbank (n_filters, win_s);

  coeffs = aubio_filterbank_get_coeffs (o);
  if (coeffs == NULL) {
    return -1;
  }

  /*
  if (fvec_max (coeffs) != 0.) {
    return -1;
  }

  if (fvec_min (coeffs) != 0.) {
    return -1;
  }
  */

  fmat_print (coeffs);

  aubio_filterbank_do (o, in, out);

  del_aubio_filterbank (o);
  del_cvec (in);
  del_fvec (out);
  aubio_cleanup ();

  return 0;
}
コード例 #4
0
ファイル: mfcc.c プロジェクト: apanly/hackprinceton13
aubio_mfcc_t *
new_aubio_mfcc (uint_t win_s, uint_t n_filters, uint_t n_coefs,
    uint_t samplerate)
{

  /* allocate space for mfcc object */
  aubio_mfcc_t *mfcc = AUBIO_NEW (aubio_mfcc_t);

  uint_t i, j;

  mfcc->win_s = win_s;
  mfcc->samplerate = samplerate;
  mfcc->n_filters = n_filters;
  mfcc->n_coefs = n_coefs;

  /* filterbank allocation */
  mfcc->fb = new_aubio_filterbank (n_filters, mfcc->win_s);
  aubio_filterbank_set_mel_coeffs_slaney (mfcc->fb, samplerate);

  /* allocating buffers */
  mfcc->in_dct = new_fvec (n_filters);

  mfcc->dct_coeffs = new_fmat (n_coefs, n_filters);

  /* compute DCT transform dct_coeffs[i][j] as
     cos ( j * (i+.5) * PI / n_filters ) */
  smpl_t scaling = 1. / SQRT (n_filters / 2.);
  for (i = 0; i < n_filters; i++) {
    for (j = 0; j < n_coefs; j++) {
      mfcc->dct_coeffs->data[i][j] =
          scaling * COS (j * (i + 0.5) * PI / n_filters);
    }
    mfcc->dct_coeffs->data[i][0] *= SQRT (2.) / 2.;
  }

  return mfcc;
};
コード例 #5
0
ファイル: test-filterbank.c プロジェクト: iKala/aubio
int main ()
{
  uint_t win_s = 1024; // window size
  uint_t n_filters = 13; // number of filters

  cvec_t *in_spec = new_cvec (win_s); // input vector of samples
  fvec_t *out_filters = new_fvec (n_filters); // per-band outputs

  // create filterbank object
  aubio_filterbank_t *o = new_aubio_filterbank (n_filters, win_s);

  // apply filterbank ten times
  uint_t n = 10;
  while (n) {
    aubio_filterbank_do (o, in_spec, out_filters);
    n--;
  }

  // print out filterbank coeffs
  fmat_t *coeffs; // pointer to the coefficients
  coeffs = aubio_filterbank_get_coeffs (o);
  fmat_print (coeffs);

  aubio_filterbank_set_coeffs (o, coeffs);
  coeffs = aubio_filterbank_get_coeffs (o);
  fmat_print (coeffs);

  //fvec_print (out_filters);

  // clean up
  del_aubio_filterbank (o);
  del_cvec (in_spec);
  del_fvec (out_filters);
  aubio_cleanup ();

  return 0;
}
コード例 #6
0
ファイル: test-filterbank_mel.c プロジェクト: XunjunYin/aubio
int main (void)
{
    uint_t samplerate = 16000; // samplerate of signal to filter
    uint_t win_s = 512; // fft size
    uint_t n_filters = 40; // number of filters

    cvec_t *in_spec = new_cvec (win_s); // input vector of samples
    fvec_t *out_filters = new_fvec (n_filters); // per-band outputs

    // create filterbank object
    aubio_filterbank_t *o = new_aubio_filterbank (n_filters, win_s);

    // assign Mel-frequency coefficients
    aubio_filterbank_set_mel_coeffs_slaney (o, samplerate);

    // apply filterbank ten times
    uint_t n = 10;
    while (n) {
        aubio_filterbank_do (o, in_spec, out_filters);
        n--;
    }

    // print out filter coefficients
    fmat_t *coeffs; // pointer to the coefficients
    coeffs = aubio_filterbank_get_coeffs (o);
    fmat_print (coeffs);

    //fvec_print (out_filters);

    del_aubio_filterbank (o);
    del_cvec (in_spec);
    del_fvec (out_filters);
    aubio_cleanup ();

    return 0;
}