[tests] [filterbank] add get/set power/norm calls
[aubio.git] / tests / src / spectral / test-filterbank.c
index 4ab3fcf..8b487c2 100644 (file)
@@ -1,43 +1,47 @@
-#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;