コード例 #1
0
ファイル: filterbank_mel.c プロジェクト: EQ4/aubio-mod
uint_t
aubio_filterbank_set_triangle_bands (aubio_filterbank_t * fb,
    fvec_t * freqs, smpl_t samplerate)
{

  fmat_t *filters = aubio_filterbank_get_coeffs (fb);
  uint_t n_filters = filters->height, win_s = filters->length;
  fvec_t *lower_freqs, *upper_freqs, *center_freqs;
  fvec_t *triangle_heights, *fft_freqs;

  uint_t fn;                    /* filter counter */
  uint_t bin;                   /* bin counter */

  smpl_t riseInc, downInc;

  /* freqs define the bands of triangular overlapping windows.
     throw a warning if filterbank object fb is too short. */
  if (freqs->length - 2 > n_filters) {
    AUBIO_WRN ("not enough filters, %d allocated but %d requested\n",
        n_filters, freqs->length - 2);
  }

  if (freqs->length - 2 < n_filters) {
    AUBIO_WRN ("too many filters, %d allocated but %d requested\n",
        n_filters, freqs->length - 2);
  }

  if (freqs->data[freqs->length - 1] > samplerate / 2) {
    AUBIO_WRN ("Nyquist frequency is %fHz, but highest frequency band ends at \
%fHz\n", samplerate / 2, freqs->data[freqs->length - 1]);
  }
コード例 #2
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;
}
コード例 #3
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;
}
コード例 #4
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;
}
コード例 #5
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;
}
コード例 #6
0
static PyObject * 
Py_filterbank_get_coeffs (Py_filterbank * self, PyObject *unused)
{
  return (PyObject *)PyAubio_CFmatToArray(
      aubio_filterbank_get_coeffs (self->o) );
}