shithub: aubio

Download patch

ref: 02418f6a5f935cfe38de8c5ed40ede2afb4a1a17
parent: ed766c7e98fc5f54bc62f2d07fef472284c9c0ea
author: Paul Brossier <[email protected]>
date: Tue Jul 10 11:26:12 EDT 2012

tests/: move file around to match src/

--- a/tests/python/src/onset/peakpick.py
+++ /dev/null
@@ -1,77 +1,0 @@
-from template import aubio_unit_template
-from localaubio import *
-
-buf_size = 7 
-channels = 1
-
-class peakpick_unit(aubio_unit_template):
-
-  def setUp(self):
-    self.o = new_aubio_peakpicker(1)
-    aubio_peakpicker_set_threshold (0.1)
-    pass
-
-  def tearDown(self):
-    del_aubio_peakpicker(self.o)
-    pass
-
-  def test_peakpick(self):
-    """ create and delete peakpick """
-    pass
-
-  def test_peakpick_zeroes(self):
-    """ check peakpick run on a vector full of zero returns no peak. """
-    self.assertEqual(0., aubio_peakpicker_get_thresholded_input(self.o))
-
-  def test_peakpick_impulse(self):
-    """ check peakpick detects a single impulse as a peak. """
-    """ check two consecutive peaks are detected as one. """
-    #print 
-    for index in range(0,buf_size-1):
-      input = new_fvec(buf_size, channels)
-      fvec_write_sample(input, 1000., 0, index)
-      fvec_write_sample(input, 1000./2, 0, index+1)
-      #print "%2s" % index, aubio_peakpicker_do(self.o, input), "|",
-      #for i in range(buf_size): print fvec_read_sample(input, 0, i),
-      #print
-      del_fvec(input)
-
-  def test_peakpick_consecutive_peaks(self):
-    """ check two consecutive peaks are detected as one. """
-    #print 
-    for index in range(0,buf_size-4):
-      input = new_fvec(buf_size, channels)
-      fvec_write_sample(input, 1000./2, 0, index)
-      fvec_write_sample(input, 1000., 0, index+1)
-      fvec_write_sample(input, 1000., 0, index+3)
-      fvec_write_sample(input, 1000./2, 0, index+4)
-      peak_pick_result = aubio_peakpicker_do(self.o, input)
-      if index == 2:
-        # we are at the peak. check the result is after current sample,
-        # and not after next one
-        self.failIf( 1. >= peak_pick_result )
-        self.failIf( 2. < peak_pick_result )
-      else: self.assertEqual(0., peak_pick_result)
-      del_fvec(input)
-    for index in range(buf_size-4,buf_size-1):
-      input = new_fvec(buf_size, channels)
-      fvec_write_sample(input, 1000./2, 0, index)
-      fvec_write_sample(input, 1000., 0, index+1)
-      peak_pick_result = aubio_peakpicker_do(self.o, input)
-      self.assertEqual(0., peak_pick_result)
-      del_fvec(input)
-
-  def test_peakpick_set_threshold(self):
-    """ test aubio_peakpicker_set_threshold """
-    new_threshold = 0.1
-    aubio_peakpicker_set_threshold(self.o, new_threshold)
-    self.assertCloseEnough(new_threshold, aubio_peakpicker_get_threshold(self.o))
-
-  def test_peakpick_get_threshold(self):
-    """ test aubio_peakpicker_get_threshold """
-    new_threshold = aubio_peakpicker_get_threshold(self.o) 
-    aubio_peakpicker_set_threshold(self.o, new_threshold)
-    self.assertCloseEnough(new_threshold, aubio_peakpicker_get_threshold(self.o))
-
-if __name__ == '__main__':
-  unittest.main()
--- /dev/null
+++ b/tests/python/src/onset/peakpicker.py
@@ -1,0 +1,77 @@
+from template import aubio_unit_template
+from localaubio import *
+
+buf_size = 7 
+channels = 1
+
+class peakpick_unit(aubio_unit_template):
+
+  def setUp(self):
+    self.o = new_aubio_peakpicker(1)
+    aubio_peakpicker_set_threshold (0.1)
+    pass
+
+  def tearDown(self):
+    del_aubio_peakpicker(self.o)
+    pass
+
+  def test_peakpick(self):
+    """ create and delete peakpick """
+    pass
+
+  def test_peakpick_zeroes(self):
+    """ check peakpick run on a vector full of zero returns no peak. """
+    self.assertEqual(0., aubio_peakpicker_get_thresholded_input(self.o))
+
+  def test_peakpick_impulse(self):
+    """ check peakpick detects a single impulse as a peak. """
+    """ check two consecutive peaks are detected as one. """
+    #print 
+    for index in range(0,buf_size-1):
+      input = new_fvec(buf_size, channels)
+      fvec_write_sample(input, 1000., 0, index)
+      fvec_write_sample(input, 1000./2, 0, index+1)
+      #print "%2s" % index, aubio_peakpicker_do(self.o, input), "|",
+      #for i in range(buf_size): print fvec_read_sample(input, 0, i),
+      #print
+      del_fvec(input)
+
+  def test_peakpick_consecutive_peaks(self):
+    """ check two consecutive peaks are detected as one. """
+    #print 
+    for index in range(0,buf_size-4):
+      input = new_fvec(buf_size, channels)
+      fvec_write_sample(input, 1000./2, 0, index)
+      fvec_write_sample(input, 1000., 0, index+1)
+      fvec_write_sample(input, 1000., 0, index+3)
+      fvec_write_sample(input, 1000./2, 0, index+4)
+      peak_pick_result = aubio_peakpicker_do(self.o, input)
+      if index == 2:
+        # we are at the peak. check the result is after current sample,
+        # and not after next one
+        self.failIf( 1. >= peak_pick_result )
+        self.failIf( 2. < peak_pick_result )
+      else: self.assertEqual(0., peak_pick_result)
+      del_fvec(input)
+    for index in range(buf_size-4,buf_size-1):
+      input = new_fvec(buf_size, channels)
+      fvec_write_sample(input, 1000./2, 0, index)
+      fvec_write_sample(input, 1000., 0, index+1)
+      peak_pick_result = aubio_peakpicker_do(self.o, input)
+      self.assertEqual(0., peak_pick_result)
+      del_fvec(input)
+
+  def test_peakpick_set_threshold(self):
+    """ test aubio_peakpicker_set_threshold """
+    new_threshold = 0.1
+    aubio_peakpicker_set_threshold(self.o, new_threshold)
+    self.assertCloseEnough(new_threshold, aubio_peakpicker_get_threshold(self.o))
+
+  def test_peakpick_get_threshold(self):
+    """ test aubio_peakpicker_get_threshold """
+    new_threshold = aubio_peakpicker_get_threshold(self.o) 
+    aubio_peakpicker_set_threshold(self.o, new_threshold)
+    self.assertCloseEnough(new_threshold, aubio_peakpicker_get_threshold(self.o))
+
+if __name__ == '__main__':
+  unittest.main()
--- a/tests/src/Makefile.am
+++ b/tests/src/Makefile.am
@@ -1,37 +1,42 @@
 AM_CFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/examples
 AM_LDFLAGS = -L$(top_builddir)/src -laubio @FFTWLIB_LIBS@
 
-test_phasevoc_jack_CFLAGS = $(AM_CFLAGS) @JACK_CFLAGS@
-test_phasevoc_jack_LDADD  = $(AM_LDFLAGS) @JACK_LIBS@ 
+spectral_test_phasevoc_jack_CFLAGS = $(AM_CFLAGS) @JACK_CFLAGS@
+spectral_test_phasevoc_jack_LDADD  = $(AM_LDFLAGS) @JACK_LIBS@ 
 
