-#define AUBIO_UNSTABLE 1
-
-#include <stdio.h>
#include <aubio.h>
-int
-main (void)
+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 */
+ 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);
- coeffs = aubio_filterbank_get_coeffs (o);
- if (coeffs == NULL) {
- return -1;
+ smpl_t power = aubio_filterbank_get_power(o);
+ smpl_t norm = aubio_filterbank_get_norm(o);
+ if (aubio_filterbank_set_power(o, power)) {
+ return 1;
}
-
- /*
- if (fvec_max (coeffs) != 0.) {
- return -1;
+ if (aubio_filterbank_set_norm(o, norm)) {
+ return 1;
}
- if (fvec_min (coeffs) != 0.) {
- return -1;
+ // 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);
- aubio_filterbank_do (o, in, out);
+ //fvec_print (out_filters);
+ // clean up
del_aubio_filterbank (o);
- del_cvec (in);
- del_fvec (out);
+ del_cvec (in_spec);
+ del_fvec (out_filters);
aubio_cleanup ();
return 0;