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]); }
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; }
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; }
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; }
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; }
static PyObject * Py_filterbank_get_coeffs (Py_filterbank * self, PyObject *unused) { return (PyObject *)PyAubio_CFmatToArray( aubio_filterbank_get_coeffs (self->o) ); }