Index: examples/utils.c
===================================================================
--- examples/utils.c	(revision 8212692b7d1df87a305b3fe5ac23ea343dd7fe04)
+++ examples/utils.c	(revision 066433db7ff0966faf04a301b8562d0fd0dfd16e)
@@ -238,5 +238,5 @@
 #endif /* HAVE_LASH */
 
-  woodblock = new_fvec (overlap_size, channels);
+  woodblock = new_fvec (overlap_size);
   if (output_filename || usejack) {
     /* dummy assignement to keep egcs happy */
@@ -251,9 +251,9 @@
   if (onsetfile) {
     /* read the output sound once */
-    aubio_sndfile_read (onsetfile, overlap_size, woodblock);
-  }
-
-  ibuf = new_fvec (overlap_size, channels);
-  obuf = new_fvec (overlap_size, channels);
+    aubio_sndfile_read_mono (onsetfile, overlap_size, woodblock);
+  }
+
+  ibuf = new_fvec (overlap_size);
+  obuf = new_fvec (overlap_size);
 
 }
Index: interfaces/python/aubio/__init__.py
===================================================================
--- interfaces/python/aubio/__init__.py	(revision 8212692b7d1df87a305b3fe5ac23ea343dd7fe04)
+++ interfaces/python/aubio/__init__.py	(revision 066433db7ff0966faf04a301b8562d0fd0dfd16e)
@@ -4,8 +4,6 @@
 class fvec(numpy.ndarray):
 
-    def __init__(self, length = 1024, **kwargs):
-        super(numpy.ndarray, self).__init__(**kwargs)
-
     def __new__(self, length = 1024, **kwargs):
-        self = numpy.zeros(length, dtype='float32', **kwargs)
-        return self
+        if type(length) == type([]):
+            return numpy.array(length, dtype='float32', **kwargs)
+        return numpy.zeros(length, dtype='float32', **kwargs)
Index: interfaces/python/aubioinput.py
===================================================================
--- interfaces/python/aubioinput.py	(revision 8212692b7d1df87a305b3fe5ac23ea343dd7fe04)
+++ interfaces/python/aubioinput.py	(revision 066433db7ff0966faf04a301b8562d0fd0dfd16e)
@@ -10,6 +10,9 @@
     import numpy
     samples = numpy.frombuffer(buffer.data, dtype=numpy.float32) 
-    samples.resize([len(samples)/chan, chan])
-    return samples.T
+    if chan == 1:
+        return samples.T
+    else:
+        samples.resize([len(samples)/chan, chan])
+        return samples.T
 
 class AubioSink(gst.BaseSink):
@@ -53,5 +56,12 @@
             if self.process:
                 self.process(v, self.pos)
-            self.pos += 1    
+            self.pos += 1
+        remaining = self.adapter.available()
+        if remaining < blocksize and remaining > 0:
+            block = self.adapter.take_buffer(remaining)
+            v = gst_buffer_to_numpy_array(block, chan)
+            if self.process:
+                self.process(v, self.pos)
+            self.pos += 1
         return gst.FLOW_OK
 
Index: interfaces/python/demo_beat.py
===================================================================
--- interfaces/python/demo_beat.py	(revision 066433db7ff0966faf04a301b8562d0fd0dfd16e)
+++ interfaces/python/demo_beat.py	(revision 066433db7ff0966faf04a301b8562d0fd0dfd16e)
@@ -0,0 +1,27 @@
+#! /usr/bin/python
+
+import sys
+from os.path import splitext, basename
+from aubio import tempo 
+from aubioinput import aubioinput
+
+win_s = 512                 # fft size
+hop_s = win_s / 2           # hop size
+beat = tempo("default", win_s, hop_s)
+
+beats = []
+
+def process(samples, pos):
+    isbeat = beat(samples)
+    if isbeat:
+        thisbeat = (float(isbeat[0]) + pos * hop_s) / 44100.
+        print thisbeat
+        beats.append (thisbeat)
+
+if len(sys.argv) < 2:
+    print "Usage: %s <filename>" % sys.argv[0]
+else:
+    filename = sys.argv[1]
+    a = aubioinput(filename, process = process, hopsize = hop_s,
+            caps = 'audio/x-raw-float, rate=44100, channels=1')
+    a.run()
Index: interfaces/python/demo_filterbank.py
===================================================================
--- interfaces/python/demo_filterbank.py	(revision 066433db7ff0966faf04a301b8562d0fd0dfd16e)
+++ interfaces/python/demo_filterbank.py	(revision 066433db7ff0966faf04a301b8562d0fd0dfd16e)
@@ -0,0 +1,12 @@
+from aubio import filterbank, fvec
+
+f = filterbank(9, 1024)
+freq_list = [60, 80, 200, 400, 800, 1600, 3200, 6400, 12800, 15000, 24000]
+freqs = fvec(freq_list)
+f.set_triangle_bands(freq_list, 48000)
+f.get_coeffs().T
+
+from pylab import loglog, show
+loglog(f.get_coeffs().T, '+-')
+show()
+
Index: interfaces/python/test_fvec.py
===================================================================
--- interfaces/python/test_fvec.py	(revision 8212692b7d1df87a305b3fe5ac23ea343dd7fe04)
+++ interfaces/python/test_fvec.py	(revision 066433db7ff0966faf04a301b8562d0fd0dfd16e)
@@ -13,4 +13,8 @@
         #del a
         assert_equal(array(a), 0.)
+
+    def test_vector_create_with_list(self):
+        a = fvec([0,1,2,3])
+        assert_equal (range(4), a)
 
     def test_vector_assign_element(self):
@@ -53,4 +57,7 @@
         from math import sqrt
         assert_almost_equal (alpha_norm(a, 2), sqrt(2)/2.)
+
+    def test_alpha_norm_of_none(self):
+        self.assertRaises (ValueError, alpha_norm, None, 1)
 
     def test_alpha_norm_of_array_of_float32(self):
Index: tests/src/test-pitch.c
===================================================================
--- tests/src/test-pitch.c	(revision 8212692b7d1df87a305b3fe5ac23ea343dd7fe04)
+++ tests/src/test-pitch.c	(revision 066433db7ff0966faf04a301b8562d0fd0dfd16e)
@@ -3,9 +3,8 @@
 int main(){
         /* allocate some memory */
-        uint_t win_s      = 1024;                       /* window size */
-        uint_t channels   = 1;                          /* number of channel */
-        fvec_t * in       = new_fvec (win_s, channels); /* input buffer */
-        fvec_t * out      = new_fvec (1, channels); /* input buffer */
-        aubio_pitch_t *p = new_aubio_pitch ("default", win_s, win_s / 2, channels, 44100);
+        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;
 