-bin_PROGRAMS = \
-	test-hist \
-	test-scale \
-	test-cvec \
-	test-fvec \
-	test-window \
-	test-filter \
-	test-biquad \
-	test-resample \
-	test-peakpick \
-	test-phasevoc \
-	test-filterbank \
-	test-filterbank_mel \
-	test-mfcc \
-	test-phasevoc-jack \
-	test-onsetdetection \
-	test-pitchyin \
-	test-pitchyinfft \
-	test-pitchschmitt \
-	test-pitchfcomb \
-	test-pitchmcomb \
-	test-pitch \
-	test-onset \
-	test-mathutils \
-	test-tss
+noinst_PROGRAMS = \
+  test-fvec \
+  test-cvec \
+  test-mathutils \
+  test-mathutils-window \
+  pitch/test-pitchyin \
+  pitch/test-pitchyinfft \
+  pitch/test-pitch \
+  pitch/test-pitchmcomb \
+  pitch/test-pitchfcomb \
+  pitch/test-pitchschmitt \
+  temporal/test-cweighting \
+  temporal/test-resampler \
+  temporal/test-filter \
+  temporal/test-biquad \
+  temporal/test-aweighting \
+  onset/test-peakpicker \
+  onset/test-onset \
+  tempo/test-tempo \
+  tempo/test-beattracking \
+  spectral/test-fft \
+  spectral/test-specdesc \
+  spectral/test-phasevoc \
+  spectral/test-phasevoc-jack \
+  spectral/test-tss \
+  spectral/test-filterbank \
+  spectral/test-filterbank_mel \
+  spectral/test-mfcc \
+  utils/test-scale \
+  utils/test-hist
 
-run-tests: $(bin_PROGRAMS)
-	@for i in $(bin_PROGRAMS); do echo -n $$i\ ; ./$$i > /dev/null && echo OK || echo FAILED: $$?; done
+run-tests: $(noinst_PROGRAMS)
+	@for i in $(noinst_PROGRAMS); do echo -n $$i\ ; ./$$i > /dev/null && echo OK || echo FAILED: $$?; done
 
