src/mathutils.{c,h}: change prototype from aubio_window to new_aubio_window, allocati...
authorPaul Brossier <piem@piem.org>
Fri, 25 Sep 2009 02:20:27 +0000 (04:20 +0200)
committerPaul Brossier <piem@piem.org>
Fri, 25 Sep 2009 02:20:27 +0000 (04:20 +0200)
src/mathutils.c
src/mathutils.h
src/pitch/pitchfcomb.c
src/pitch/pitchyinfft.c
src/spectral/phasevoc.c
swig/aubio.i

index d39cd6f72f2e49409653129ee7c767ffbd3b0245..92e93ff826996a64c4ae068895ee047fdd0a6573 100644 (file)
 #include "mathutils.h"
 #include "config.h"
 
-void aubio_window(smpl_t *w, uint_t size, aubio_window_type wintype) {
+fvec_t * new_aubio_window(uint_t size, aubio_window_type wintype) {
+  // create fvec of size x 1 channel
+  fvec_t * win = new_fvec( size, 1);
+  smpl_t * w = win->data[0];
   uint_t i;
   switch(wintype) {
     case aubio_win_rectangle:
@@ -71,6 +74,7 @@ void aubio_window(smpl_t *w, uint_t size, aubio_window_type wintype) {
     default:
       break;
   }
+  return win;
 }
 
 smpl_t aubio_unwrap2pi(smpl_t phase) {
index 6e51586df39ef2c1cce0045e3cb3efe41be9b7d2..54c21b43c0301c77904e278dd44c89abf8716f5e 100644 (file)
@@ -55,7 +55,7 @@ typedef enum {
 } aubio_window_type;
 
 /** create window */
-void aubio_window(smpl_t *w, uint_t size, aubio_window_type wintype);
+fvec_t * new_aubio_window(uint_t size, aubio_window_type wintype);
 
 /** principal argument
  *
index 92d60f23027c8f76d7a0cab7970b53cce140a4ca..45a5a1a453d76551a799febbce0916e82f6ae74e 100644 (file)
@@ -53,8 +53,7 @@ aubio_pitchfcomb_t * new_aubio_pitchfcomb (uint_t bufsize, uint_t hopsize, uint_
   p->fftOut       = new_cvec(bufsize,1);
   p->fftLastPhase = new_fvec(bufsize,1);
   p->fft = new_aubio_fft(bufsize, 1);
-  p->win = new_fvec(bufsize,1);
-  aubio_window(p->win->data[0], bufsize, aubio_win_hanning);
+  p->win = new_aubio_window(bufsize, aubio_win_hanning);
   return p;
 }
 
index b8c18e02b69a4bf161d9404e6650a835a8d2d16e..862a48375d6fa8b2c65d25058ddc7f8fc64095fe 100644 (file)
@@ -54,8 +54,7 @@ aubio_pitchyinfft_t * new_aubio_pitchyinfft (uint_t bufsize)
   p->sqrmag = new_fvec(bufsize,1);
   p->res    = new_cvec(bufsize,1);
   p->yinfft = new_fvec(bufsize/2+1,1);
-  p->win    = new_fvec(bufsize,1);
-  aubio_window(p->win->data[0], bufsize, aubio_win_hanningz);
+  p->win    = new_aubio_window(bufsize, aubio_win_hanningz);
   p->weight      = new_fvec(bufsize/2+1,1);
   {
     uint_t i = 0, j = 1;
index 0801951913c05aacabe4b8330abba19569140706..486ad6799ed4d9e23b4a9da7e5552bb6ca380bd1 100644 (file)
@@ -34,7 +34,7 @@ struct _aubio_pvoc_t {
   fvec_t * synthold;  /** last input frame [win_s-hop_s] */
   fvec_t * data;      /** current input grain [win_s] */
   fvec_t * dataold;   /** last input frame [win_s-hop_s] */
-  smpl_t * w;         /** grain window [win_s] */
+  fvec_t * w;         /** grain window [win_s] */
 };
 
 
@@ -53,7 +53,7 @@ void aubio_pvoc_do(aubio_pvoc_t *pv, fvec_t * datanew, cvec_t *fftgrain) {
     aubio_pvoc_swapbuffers(pv->data->data[i],pv->dataold->data[i],
         datanew->data[i],pv->win_s,pv->hop_s);
     /* windowing */
-    for (j=0; j<pv->win_s; j++) pv->data->data[i][j] *= pv->w[j];
+    fvec_weight(pv->data, pv->w);
   }
   /* shift */
   vec_shift(pv->data);
@@ -95,8 +95,7 @@ aubio_pvoc_t * new_aubio_pvoc (uint_t win_s, uint_t hop_s, uint_t channels) {
   /* new input output */
   pv->dataold  = new_fvec  (win_s-hop_s, channels);
   pv->synthold = new_fvec (win_s-hop_s, channels);
-  pv->w        = AUBIO_ARRAY(smpl_t,win_s);
-  aubio_window(pv->w,win_s,aubio_win_hanningz);
+  pv->w        = new_aubio_window (win_s, aubio_win_hanningz);
 
   pv->channels = channels;
   pv->hop_s    = hop_s;
@@ -110,8 +109,8 @@ void del_aubio_pvoc(aubio_pvoc_t *pv) {
   del_fvec(pv->synth);
   del_fvec(pv->dataold);
   del_fvec(pv->synthold);
+  del_fvec(pv->w);
   del_aubio_fft(pv->fft);
-  AUBIO_FREE(pv->w);
   AUBIO_FREE(pv);
 }
 
index 261c4afea3a63dbfbe84fe3d1bcfea0b7d847207..0234f0808c164afee5d79d04b8424efc8da98579 100644 (file)
@@ -127,7 +127,7 @@ typedef enum {
         aubio_win_parzen
 } aubio_window_type;
 
-void aubio_window(smpl_t *w, uint_t size, aubio_window_type wintype);
+fvec_t * new_aubio_window(uint_t size, aubio_window_type wintype);
 smpl_t aubio_unwrap2pi (smpl_t phase);
 smpl_t vec_mean(fvec_t *s);
 smpl_t vec_max(fvec_t *s);