shithub: aubio

Download patch

ref: 17961b046446f15bb173c3800e08297066319b74
parent: ff68b34f21a309a5342b0d70f9be350f429f0143
author: Paul Brossier <piem@piem.org>
date: Sun Sep 16 20:50:05 EDT 2007

filterbank.{c,h}: add aubio_filterbank_get_channel function

--- a/src/filterbank.c
+++ b/src/filterbank.c
@@ -22,6 +22,7 @@
 #include "aubio_priv.h"
 #include "sample.h"
 #include "filterbank.h"
+#include "mathutils.h"
 
 #include "stdio.h"
 
@@ -124,8 +125,7 @@
 
   //filling the fft_freqs lookup table, which assigns the frequency in hz to each bin
   for(bin_cnt=0; bin_cnt<win_s; bin_cnt++){
-    //TODO: check the formula!
-    fft_freqs->data[0][bin_cnt]= (smpl_t)samplerate* (smpl_t)bin_cnt/ (smpl_t)win_s;
+    fft_freqs->data[0][bin_cnt]= aubio_bintofreq(bin_cnt, samplerate, win_s);
   }
 
   //building each filter table
@@ -213,4 +213,9 @@
   }
 
   return;
+}
+
+fvec_t * aubio_filterbank_getchannel(aubio_filterbank_t * f, uint_t channel) {
+  if ( (channel >= 0) && (channel < f->n_filters) ) { return f->filters[channel]; }
+  else { return NULL; }
 }
--- a/src/filterbank.h
+++ b/src/filterbank.h
@@ -67,6 +67,11 @@
 */
 void aubio_filterbank_do(aubio_filterbank_t * fb, cvec_t * in, fvec_t *out);
 
+/** return the vector containing the filter coefficients of one channel
+
+ */
+fvec_t * aubio_filterbank_getchannel(aubio_filterbank_t * f, uint_t channel);
+
 #ifdef __cplusplus
 }
 #endif
--