-run-valgrind-tests: $(bin_PROGRAMS)
-	@for i in $(bin_PROGRAMS); do echo $$i; valgrind .libs/lt-$$i 2>&1 | grep ERROR\ SUMMARY -A4; echo $$?; done
+run-valgrind-tests: $(noinst_PROGRAMS)
+	@for i in $(noinst_PROGRAMS); do echo $$i; valgrind .libs/lt-$$i 2>&1 | grep ERROR\ SUMMARY -A4; echo $$?; done
--- /dev/null
+++ b/tests/src/onset/test-onset.c
@@ -1,0 +1,22 @@
+#include <aubio.h>
+
+int main(){
+        /* allocate some memory */
+        uint_t win_s      = 1024;                       /* window size */
+        fvec_t * in       = new_fvec (win_s/4); /* input buffer */
+        fvec_t * out      = new_fvec (2);     /* input buffer */
+        aubio_onset_t * onset  = new_aubio_onset("complex", win_s, win_s/4, 44100.);
+        uint_t i = 0;
+
+        while (i < 10) {
+          aubio_onset_do (onset,in,out);
+          i++;
+        };
+
+        del_aubio_onset(onset);
+        del_fvec(in);
+        del_fvec(out);
+        aubio_cleanup();
+
+        return 0;
+}
--- /dev/null
+++ b/tests/src/onset/test-peakpicker.c
@@ -1,0 +1,22 @@
+#define AUBIO_UNSTABLE 1
+
+#include <aubio.h>
+
+int main(){
+        /* allocate some memory */
+        uint_t win_s      = 1024;                       /* window size */
+        fvec_t * in       = new_fvec (win_s); /* input buffer */
+        fvec_t * out      = new_fvec (1); /* input buffer */
+        aubio_peakpicker_t * o = new_aubio_peakpicker();
+        aubio_peakpicker_set_threshold (o, 0.3);
+
+        aubio_peakpicker_do(o, in, out);
+        aubio_peakpicker_do(o, in, out);
+        aubio_peakpicker_do(o, in, out);
+        aubio_peakpicker_do(o, in, out);
+
+        del_aubio_peakpicker(o);
+        del_fvec(in);
+        return 0;
+}
+
--- /dev/null
+++ b/tests/src/pitch/test-pitch.c
@@ -1,0 +1,26 @@
+#include <aubio.h>
+
+int
+main ()
+{
+  /* allocate some memory */
+  uint_t win_s = 1024;          /* window size */
+  uint_t hop_s = win_s / 4;     /* hop size */
+  uint_t samplerate = 44100;    /* samplerate */
+  fvec_t *in = new_fvec (hop_s);      /* input buffer */
+  fvec_t *out = new_fvec (1); /* input buffer */
+  aubio_pitch_t *o =
+      new_aubio_pitch ("default", win_s, hop_s, samplerate);
+  uint_t i = 0;
+
+  while (i < 100) {
+    aubio_pitch_do (o, in, out);
+    i++;
+  };
+
+  del_aubio_pitch (o);
+  del_fvec (in);
+  aubio_cleanup ();
+
+  return 0;
+}
--- /dev/null
+++ b/tests/src/pitch/test-pitchfcomb.c
@@ -1,0 +1,25 @@
+#define AUBIO_UNSTABLE 1
+
+#include <aubio.h>
+
+int main(){
+        /* allocate some memory */
+        uint_t win_s      = 1024;                       /* window size */
+        uint_t hop_s      = win_s/4;                    /* hop size */
+        fvec_t * in       = new_fvec (hop_s); /* input buffer */
+        fvec_t * out      = new_fvec (1);
+        aubio_pitchfcomb_t * o  = new_aubio_pitchfcomb (
+          win_s, hop_s);
+        uint_t i = 0;
+
+        while (i < 2) {
+          aubio_pitchfcomb_do (o,in, out);
+          i++;
+        };
+
+        del_aubio_pitchfcomb(o);
+        del_fvec(in);
+        aubio_cleanup();
+
+        return 0;
+}
--- /dev/null
+++ b/tests/src/pitch/test-pitchmcomb.c
@@ -1,0 +1,26 @@
+#define AUBIO_UNSTABLE 1
+
+#include <aubio.h>
+
+int main(){
+        /* allocate some memory */
+        uint_t win_s      = 1024;                       /* window size */
+        uint_t hop_s      = win_s/4;                    /* hop size */
+        cvec_t * in       = new_cvec (win_s); /* input buffer */
+        fvec_t * out      = new_fvec (1); /* input buffer */
+
+        aubio_pitchmcomb_t * o  = new_aubio_pitchmcomb(win_s, hop_s);
+        uint_t i = 0;
+
+        while (i < 1000) {
+          aubio_pitchmcomb_do (o,in, out);
+          i++;
+        };
+
+        del_aubio_pitchmcomb(o);
+        del_cvec(in);
+        del_fvec(out);
+        aubio_cleanup();
+
+        return 0;
+}
--- /dev/null
+++ b/tests/src/pitch/test-pitchschmitt.c
@@ -1,0 +1,25 @@
+#define AUBIO_UNSTABLE 1
+
+#include <aubio.h>
+
+int main(){
+        /* allocate some memory */
+        uint_t win_s      = 1024;                       /* window size */
+        fvec_t * in       = new_fvec (win_s); /* input buffer */
+        fvec_t * out = new_fvec (1); /* input buffer */
+        aubio_pitchschmitt_t * o  = new_aubio_pitchschmitt(win_s);
+        uint_t i = 0;
+
+        while (i < 1000) {
+          aubio_pitchschmitt_do (o,in, out);
+          i++;
+        };
+
+        del_aubio_pitchschmitt(o);
+        del_fvec(in);
+        del_fvec(out);
+        aubio_cleanup();
+
+        return 0;
+}
+
--- /dev/null
+++ b/tests/src/pitch/test-pitchyin.c
@@ -1,0 +1,24 @@
+#define AUBIO_UNSTABLE 1
+
+#include <aubio.h>
+
+int main(){
+        /* allocate some memory */
+        uint_t win_s      = 1024;                       /* window size */
+        fvec_t * in       = new_fvec (win_s); /* input buffer */
+        fvec_t * out      = new_fvec (win_s/2); /* input buffer */
+        aubio_pitchyin_t *p = new_aubio_pitchyin (win_s);
+        uint_t i = 0;
+
+        while (i < 10) {
+          aubio_pitchyin_do (p, in,out);
+          i++;
+        };
+
+        del_fvec(in);
+        del_fvec(out);
+        del_aubio_pitchyin(p);
+        aubio_cleanup();
+
+        return 0;
+}
--- /dev/null
+++ b/tests/src/pitch/test-pitchyinfft.c
@@ -1,0 +1,26 @@
+#define AUBIO_UNSTABLE 1
+
+#include <aubio.h>
+
+int main(){
+        /* allocate some memory */
+        uint_t win_s      = 1024;                       /* window size */
+        fvec_t * in       = new_fvec (win_s); /* input buffer */
+        fvec_t * out      = new_fvec (1); /* output pitch periods */
+        aubio_pitchyinfft_t * o  = new_aubio_pitchyinfft(win_s);
+        aubio_pitchyinfft_set_tolerance (o, 0.2);
+        uint_t i = 0;
+
+        while (i < 10) {
+          aubio_pitchyinfft_do (o,in,out);
+          i++;
+        };
+
+        del_aubio_pitchyinfft(o);
+        del_fvec(in);
+        del_fvec(out);
+        aubio_cleanup();
+
+        return 0;
+}
+
--- /dev/null
+++ b/tests/src/spectral/test-filterbank.c
@@ -1,0 +1,44 @@
+#define AUBIO_UNSTABLE 1
+
+#include <stdio.h>
+#include <aubio.h>
+
+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;
+}
--- /dev/null
+++ b/tests/src/spectral/test-filterbank_mel.c
@@ -1,0 +1,40 @@
+#define AUBIO_UNSTABLE 1
+
+#include <stdio.h>
+#include <aubio.h>
+
+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;
+}
--- /dev/null
+++ b/tests/src/spectral/test-mfcc.c
@@ -1,0 +1,30 @@
+#include <aubio.h>
+
+int
+main (void)
+{
+  /* allocate some memory */
+  uint_t win_s = 512;           /* fft size */
+  uint_t n_filters = 40;        /* number of filters */
+  uint_t n_coefs = 13;          /* number of coefficients */
+  cvec_t *in = new_cvec (win_s);      /* input buffer */
+  fvec_t *out = new_fvec (n_coefs);     /* input buffer */
+  smpl_t samplerate = 16000.;
+
+  /* allocate fft and other memory space */
+  aubio_mfcc_t *o = new_aubio_mfcc (win_s, n_filters, n_coefs, samplerate);
+
+  cvec_set (in, 1.);
+
+  aubio_mfcc_do (o, in, out);
+  fvec_print (out);
+  aubio_mfcc_do (o, in, out);
+  fvec_print (out);
+
+  del_aubio_mfcc (o);
+  del_cvec (in);
+  del_fvec (out);
+  aubio_cleanup ();
+
+  return 0;
+}
--- /dev/null
+++ b/tests/src/spectral/test-phasevoc-jack.c
@@ -1,0 +1,98 @@
+/** Test for phase vocoder in jack
+ *
+ * This program should start correctly, when jackd is started or when
+ * using JACK_START_SERVER=true and reconstruct each audio input channel
+ * on the corresponding output channel with some strange effects and a
+ * delay equal to the hop size (hop_s).
+ *
+ */
+
+#include <stdio.h>
+#include <unistd.h>  /* sleep() */
+#include <aubio.h>
+#include "jackio.h"
+
+uint_t testing  = 0;  /* change this to 1 to listen        */
+
+uint_t win_s    = 512;/* window size                       */
+uint_t hop_s    = 128;/* hop size                          */
+uint_t channels = 2;  /* number of audio channels          */
+uint_t midiin   = 4;  /* number of midi input channels     */
+uint_t midiout  = 2;  /* number of midi output channels    */
+uint_t pos      = 0;  /* frames%dspblocksize for jack loop */
+
+fvec_t * in[2];
+cvec_t * fftgrain[2];
+fvec_t * out[2];
+
+aubio_pvoc_t * pv[2];
+
+int aubio_process(float **input, float **output, int nframes);
+
+int main(){
+        /* allocate some memory */
+  uint_t i;
+    for (i=0;i<channels;i++) {
+        in[i]       = new_fvec (hop_s); /* input buffer       */
+        fftgrain[i] = new_cvec (win_s); /* fft norm and phase */
+        out[i]      = new_fvec (hop_s); /* output buffer      */
+        /* allocate fft and other memory space */
+        pv[i] = new_aubio_pvoc(win_s,hop_s);
+    }
+
+#ifdef HAVE_JACK
+        aubio_jack_t * jack_setup;
+        jack_setup  = new_aubio_jack(channels, channels, 
+            midiin, midiout,
+            (aubio_process_func_t)aubio_process);
+        aubio_jack_activate(jack_setup);
+        /* stay in main jack loop for 1 seconds only */
+        do {
+          sleep(1);
+        } while(testing);
+        aubio_jack_close(jack_setup);
+#else
+        fprintf(stderr, "WARNING: no jack support\n");
+#endif
+        
+    for (i=0;i<channels;i++) {
+        del_aubio_pvoc(pv[i]);
+        del_cvec(fftgrain[i]);
+        del_fvec(in[i]);
+        del_fvec(out[i]);
+    }
+        aubio_cleanup();
+        return 0;
+}
+
+int aubio_process(float **input, float **output, int nframes) {
+  uint_t i;       /*channels*/
+  uint_t j;       /*frames*/
+  for (j=0;j<(unsigned)nframes;j++) {
+    for (i=0;i<channels;i++) {
+      /* write input to datanew */
+      fvec_write_sample(in[i], input[i][j], pos);
+      /* put synthnew in output */
+      output[i][j] = fvec_read_sample(out[i], pos);
+    }
+    /*time for fft*/
+    if (pos == hop_s-1) {
+      /* block loop */
+    for (i=0;i<channels;i++) {
+      aubio_pvoc_do (pv[i], in[i], fftgrain[i]);
+      // zero phases of first channel
+      for (i=0;i<fftgrain[i]->length;i++) fftgrain[0]->phas[i] = 0.; 
+      // double phases of second channel
+      for (i=0;i<fftgrain[i]->length;i++) {
+        fftgrain[1]->phas[i] = 
+          aubio_unwrap2pi (fftgrain[1]->phas[i] * 2.); 
+      }
+      // copy second channel to third one
+      aubio_pvoc_rdo(pv[i], fftgrain[i], out[i]);
+      pos = -1;
+    }
+    }
+    pos++;
+  }
+  return 0;
+}
--- /dev/null
+++ b/tests/src/spectral/test-phasevoc.c
@@ -1,0 +1,30 @@
+/* test sample for phase vocoder */
+
+#include <stdio.h>
+#include <aubio.h>
+
+int main(){
+        uint_t win_s    = 1024; /* window size                       */
+        uint_t hop_s    = 256;  /* hop size                          */
+        /* allocate some memory */
+        fvec_t * in       = new_fvec (hop_s); /* input buffer       */
+        cvec_t * fftgrain = new_cvec (win_s); /* fft norm and phase */
+        fvec_t * out      = new_fvec (hop_s); /* output buffer      */
+        /* allocate fft and other memory space */
+        aubio_pvoc_t * pv = new_aubio_pvoc(win_s,hop_s);
+        /* fill input with some data */
+        printf("initialised\n");
+        /* execute stft */
+        aubio_pvoc_do (pv,in,fftgrain);
+        printf("computed forward\n");
+        /* execute inverse fourier transform */
+        aubio_pvoc_rdo(pv,fftgrain,out);
+        printf("computed backard\n");
+        del_aubio_pvoc(pv);
+        del_fvec(in);
+        del_cvec(fftgrain);
+        del_fvec(out);
+        aubio_cleanup();
+        printf("memory freed\n");
+        return 0;
+}
--- /dev/null
+++ b/tests/src/spectral/test-specdesc.c
@@ -1,0 +1,48 @@
+
+#define AUBIO_UNSTABLE 1
+
+#include <aubio.h>
+
+int
+main ()
+{
+  uint_t win_s = 1024;          /* window size */
+  cvec_t *in = new_cvec (win_s);      /* input buffer */
+  fvec_t *out = new_fvec (1); /* input buffer */
+
+  aubio_specdesc_t *o;
+  
+  o = new_aubio_specdesc ("energy", win_s);
+  aubio_specdesc_do (o, in, out);
+  del_aubio_specdesc (o);
+
+  o = new_aubio_specdesc ("energy", win_s);
+  aubio_specdesc_do (o, in, out);
+  del_aubio_specdesc (o);
+
+  o = new_aubio_specdesc ("hfc", win_s);
+  aubio_specdesc_do (o, in, out);
+  del_aubio_specdesc (o);
+
+  o = new_aubio_specdesc ("complex", win_s);
+  aubio_specdesc_do (o, in, out);
+  del_aubio_specdesc (o);
+
+  o = new_aubio_specdesc ("phase", win_s);
+  aubio_specdesc_do (o, in, out);
+  del_aubio_specdesc (o);
+
+  o = new_aubio_specdesc ("kl", win_s);
+  aubio_specdesc_do (o, in, out);
+  del_aubio_specdesc (o);
+
+  o = new_aubio_specdesc ("mkl", win_s);
+  aubio_specdesc_do (o, in, out);
+  del_aubio_specdesc (o);
+
+  del_cvec (in);
+  del_fvec (out);
+  aubio_cleanup ();
+
+  return 0;
+}
--- /dev/null
+++ b/tests/src/spectral/test-tss.c
@@ -1,0 +1,48 @@
+/* test sample for phase vocoder 
+ *
+ * this program should start correctly using JACK_START_SERVER=true and
+ * reconstruct each audio input frame perfectly on the corresponding input with
+ * a delay equal to the window size, hop_s.
+ */
+
+#include <stdio.h>
+#define AUBIO_UNSTABLE 1
+#include <aubio.h>
+
+int main(){
+	int i;
+        uint_t win_s    = 1024; /* window size                       */
+        uint_t hop_s    = 256;  /* hop size                          */
+        /* allocate some memory */
+        fvec_t * in       = new_fvec (hop_s); /* input buffer       */
+        cvec_t * fftgrain = new_cvec (win_s); /* fft norm and phase */
+        cvec_t * cstead   = new_cvec (win_s); /* fft norm and phase */
+        cvec_t * ctrans   = new_cvec (win_s); /* fft norm and phase */
+        fvec_t * stead    = new_fvec (hop_s); /* output buffer      */
+        fvec_t * trans    = new_fvec (hop_s); /* output buffer      */
+        /* allocate fft and other memory space */
+        aubio_pvoc_t * pv = new_aubio_pvoc (win_s,hop_s);
+        aubio_pvoc_t * pvt = new_aubio_pvoc(win_s,hop_s);
+        aubio_pvoc_t * pvs = new_aubio_pvoc(win_s,hop_s);
+
+	aubio_tss_t *  tss = new_aubio_tss(win_s,hop_s);
+        /* fill input with some data */
+        printf("initialised\n");
+        /* execute stft */
+	for (i = 0; i < 10; i++) {
+		aubio_pvoc_do (pv,in,fftgrain);
+		aubio_tss_do  (tss,fftgrain,ctrans,cstead);
+		aubio_pvoc_rdo(pvt,cstead,stead);
+		aubio_pvoc_rdo(pvs,ctrans,trans);
+	}
+        del_aubio_pvoc(pv);
+        del_fvec(in);
+        del_cvec(fftgrain);
+        del_cvec(cstead);
+        del_cvec(ctrans);
+        del_fvec(stead);
+        del_fvec(trans);
+        aubio_cleanup();
+        printf("memory freed\n");
+        return 0;
+}
--- /dev/null
+++ b/tests/src/temporal/test-a_weighting.c
@@ -1,0 +1,36 @@
+#include <aubio.h>
+
+int main(){
+  
+  aubio_filter_t * f;
+
+  uint_t rates[] = { 8000, 16000, 22050, 44100, 96000, 192000};
+  uint_t nrates = 6;
+  uint_t samplerate, i = 0;
+
+  for ( samplerate = rates[i]; i < nrates ; i++ ) {
+    f = new_aubio_filter_a_weighting (samplerate);
+    del_aubio_filter (f);
+
+    f = new_aubio_filter (7);
+    aubio_filter_set_a_weighting (f, samplerate);
+    del_aubio_filter (f);
+  }
+
+  // samplerate unknown
+  f = new_aubio_filter_a_weighting (4200);
+  del_aubio_filter (f);
+
+  // order to small
+  f = new_aubio_filter (2);
+  aubio_filter_set_a_weighting (f, samplerate);
+  del_aubio_filter (f);
+
+  // order to big
+  f = new_aubio_filter (12);
+  aubio_filter_set_a_weighting (f, samplerate);
+  del_aubio_filter (f);
+
+  return 0;
+}
+
--- a/tests/src/temporal/test-aweighting.c
+++ /dev/null
@@ -1,36 +1,0 @@
-#include <aubio.h>
-
-int main(){
-  
-  aubio_filter_t * f;
-
-  uint_t rates[] = { 8000, 16000, 22050, 44100, 96000, 192000};
-  uint_t nrates = 6;
-  uint_t samplerate, i = 0;
-
-  for ( samplerate = rates[i]; i < nrates ; i++ ) {
-    f = new_aubio_filter_a_weighting (samplerate);
-    del_aubio_filter (f);
-
-    f = new_aubio_filter (7);
-    aubio_filter_set_a_weighting (f, samplerate);
-    del_aubio_filter (f);
-  }
-
-  // samplerate unknown
-  f = new_aubio_filter_a_weighting (4200);
-  del_aubio_filter (f);
-
-  // order to small
-  f = new_aubio_filter (2);
-  aubio_filter_set_a_weighting (f, samplerate);
-  del_aubio_filter (f);
-
-  // order to big
-  f = new_aubio_filter (12);
-  aubio_filter_set_a_weighting (f, samplerate);
-  del_aubio_filter (f);
-
-  return 0;
-}
-
--- /dev/null
+++ b/tests/src/temporal/test-biquad.c
@@ -1,0 +1,15 @@
+#include <aubio.h>
+
+int main(){
+        /* allocate some memory */
+        uint_t win_s      = 1024;                       /* window size */
+        fvec_t * in       = new_fvec (win_s); /* input buffer */
+        aubio_filter_t * o = new_aubio_filter_biquad(0.3,0.2,0.1,0.2,0.3);
+
+        aubio_filter_do_filtfilt(o,in,in);
+        aubio_filter_do(o,in);
+
+        del_aubio_filter(o);
+        del_fvec(in);
+        return 0;
+}
--- /dev/null
+++ b/tests/src/temporal/test-c_weighting.c
@@ -1,0 +1,36 @@
+#include <aubio.h>
+
+int main(){
+  
+  aubio_filter_t * f;
+
+  uint_t rates[] = { 8000, 16000, 22050, 44100, 96000, 192000};
+  uint_t nrates = 6;
+  uint_t samplerate, i = 0;
+
+  for ( samplerate = rates[i]; i < nrates ; i++ ) {
+    f = new_aubio_filter_c_weighting (samplerate);
+    del_aubio_filter (f);
+
+    f = new_aubio_filter (5);
+    aubio_filter_set_c_weighting (f, samplerate);
+    del_aubio_filter (f);
+  }
+
+  // samplerate unknown
+  f = new_aubio_filter_c_weighting (4200);
+  del_aubio_filter (f);
+
+  // order to small
+  f = new_aubio_filter (2);
+  aubio_filter_set_c_weighting (f, samplerate);
+  del_aubio_filter (f);
+
+  // order to big
+  f = new_aubio_filter (12);
+  aubio_filter_set_c_weighting (f, samplerate);
+  del_aubio_filter (f);
+
+  return 0;
+}
+
--- a/tests/src/temporal/test-cweighting.c
+++ /dev/null
@@ -1,36 +1,0 @@
-#include <aubio.h>
-
-int main(){
-  
-  aubio_filter_t * f;
-
-  uint_t rates[] = { 8000, 16000, 22050, 44100, 96000, 192000};
-  uint_t nrates = 6;
-  uint_t samplerate, i = 0;
-
-  for ( samplerate = rates[i]; i < nrates ; i++ ) {
-    f = new_aubio_filter_c_weighting (samplerate);
-    del_aubio_filter (f);
-
-    f = new_aubio_filter (5);
-    aubio_filter_set_c_weighting (f, samplerate);
-    del_aubio_filter (f);
-  }
-
-  // samplerate unknown
-  f = new_aubio_filter_c_weighting (4200);
-  del_aubio_filter (f);
-
-  // order to small
-  f = new_aubio_filter (2);
-  aubio_filter_set_c_weighting (f, samplerate);
-  del_aubio_filter (f);
-
-  // order to big
-  f = new_aubio_filter (12);
-  aubio_filter_set_c_weighting (f, samplerate);
-  del_aubio_filter (f);
-
-  return 0;
-}
-
--- /dev/null
+++ b/tests/src/temporal/test-filter.c
@@ -1,0 +1,38 @@
+#include <aubio.h>
+
+int
+main (void)
+{
+  /* allocate some memory */
+  uint_t win_s = 32;            /* window size */
+  fvec_t *in = new_fvec (win_s);      /* input buffer */
+  fvec_t *out = new_fvec (win_s);     /* input buffer */
+
+
+  aubio_filter_t *o = new_aubio_filter_c_weighting (44100);
+  in->data[12] = 0.5;
+  fvec_print (in);
+  aubio_filter_do (o, in);
+  fvec_print (in);
+  del_aubio_filter (o);
+
+  o = new_aubio_filter_c_weighting (44100);
+  in->data[12] = 0.5;
+  fvec_print (in);
+  aubio_filter_do_outplace (o, in, out);
+  fvec_print (out);
+  del_aubio_filter (o);
+
+  o = new_aubio_filter_c_weighting (44100);
+  in->data[12] = 0.5;
+  fvec_print (in);
+  aubio_filter_do_filtfilt (o, in, out);
+  fvec_print (out);
+  del_aubio_filter (o);
+
+  del_fvec (in);
+  del_fvec (out);
+  aubio_cleanup ();
+
+  return 0;
+}
--- /dev/null
+++ b/tests/src/temporal/test-resampler.c
@@ -1,0 +1,25 @@
+#include <stdio.h>
+#include <aubio.h>
+
+int
+main ()
+{
+  /* allocate some memory */
+  uint_t win_s = 1024;          /* window size */
+  smpl_t ratio = 0.5;
+  fvec_t *in = new_fvec (win_s);      /* input buffer */
+  fvec_t *out = new_fvec ((uint_t) (win_s * ratio));  /* input buffer */
+  aubio_resampler_t *o = new_aubio_resampler (0.5, 0);
+  uint_t i = 0;
+
+  while (i < 10) {
+    aubio_resampler_do (o, in, out);
+    i++;
+  };
+
+  del_aubio_resampler (o);
+  del_fvec (in);
+  del_fvec (out);
+
+  return 0;
+}
--- a/tests/src/test-biquad.c
+++ /dev/null
@@ -1,15 +1,0 @@
-#include <aubio.h>
-
-int main(){
-        /* allocate some memory */
-        uint_t win_s      = 1024;                       /* window size */
-        fvec_t * in       = new_fvec (win_s); /* input buffer */
-        aubio_filter_t * o = new_aubio_filter_biquad(0.3,0.2,0.1,0.2,0.3);
-
-        aubio_filter_do_filtfilt(o,in,in);
-        aubio_filter_do(o,in);
-
-        del_aubio_filter(o);
-        del_fvec(in);
-        return 0;
-}
--- a/tests/src/test-filter.c
+++ /dev/null
@@ -1,38 +1,0 @@
-#include <aubio.h>
-
-int
-main (void)
-{
-  /* allocate some memory */
-  uint_t win_s = 32;            /* window size */
-  fvec_t *in = new_fvec (win_s);      /* input buffer */
-  fvec_t *out = new_fvec (win_s);     /* input buffer */
-
-
-  aubio_filter_t *o = new_aubio_filter_c_weighting (44100);
-  in->data[12] = 0.5;
-  fvec_print (in);
-  aubio_filter_do (o, in);
-  fvec_print (in);
-  del_aubio_filter (o);
-
-  o = new_aubio_filter_c_weighting (44100);
-  in->data[12] = 0.5;
-  fvec_print (in);
-  aubio_filter_do_outplace (o, in, out);
-  fvec_print (out);
-  del_aubio_filter (o);
-
-  o = new_aubio_filter_c_weighting (44100);
-  in->data[12] = 0.5;
-  fvec_print (in);
-  aubio_filter_do_filtfilt (o, in, out);
-  fvec_print (out);
-  del_aubio_filter (o);
-
-  del_fvec (in);
-  del_fvec (out);
-  aubio_cleanup ();
-
-  return 0;
-}
--- a/tests/src/test-filterbank.c
+++ /dev/null
@@ -1,44 +1,0 @@
-#define AUBIO_UNSTABLE 1
-
-#include <stdio.h>
-#include <aubio.h>
-
-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;
-}
--- a/tests/src/test-filterbank_mel.c
+++ /dev/null
@@ -1,40 +1,0 @@
-#define AUBIO_UNSTABLE 1
-
-#include <stdio.h>
-#include <aubio.h>
-
-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;
-}
--- a/tests/src/test-hist.c
+++ /dev/null
@@ -1,31 +1,0 @@
-#define AUBIO_UNSTABLE 1
-
-#include <aubio.h>
-#include <stdlib.h>
-
-int main( )
-{
-  uint_t length;
-  for (length = 1; length < 10; length ++ ) {
-    aubio_hist_t *o = new_aubio_hist(0, 1, length);
-    fvec_t *t = new_aubio_window("hanning", length);
-    aubio_hist_do(o,t);
-    fvec_print(t);
-    aubio_hist_do_notnull(o,t);
-    fvec_print(t);
-    aubio_hist_dyn_notnull(o,t);
-    fvec_print(t);
-    del_fvec(t);
-    t = new_aubio_window("hanningz", length);
-    aubio_hist_do(o,t);
-    fvec_print(t);
-    aubio_hist_do_notnull(o,t);
-    fvec_print(t);
-    aubio_hist_dyn_notnull(o,t);
-    fvec_print(t);
-    del_aubio_hist(o);
-    del_fvec(t);
-  }
-  return 0;
-}
-
--- /dev/null
+++ b/tests/src/test-mathutils-window.c
@@ -1,0 +1,41 @@
+#include <aubio.h>
+#include <stdlib.h>
+
+int main( )
+{
+  uint_t length;
+  for (length = 2; length <= 5; length++)
+  {
+    fvec_t *t = new_aubio_window("rectangle", length);
+    del_fvec(t);
+    t = new_aubio_window("hamming", length);
+    fvec_print(t);
+    del_fvec(t);
+    t = new_aubio_window("hanning", length);
+    fvec_print(t);
+    del_fvec(t);
+    t = new_aubio_window("hanningz", length);
+    fvec_print(t);
+    del_fvec(t);
+    t = new_aubio_window("blackman", length);
+    fvec_print(t);
+    del_fvec(t);
+    t = new_aubio_window("blackman_harris", length);
+    fvec_print(t);
+    del_fvec(t);
+    t = new_aubio_window("gaussian", length);
+    fvec_print(t);
+    del_fvec(t);
+    t = new_aubio_window("welch", length);
+    fvec_print(t);
+    del_fvec(t);
+    t = new_aubio_window("parzen", length);
+    fvec_print(t);
+    del_fvec(t);
+    t = new_aubio_window("default", length);
+    fvec_print(t);
+    del_fvec(t);
+  }
+  return 0;
+}
+
--- a/tests/src/test-mfcc.c
+++ /dev/null
@@ -1,30 +1,0 @@
-#include <aubio.h>
-
-int
-main (void)
-{
-  /* allocate some memory */
-  uint_t win_s = 512;           /* fft size */
-  uint_t n_filters = 40;        /* number of filters */
-  uint_t n_coefs = 13;          /* number of coefficients */
-  cvec_t *in = new_cvec (win_s);      /* input buffer */
-  fvec_t *out = new_fvec (n_coefs);     /* input buffer */
-  smpl_t samplerate = 16000.;
-
-  /* allocate fft and other memory space */
-  aubio_mfcc_t *o = new_aubio_mfcc (win_s, n_filters, n_coefs, samplerate);
-
-  cvec_set (in, 1.);
-
-  aubio_mfcc_do (o, in, out);
-  fvec_print (out);
-  aubio_mfcc_do (o, in, out);
-  fvec_print (out);
-
-  del_aubio_mfcc (o);
-  del_cvec (in);
-  del_fvec (out);
-  aubio_cleanup ();
-
-  return 0;
-}
--- a/tests/src/test-onset.c
+++ /dev/null
@@ -1,22 +1,0 @@
-#include <aubio.h>
-
-int main(){
-        /* allocate some memory */
-        uint_t win_s      = 1024;                       /* window size */
-        fvec_t * in       = new_fvec (win_s/4); /* input buffer */
-        fvec_t * out      = new_fvec (2);     /* input buffer */
-        aubio_onset_t * onset  = new_aubio_onset("complex", win_s, win_s/4, 44100.);
-        uint_t i = 0;
-
-        while (i < 10) {
-          aubio_onset_do (onset,in,out);
-          i++;
-        };
-
-        del_aubio_onset(onset);
-        del_fvec(in);
-        del_fvec(out);
-        aubio_cleanup();
-
-        return 0;
-}
--- a/tests/src/test-onsetdetection.c
+++ /dev/null
@@ -1,48 +1,0 @@
-
-#define AUBIO_UNSTABLE 1
-
-#include <aubio.h>
-
-int
-main ()
-{
-  uint_t win_s = 1024;          /* window size */
-  cvec_t *in = new_cvec (win_s);      /* input buffer */
-  fvec_t *out = new_fvec (1); /* input buffer */
-
-  aubio_specdesc_t *o;
-  
-  o = new_aubio_specdesc ("energy", win_s);
-  aubio_specdesc_do (o, in, out);
-  del_aubio_specdesc (o);
-
-  o = new_aubio_specdesc ("energy", win_s);
-  aubio_specdesc_do (o, in, out);
-  del_aubio_specdesc (o);
-
-  o = new_aubio_specdesc ("hfc", win_s);
-  aubio_specdesc_do (o, in, out);
-  del_aubio_specdesc (o);
-
-  o = new_aubio_specdesc ("complex", win_s);
-  aubio_specdesc_do (o, in, out);
-  del_aubio_specdesc (o);
-
-  o = new_aubio_specdesc ("phase", win_s);
-  aubio_specdesc_do (o, in, out);
-  del_aubio_specdesc (o);
-
-  o = new_aubio_specdesc ("kl", win_s);
-  aubio_specdesc_do (o, in, out);
-  del_aubio_specdesc (o);
-
-  o = new_aubio_specdesc ("mkl", win_s);
-  aubio_specdesc_do (o, in, out);
-  del_aubio_specdesc (o);
-
-  del_cvec (in);
-  del_fvec (out);
-  aubio_cleanup ();
-
-  return 0;
-}
--- a/tests/src/test-peakpick.c
+++ /dev/null
@@ -1,22 +1,0 @@
-#define AUBIO_UNSTABLE 1
-
-#include <aubio.h>
-
-int main(){
-        /* allocate some memory */
-        uint_t win_s      = 1024;                       /* window size */
-        fvec_t * in       = new_fvec (win_s); /* input buffer */
-        fvec_t * out      = new_fvec (1); /* input buffer */
-        aubio_peakpicker_t * o = new_aubio_peakpicker();
-        aubio_peakpicker_set_threshold (o, 0.3);
-
-        aubio_peakpicker_do(o, in, out);
-        aubio_peakpicker_do(o, in, out);
-        aubio_peakpicker_do(o, in, out);
-        aubio_peakpicker_do(o, in, out);
-
-        del_aubio_peakpicker(o);
-        del_fvec(in);
-        return 0;
-}
-
--- a/tests/src/test-phasevoc-jack.c
+++ /dev/null
@@ -1,98 +1,0 @@
-/** Test for phase vocoder in jack
- *
- * This program should start correctly, when jackd is started or when
- * using JACK_START_SERVER=true and reconstruct each audio input channel
- * on the corresponding output channel with some strange effects and a
- * delay equal to the hop size (hop_s).
- *
- */
-
-#include <stdio.h>
-#include <unistd.h>  /* sleep() */
-#include <aubio.h>
-#include "jackio.h"
-
-uint_t testing  = 0;  /* change this to 1 to listen        */
-
-uint_t win_s    = 512;/* window size                       */
-uint_t hop_s    = 128;/* hop size                          */
-uint_t channels = 2;  /* number of audio channels          */
-uint_t midiin   = 4;  /* number of midi input channels     */
-uint_t midiout  = 2;  /* number of midi output channels    */
-uint_t pos      = 0;  /* frames%dspblocksize for jack loop */
-
-fvec_t * in[2];
-cvec_t * fftgrain[2];
-fvec_t * out[2];
-
-aubio_pvoc_t * pv[2];
-
-int aubio_process(float **input, float **output, int nframes);
-
-int main(){
-        /* allocate some memory */
-  uint_t i;
-    for (i=0;i<channels;i++) {
-        in[i]       = new_fvec (hop_s); /* input buffer       */
-        fftgrain[i] = new_cvec (win_s); /* fft norm and phase */
-        out[i]      = new_fvec (hop_s); /* output buffer      */
-        /* allocate fft and other memory space */
-        pv[i] = new_aubio_pvoc(win_s,hop_s);
-    }
-
-#ifdef HAVE_JACK
-        aubio_jack_t * jack_setup;
-        jack_setup  = new_aubio_jack(channels, channels, 
-            midiin, midiout,
-            (aubio_process_func_t)aubio_process);
-        aubio_jack_activate(jack_setup);
-        /* stay in main jack loop for 1 seconds only */
-        do {
-          sleep(1);
-        } while(testing);
-        aubio_jack_close(jack_setup);
-#else
-        fprintf(stderr, "WARNING: no jack support\n");
-#endif
-        
-    for (i=0;i<channels;i++) {
-        del_aubio_pvoc(pv[i]);
-        del_cvec(fftgrain[i]);
-        del_fvec(in[i]);
-        del_fvec(out[i]);
-    }
-        aubio_cleanup();
-        return 0;
-}
-
-int aubio_process(float **input, float **output, int nframes) {
-  uint_t i;       /*channels*/
-  uint_t j;       /*frames*/
-  for (j=0;j<(unsigned)nframes;j++) {
-    for (i=0;i<channels;i++) {
-      /* write input to datanew */
-      fvec_write_sample(in[i], input[i][j], pos);
-      /* put synthnew in output */
-      output[i][j] = fvec_read_sample(out[i], pos);
-    }
-    /*time for fft*/
-    if (pos == hop_s-1) {
-      /* block loop */
-    for (i=0;i<channels;i++) {
-      aubio_pvoc_do (pv[i], in[i], fftgrain[i]);
-      // zero phases of first channel
-      for (i=0;i<fftgrain[i]->length;i++) fftgrain[0]->phas[i] = 0.; 
-      // double phases of second channel
-      for (i=0;i<fftgrain[i]->length;i++) {
-        fftgrain[1]->phas[i] = 
-          aubio_unwrap2pi (fftgrain[1]->phas[i] * 2.); 
-      }
-      // copy second channel to third one
-      aubio_pvoc_rdo(pv[i], fftgrain[i], out[i]);
-      pos = -1;
-    }
-    }
-    pos++;
-  }
-  return 0;
-}
--- a/tests/src/test-phasevoc.c
+++ /dev/null
@@ -1,30 +1,0 @@
-/* test sample for phase vocoder */
-
-#include <stdio.h>
-#include <aubio.h>
-
-int main(){
-        uint_t win_s    = 1024; /* window size                       */
-        uint_t hop_s    = 256;  /* hop size                          */
-        /* allocate some memory */
-        fvec_t * in       = new_fvec (hop_s); /* input buffer       */
-        cvec_t * fftgrain = new_cvec (win_s); /* fft norm and phase */
-        fvec_t * out      = new_fvec (hop_s); /* output buffer      */
-        /* allocate fft and other memory space */
-        aubio_pvoc_t * pv = new_aubio_pvoc(win_s,hop_s);
-        /* fill input with some data */
-        printf("initialised\n");
-        /* execute stft */
-        aubio_pvoc_do (pv,in,fftgrain);
-        printf("computed forward\n");
-        /* execute inverse fourier transform */
-        aubio_pvoc_rdo(pv,fftgrain,out);
-        printf("computed backard\n");
-        del_aubio_pvoc(pv);
-        del_fvec(in);
-        del_cvec(fftgrain);
-        del_fvec(out);
-        aubio_cleanup();
-        printf("memory freed\n");
-        return 0;
-}
--- a/tests/src/test-pitch.c
+++ /dev/null
@@ -1,22 +1,0 @@
-#include <aubio.h>
-
-int main(){
-        /* allocate some memory */
-        uint_t win_s      = 1024; /* window size */
-        fvec_t * in       = new_fvec (win_s); /* input buffer */
-        fvec_t * out      = new_fvec (1); /* input buffer */
-        aubio_pitch_t *p = new_aubio_pitch ("default", win_s, win_s / 2, 44100);
-        uint_t i = 0;
-
-        while (i < 10) {
-          aubio_pitch_do (p, in, out);
-          i++;
-        };
-
-        del_fvec(in);
-        del_fvec(out);
-        aubio_cleanup();
-
-        return 0;
-}
-
--- a/tests/src/test-pitchdetection.c
+++ /dev/null
@@ -1,26 +1,0 @@
-#include <aubio.h>
-
-int
-main ()
-{
-  /* allocate some memory */
-  uint_t win_s = 1024;          /* window size */
-  uint_t hop_s = win_s / 4;     /* hop size */
-  uint_t samplerate = 44100;    /* samplerate */
-  fvec_t *in = new_fvec (hop_s);      /* input buffer */
-  fvec_t *out = new_fvec (1); /* input buffer */
-  aubio_pitch_t *o =
-      new_aubio_pitch ("default", win_s, hop_s, samplerate);
-  uint_t i = 0;
-
-  while (i < 100) {
-    aubio_pitch_do (o, in, out);
-    i++;
-  };
-
-  del_aubio_pitch (o);
-  del_fvec (in);
-  aubio_cleanup ();
-
-  return 0;
-}
--- a/tests/src/test-pitchfcomb.c
+++ /dev/null
@@ -1,25 +1,0 @@
-#define AUBIO_UNSTABLE 1
-
-#include <aubio.h>
-
-int main(){
-        /* allocate some memory */
-        uint_t win_s      = 1024;                       /* window size */
-        uint_t hop_s      = win_s/4;                    /* hop size */
-        fvec_t * in       = new_fvec (hop_s); /* input buffer */
-        fvec_t * out      = new_fvec (1);
-        aubio_pitchfcomb_t * o  = new_aubio_pitchfcomb (
-          win_s, hop_s);
-        uint_t i = 0;
-
-        while (i < 2) {
-          aubio_pitchfcomb_do (o,in, out);
-          i++;
-        };
-
-        del_aubio_pitchfcomb(o);
-        del_fvec(in);
-        aubio_cleanup();
-
-        return 0;
-}
--- a/tests/src/test-pitchmcomb.c
+++ /dev/null
@@ -1,26 +1,0 @@
-#define AUBIO_UNSTABLE 1
-
-#include <aubio.h>
-
-int main(){
-        /* allocate some memory */
-        uint_t win_s      = 1024;                       /* window size */
-        uint_t hop_s      = win_s/4;                    /* hop size */
-        cvec_t * in       = new_cvec (win_s); /* input buffer */
-        fvec_t * out      = new_fvec (1); /* input buffer */
-
-        aubio_pitchmcomb_t * o  = new_aubio_pitchmcomb(win_s, hop_s);
-        uint_t i = 0;
-
-        while (i < 1000) {
-          aubio_pitchmcomb_do (o,in, out);
-          i++;
-        };
-
-        del_aubio_pitchmcomb(o);
-        del_cvec(in);
-        del_fvec(out);
-        aubio_cleanup();
-
-        return 0;
-}
--- a/tests/src/test-pitchschmitt.c
+++ /dev/null
@@ -1,25 +1,0 @@
-#define AUBIO_UNSTABLE 1
-
-#include <aubio.h>
-
-int main(){
-        /* allocate some memory */
-        uint_t win_s      = 1024;                       /* window size */
-        fvec_t * in       = new_fvec (win_s); /* input buffer */
-        fvec_t * out = new_fvec (1); /* input buffer */
-        aubio_pitchschmitt_t * o  = new_aubio_pitchschmitt(win_s);
-        uint_t i = 0;
-
-        while (i < 1000) {
-          aubio_pitchschmitt_do (o,in, out);
-          i++;
-        };
-
-        del_aubio_pitchschmitt(o);
-        del_fvec(in);
-        del_fvec(out);
-        aubio_cleanup();
-
-        return 0;
-}
-
--- a/tests/src/test-pitchyin.c
+++ /dev/null
@@ -1,24 +1,0 @@
-#define AUBIO_UNSTABLE 1
-
-#include <aubio.h>
-
-int main(){
-        /* allocate some memory */
-        uint_t win_s      = 1024;                       /* window size */
-        fvec_t * in       = new_fvec (win_s); /* input buffer */
-        fvec_t * out      = new_fvec (win_s/2); /* input buffer */
-        aubio_pitchyin_t *p = new_aubio_pitchyin (win_s);
-        uint_t i = 0;
-
-        while (i < 10) {
-          aubio_pitchyin_do (p, in,out);
-          i++;
-        };
-
-        del_fvec(in);
-        del_fvec(out);
-        del_aubio_pitchyin(p);
-        aubio_cleanup();
-
-        return 0;
-}
--- a/tests/src/test-pitchyinfft.c
+++ /dev/null
@@ -1,26 +1,0 @@
-#define AUBIO_UNSTABLE 1
-
-#include <aubio.h>
-
-int main(){
-        /* allocate some memory */
-        uint_t win_s      = 1024;                       /* window size */
-        fvec_t * in       = new_fvec (win_s); /* input buffer */
-        fvec_t * out      = new_fvec (1); /* output pitch periods */
-        aubio_pitchyinfft_t * o  = new_aubio_pitchyinfft(win_s);
-        aubio_pitchyinfft_set_tolerance (o, 0.2);
-        uint_t i = 0;
-
-        while (i < 10) {
-          aubio_pitchyinfft_do (o,in,out);
-          i++;
-        };
-
-        del_aubio_pitchyinfft(o);
-        del_fvec(in);
-        del_fvec(out);
-        aubio_cleanup();
-
-        return 0;
-}
-
--- a/tests/src/test-resample.c
+++ /dev/null
@@ -1,25 +1,0 @@
-#include <stdio.h>
-#include <aubio.h>
-
-int
-main ()
-{
-  /* allocate some memory */
-  uint_t win_s = 1024;          /* window size */
-  smpl_t ratio = 0.5;
-  fvec_t *in = new_fvec (win_s);      /* input buffer */
-  fvec_t *out = new_fvec ((uint_t) (win_s * ratio));  /* input buffer */
-  aubio_resampler_t *o = new_aubio_resampler (0.5, 0);
-  uint_t i = 0;
-
-  while (i < 10) {
-    aubio_resampler_do (o, in, out);
-    i++;
-  };
-
-  del_aubio_resampler (o);
-  del_fvec (in);
-  del_fvec (out);
-
-  return 0;
-}
--- a/tests/src/test-scale.c
+++ /dev/null
@@ -1,22 +1,0 @@
-#define AUBIO_UNSTABLE 1
-
-#include <aubio.h>
-
-int main(){
-        /* allocate some memory */
-        uint_t win_s      = 1024;                       /* window size */
-        fvec_t * in       = new_fvec (win_s); /* input buffer */
-        aubio_scale_t * o = new_aubio_scale(0,1,2,3);
-        aubio_scale_set_limits (o,0,1,2,3);
-        uint_t i = 0;
-
-        while (i < 1000) {
-          aubio_scale_do(o,in);
-          i++;
-        };
-
-        del_aubio_scale(o);
-        del_fvec(in);
-
-        return 0;
-}
--- a/tests/src/test-tss.c
+++ /dev/null
@@ -1,48 +1,0 @@
-/* test sample for phase vocoder 
- *
- * this program should start correctly using JACK_START_SERVER=true and
- * reconstruct each audio input frame perfectly on the corresponding input with
- * a delay equal to the window size, hop_s.
- */
-
-#include <stdio.h>
-#define AUBIO_UNSTABLE 1
-#include <aubio.h>
-
-int main(){
-	int i;
-        uint_t win_s    = 1024; /* window size                       */
-        uint_t hop_s    = 256;  /* hop size                          */
-        /* allocate some memory */
-        fvec_t * in       = new_fvec (hop_s); /* input buffer       */
-        cvec_t * fftgrain = new_cvec (win_s); /* fft norm and phase */
-        cvec_t * cstead   = new_cvec (win_s); /* fft norm and phase */
-        cvec_t * ctrans   = new_cvec (win_s); /* fft norm and phase */
-        fvec_t * stead    = new_fvec (hop_s); /* output buffer      */
-        fvec_t * trans    = new_fvec (hop_s); /* output buffer      */
-        /* allocate fft and other memory space */
-        aubio_pvoc_t * pv = new_aubio_pvoc (win_s,hop_s);
-        aubio_pvoc_t * pvt = new_aubio_pvoc(win_s,hop_s);
-        aubio_pvoc_t * pvs = new_aubio_pvoc(win_s,hop_s);
-
-	aubio_tss_t *  tss = new_aubio_tss(win_s,hop_s);
-        /* fill input with some data */
-        printf("initialised\n");
-        /* execute stft */
-	for (i = 0; i < 10; i++) {
-		aubio_pvoc_do (pv,in,fftgrain);
-		aubio_tss_do  (tss,fftgrain,ctrans,cstead);
-		aubio_pvoc_rdo(pvt,cstead,stead);
-		aubio_pvoc_rdo(pvs,ctrans,trans);
-	}
-        del_aubio_pvoc(pv);
-        del_fvec(in);
-        del_cvec(fftgrain);
-        del_cvec(cstead);
-        del_cvec(ctrans);
-        del_fvec(stead);
-        del_fvec(trans);
-        aubio_cleanup();
-        printf("memory freed\n");
-        return 0;
-}
--- a/tests/src/test-window.c
+++ /dev/null
@@ -1,41 +1,0 @@
-#include <aubio.h>
-#include <stdlib.h>
-
-int main( )
-{
-  uint_t length;
-  for (length = 2; length <= 5; length++)
-  {
-    fvec_t *t = new_aubio_window("rectangle", length);
-    del_fvec(t);
-    t = new_aubio_window("hamming", length);
-    fvec_print(t);
-    del_fvec(t);
-    t = new_aubio_window("hanning", length);
-    fvec_print(t);
-    del_fvec(t);
-    t = new_aubio_window("hanningz", length);
-    fvec_print(t);
-    del_fvec(t);
-    t = new_aubio_window("blackman", length);
-    fvec_print(t);
-    del_fvec(t);
-    t = new_aubio_window("blackman_harris", length);
-    fvec_print(t);
-    del_fvec(t);
-    t = new_aubio_window("gaussian", length);
-    fvec_print(t);
-    del_fvec(t);
-    t = new_aubio_window("welch", length);
-    fvec_print(t);
-    del_fvec(t);
-    t = new_aubio_window("parzen", length);
-    fvec_print(t);
-    del_fvec(t);
-    t = new_aubio_window("default", length);
-    fvec_print(t);
-    del_fvec(t);
-  }
-  return 0;
-}
-
--- /dev/null
+++ b/tests/src/utils/test-hist.c
@@ -1,0 +1,31 @@
+#define AUBIO_UNSTABLE 1
+
+#include <aubio.h>
+#include <stdlib.h>
+
+int main( )
+{
+  uint_t length;
+  for (length = 1; length < 10; length ++ ) {
+    aubio_hist_t *o = new_aubio_hist(0, 1, length);
+    fvec_t *t = new_aubio_window("hanning", length);
+    aubio_hist_do(o,t);
+    fvec_print(t);
+    aubio_hist_do_notnull(o,t);
+    fvec_print(t);
+    aubio_hist_dyn_notnull(o,t);
+    fvec_print(t);
+    del_fvec(t);
+    t = new_aubio_window("hanningz", length);
+    aubio_hist_do(o,t);
+    fvec_print(t);
+    aubio_hist_do_notnull(o,t);
+    fvec_print(t);
+    aubio_hist_dyn_notnull(o,t);
+    fvec_print(t);
+    del_aubio_hist(o);
+    del_fvec(t);
+  }
+  return 0;
+}
+
--- /dev/null
+++ b/tests/src/utils/test-scale.c
@@ -1,0 +1,22 @@
+#define AUBIO_UNSTABLE 1
+
+#include <aubio.h>
+
+int main(){
+        /* allocate some memory */
+        uint_t win_s      = 1024;                       /* window size */
+        fvec_t * in       = new_fvec (win_s); /* input buffer */
+        aubio_scale_t * o = new_aubio_scale(0,1,2,3);
+        aubio_scale_set_limits (o,0,1,2,3);
+        uint_t i = 0;
+
+        while (i < 1000) {
+          aubio_scale_do(o,in);
+          i++;
+        };
+
+        del_aubio_scale(o);
+        del_fvec(in);
+
+        return 0;
+}