Index: src/pitch/pitch.c
===================================================================
--- src/pitch/pitch.c	(revision fddfa647d845149f90a4116483d287487f4b841c)
+++ src/pitch/pitch.c	(revision 7dec719b7fab7f4d76a84c7756ede2a40942612c)
@@ -114,5 +114,5 @@
 aubio_pitch_t *
 new_aubio_pitch (char_t * pitch_mode,
-    uint_t bufsize, uint_t hopsize, uint_t channels, uint_t samplerate)
+    uint_t bufsize, uint_t hopsize, uint_t samplerate)
 {
   aubio_pitch_t *p = AUBIO_NEW (aubio_pitch_t);
@@ -142,5 +142,5 @@
   switch (p->type) {
     case aubio_pitcht_yin:
-      p->buf = new_fvec (bufsize, channels);
+      p->buf = new_fvec (bufsize);
       p->yin = new_aubio_pitchyin (bufsize);
       p->callback = aubio_pitch_do_yin;
@@ -148,22 +148,22 @@
       break;
     case aubio_pitcht_mcomb:
-      p->pv = new_aubio_pvoc (bufsize, hopsize, channels);
-      p->fftgrain = new_cvec (bufsize, channels);
-      p->mcomb = new_aubio_pitchmcomb (bufsize, hopsize, channels);
-      p->filter = new_aubio_filter_c_weighting (samplerate, channels);
+      p->pv = new_aubio_pvoc (bufsize, hopsize);
+      p->fftgrain = new_cvec (bufsize);
+      p->mcomb = new_aubio_pitchmcomb (bufsize, hopsize);
+      p->filter = new_aubio_filter_c_weighting (samplerate);
       p->callback = aubio_pitch_do_mcomb;
       break;
     case aubio_pitcht_fcomb:
-      p->buf = new_fvec (bufsize, channels);
-      p->fcomb = new_aubio_pitchfcomb (bufsize, hopsize, channels);
+      p->buf = new_fvec (bufsize);
+      p->fcomb = new_aubio_pitchfcomb (bufsize, hopsize);
       p->callback = aubio_pitch_do_fcomb;
       break;
     case aubio_pitcht_schmitt:
-      p->buf = new_fvec (bufsize, channels);
+      p->buf = new_fvec (bufsize);
       p->schmitt = new_aubio_pitchschmitt (bufsize);
       p->callback = aubio_pitch_do_schmitt;
       break;
     case aubio_pitcht_yinfft:
-      p->buf = new_fvec (bufsize, channels);
+      p->buf = new_fvec (bufsize);
       p->yinfft = new_aubio_pitchyinfft (bufsize);
       p->callback = aubio_pitch_do_yinfft;
@@ -211,15 +211,11 @@
 aubio_pitch_slideblock (aubio_pitch_t * p, fvec_t * ibuf)
 {
-  uint_t i, j = 0, overlap_size = 0;
+  uint_t j = 0, overlap_size = 0;
   overlap_size = p->buf->length - ibuf->length;
-  for (i = 0; i < p->buf->channels; i++) {
-    for (j = 0; j < overlap_size; j++) {
-      p->buf->data[i][j] = p->buf->data[i][j + ibuf->length];
-    }
-  }
-  for (i = 0; i < ibuf->channels; i++) {
-    for (j = 0; j < ibuf->length; j++) {
-      p->buf->data[i][j + overlap_size] = ibuf->data[i][j];
-    }
+  for (j = 0; j < overlap_size; j++) {
+    p->buf->data[j] = p->buf->data[j + ibuf->length];
+  }
+  for (j = 0; j < ibuf->length; j++) {
+    p->buf->data[j + overlap_size] = ibuf->data[j];
   }
 }
@@ -283,9 +279,6 @@
 aubio_pitch_do (aubio_pitch_t * p, fvec_t * ibuf, fvec_t * obuf)
 {
-  uint_t i;
   p->callback (p, ibuf, obuf);
-  for (i = 0; i < obuf->channels; i++) {
-    p->freqconv (obuf->data[i][0], p->srate, p->bufsize);
-  }
+  obuf->data[0] = p->freqconv (obuf->data[0], p->srate, p->bufsize);
 }
 
@@ -293,11 +286,8 @@
 aubio_pitch_do_mcomb (aubio_pitch_t * p, fvec_t * ibuf, fvec_t * obuf)
 {
-  uint_t i;
   aubio_filter_do (p->filter, ibuf);
   aubio_pvoc_do (p->pv, ibuf, p->fftgrain);
   aubio_pitchmcomb_do (p->mcomb, p->fftgrain, obuf);
-  for (i = 0; i < obuf->channels; i++) {
-    obuf->data[i][0] = aubio_bintofreq (obuf->data[i][0], p->srate, p->bufsize);
-  }
+  obuf->data[0] = aubio_bintofreq (obuf->data[0], p->srate, p->bufsize);
 }
 
@@ -306,16 +296,13 @@
 {
   smpl_t pitch = 0.;
-  uint_t i;
   aubio_pitch_slideblock (p, ibuf);
   aubio_pitchyin_do (p->yin, p->buf, obuf);
-  for (i = 0; i < obuf->channels; i++) {
-    pitch = obuf->data[i][0];
-    if (pitch > 0) {
-      pitch = p->srate / (pitch + 0.);
-    } else {
-      pitch = 0.;
-    }
-    obuf->data[i][0] = pitch;
-  }
+  pitch = obuf->data[0];
+  if (pitch > 0) {
+    pitch = p->srate / (pitch + 0.);
+  } else {
+    pitch = 0.;
+  }
+  obuf->data[0] = pitch;
 }
 
@@ -325,16 +312,13 @@
 {
   smpl_t pitch = 0.;
-  uint_t i;
   aubio_pitch_slideblock (p, ibuf);
   aubio_pitchyinfft_do (p->yinfft, p->buf, obuf);
-  for (i = 0; i < obuf->channels; i++) {
-    pitch = obuf->data[i][0];
-    if (pitch > 0) {
-      pitch = p->srate / (pitch + 0.);
-    } else {
-      pitch = 0.;
-    }
-    obuf->data[i][0] = pitch;
-  }
+  pitch = obuf->data[0];
+  if (pitch > 0) {
+    pitch = p->srate / (pitch + 0.);
+  } else {
+    pitch = 0.;
+  }
+  obuf->data[0] = pitch;
 }
 
@@ -342,10 +326,7 @@
 aubio_pitch_do_fcomb (aubio_pitch_t * p, fvec_t * ibuf, fvec_t * out)
 {
-  uint_t i;
   aubio_pitch_slideblock (p, ibuf);
   aubio_pitchfcomb_do (p->fcomb, p->buf, out);
-  for (i = 0; i < out->channels; i++) {
-    out->data[i][0] = aubio_bintofreq (out->data[i][0], p->srate, p->bufsize);
-  }
+  out->data[0] = aubio_bintofreq (out->data[0], p->srate, p->bufsize);
 }
 
@@ -354,15 +335,12 @@
 {
   smpl_t period, pitch = 0.;
-  uint_t i;
   aubio_pitch_slideblock (p, ibuf);
   aubio_pitchschmitt_do (p->schmitt, p->buf, out);
-  for (i = 0; i < out->channels; i++) {
-    period = out->data[i][0];
-    if (period > 0) {
-      pitch = p->srate / period;
-    } else {
-      pitch = 0.;
-    }
-    out->data[i][0] = pitch;
-  }
-}
+  period = out->data[0];
+  if (period > 0) {
+    pitch = p->srate / period;
+  } else {
+    pitch = 0.;
+  }
+  out->data[0] = pitch;
+}
