Index: src/tempo/beattracking.c
===================================================================
--- src/tempo/beattracking.c	(revision 741bdda6b26a37c6f58d02738d8b8221cb294542)
+++ src/tempo/beattracking.c	(revision d2073008dcbc8f07eb16446a618c10aa8f2dd2e1)
@@ -55,5 +55,5 @@
 
 aubio_beattracking_t *
-new_aubio_beattracking (uint_t winlen, uint_t channels)
+new_aubio_beattracking (uint_t winlen)
 {
 
@@ -79,12 +79,12 @@
   p->rayparam = rayparam;
   p->step = step;
-  p->rwv = new_fvec (laglen, 1);
-  p->gwv = new_fvec (laglen, 1);
-  p->dfwv = new_fvec (winlen, 1);
-  p->dfrev = new_fvec (winlen, channels);
-  p->acf = new_fvec (winlen, channels);
-  p->acfout = new_fvec (laglen, channels);
-  p->phwv = new_fvec (2 * laglen, 1);
-  p->phout = new_fvec (winlen, channels);
+  p->rwv = new_fvec (laglen);
+  p->gwv = new_fvec (laglen);
+  p->dfwv = new_fvec (winlen);
+  p->dfrev = new_fvec (winlen);
+  p->acf = new_fvec (winlen);
+  p->acfout = new_fvec (laglen);
+  p->phwv = new_fvec (2 * laglen);
+  p->phout = new_fvec (winlen);
 
   p->timesig = 0;
@@ -92,10 +92,10 @@
   /* exponential weighting, dfwv = 0.5 when i =  43 */
   for (i = 0; i < winlen; i++) {
-    p->dfwv->data[0][i] = (EXP ((LOG (2.0) / rayparam) * (i + 1)))
+    p->dfwv->data[i] = (EXP ((LOG (2.0) / rayparam) * (i + 1)))
         / dfwvnorm;
   }
 
   for (i = 0; i < (laglen); i++) {
-    p->rwv->data[0][i] = ((smpl_t) (i + 1.) / SQR ((smpl_t) rayparam)) *
+    p->rwv->data[i] = ((smpl_t) (i + 1.) / SQR ((smpl_t) rayparam)) *
         EXP ((-SQR ((smpl_t) (i + 1.)) / (2. * SQR ((smpl_t) rayparam))));
   }
@@ -161,5 +161,5 @@
     for (a = 1; a <= numelem; a++) {
       for (b = (1 - a); b < a; b++) {
-        bt->acfout->data[0][i] += bt->acf->data[0][a * (i + 1) + b - 1]
+        bt->acfout->data[i] += bt->acf->data[a * (i + 1) + b - 1]
             * 1. / (2. * a - 1.);
       }
@@ -171,5 +171,5 @@
   /* find non-zero Rayleigh period */
   maxindex = fvec_max_elem (bt->acfout);
-  bt->rp = maxindex ? fvec_quadint (bt->acfout, maxindex, 0) : 1;
+  bt->rp = maxindex ? fvec_quadint (bt->acfout, maxindex) : 1;
   //rp = (maxindex==127) ? 43 : maxindex; //rayparam
   bt->rp = (maxindex == bt->acfout->length - 1) ? bt->rayparam : maxindex;      //rayparam
@@ -191,5 +191,5 @@
   for (i = 0; i < bp; i++) {
     for (k = 0; k < kmax; k++) {
-      bt->phout->data[0][i] += bt->dfrev->data[0][i + (uint_t) ROUND (bp * k)];
+      bt->phout->data[i] += bt->dfrev->data[i + (uint_t) ROUND (bp * k)];
     }
   }
@@ -204,5 +204,5 @@
     phase = step - bt->lastbeat;
   } else {
-    phase = fvec_quadint (bt->phout, maxindex, 0);
+    phase = fvec_quadint (bt->phout, maxindex);
   }
   /* take back one frame delay */
@@ -237,5 +237,5 @@
   if (beat >= 0) {
     //AUBIO_DBG ("beat: %d, %f, %f\n", i, bp, beat);
-    output->data[0][i] = beat;
+    output->data[i] = beat;
     i++;
   }
@@ -244,5 +244,5 @@
     beat += bp;
     //AUBIO_DBG ("beat: %d, %f, %f\n", i, bp, beat);
-    output->data[0][i] = beat;
+    output->data[i] = beat;
     i++;
   }
@@ -250,5 +250,5 @@
   bt->lastbeat = beat;
   /* store the number of beats in this frame as the first element */
-  output->data[0][0] = i;
+  output->data[0] = i;
 }
 
@@ -260,12 +260,12 @@
   if (acflen > 6 * gp + 2) {
     for (k = -2; k < 2; k++) {
-      three_energy += acf->data[0][3 * gp + k];
-      four_energy += acf->data[0][4 * gp + k];
+      three_energy += acf->data[3 * gp + k];
+      four_energy += acf->data[4 * gp + k];
     }
   } else {
     /*Expanded to be more accurate in time sig estimation */
     for (k = -2; k < 2; k++) {
-      three_energy += acf->data[0][3 * gp + k] + acf->data[0][6 * gp + k];
-      four_energy += acf->data[0][4 * gp + k] + acf->data[0][2 * gp + k];
+      three_energy += acf->data[3 * gp + k] + acf->data[6 * gp + k];
+      four_energy += acf->data[4 * gp + k] + acf->data[2 * gp + k];
     }
   }
@@ -301,10 +301,10 @@
       for (a = 1; a <= bt->timesig; a++) {
         for (b = (1 - a); b < a; b++) {
-          acfout->data[0][i] += acf->data[0][a * (i + 1) + b - 1];
+          acfout->data[i] += acf->data[a * (i + 1) + b - 1];
         }
       }
     }
     fvec_weight (acfout, bt->gwv);
-    gp = fvec_quadint (acfout, fvec_max_elem (acfout), 0);
+    gp = fvec_quadint (acfout, fvec_max_elem (acfout));
     /*
        while(gp<32) gp =gp*2;
@@ -351,5 +351,5 @@
     bt->timesig = fvec_gettimesig (acf, acflen, gp);
     for (j = 0; j < laglen; j++)
-      bt->gwv->data[0][j] =
+      bt->gwv->data[j] =
           EXP (-.5 * SQR ((smpl_t) (j + 1. - gp)) / SQR (bt->g_var));
     flagconst = 0;
@@ -363,5 +363,5 @@
     if (step > bt->lastbeat) {
       for (j = 0; j < 2 * laglen; j++) {
-        bt->phwv->data[0][j] =
+        bt->phwv->data[j] =
             EXP (-.5 * SQR ((smpl_t) (1. + j - step +
                     bt->lastbeat)) / (bp / 8.));
@@ -410,5 +410,5 @@
 {
   if (bt->timesig != 0 && bt->counter == 0 && bt->flagstep == 0) {
-    return 5168. / fvec_quadint (bt->acfout, bt->bp, 0);
+    return 5168. / fvec_quadint (bt->acfout, bt->bp);
   } else {
     return 0.;
Index: src/tempo/beattracking.h
===================================================================
--- src/tempo/beattracking.h	(revision 741bdda6b26a37c6f58d02738d8b8221cb294542)
+++ src/tempo/beattracking.h	(revision d2073008dcbc8f07eb16446a618c10aa8f2dd2e1)
@@ -48,8 +48,7 @@
 
   \param hop_size number of onset detection samples [512] 
-  \param channels number (not functionnal) [1]
 
 */
-aubio_beattracking_t * new_aubio_beattracking(uint_t hop_size, uint_t channels);
+aubio_beattracking_t * new_aubio_beattracking(uint_t hop_size);
 
 /** track the beat 
Index: src/tempo/tempo.c
===================================================================
--- src/tempo/tempo.c	(revision 741bdda6b26a37c6f58d02738d8b8221cb294542)
+++ src/tempo/tempo.c	(revision d2073008dcbc8f07eb16446a618c10aa8f2dd2e1)
@@ -59,5 +59,5 @@
   /*if (usedoubled) {
     aubio_specdesc_do(o2,fftgrain, onset2);
-    onset->data[0][0] *= onset2->data[0][0];
+    onset->data[0] *= onset2->data[0];
   }*/
   /* execute every overlap_size*step */
@@ -67,24 +67,24 @@
     /* rotate dfframe */
     for (i = 0 ; i < winlen - step; i++ ) 
-      o->dfframe->data[0][i] = o->dfframe->data[0][i+step];
+      o->dfframe->data[i] = o->dfframe->data[i+step];
     for (i = winlen - step ; i < winlen; i++ ) 
-      o->dfframe->data[0][i] = 0.;
+      o->dfframe->data[i] = 0.;
     o->blockpos = -1;
   }
   o->blockpos++;
   aubio_peakpicker_do (o->pp, o->of, o->onset);
-  tempo->data[0][1] = o->onset->data[0][0];
+  tempo->data[1] = o->onset->data[0];
   thresholded = aubio_peakpicker_get_thresholded_input(o->pp);
-  o->dfframe->data[0][winlen - step + o->blockpos] = thresholded->data[0][0];
+  o->dfframe->data[winlen - step + o->blockpos] = thresholded->data[0];
   /* end of second level loop */
-  tempo->data[0][0] = 0; /* reset tactus */
+  tempo->data[0] = 0; /* reset tactus */
   i=0;
-  for (i = 1; i < o->out->data[0][0]; i++ ) {
+  for (i = 1; i < o->out->data[0]; i++ ) {
     /* if current frame is a predicted tactus */
-    if (o->blockpos == FLOOR(o->out->data[0][i])) {
-      tempo->data[0][0] = o->out->data[0][i] - FLOOR(o->out->data[0][i]); /* set tactus */
+    if (o->blockpos == FLOOR(o->out->data[i])) {
+      tempo->data[0] = o->out->data[i] - FLOOR(o->out->data[i]); /* set tactus */
       /* test for silence */
       if (aubio_silence_detection(input, o->silence)==1) {
-        tempo->data[0][1] = 0; /* unset onset */
+        tempo->data[1] = 0; /* unset onset */
       }
     }
@@ -105,5 +105,5 @@
 /* Allocate memory for an tempo detection */
 aubio_tempo_t * new_aubio_tempo (char_t * onset_mode, 
-    uint_t buf_size, uint_t hop_size, uint_t channels, uint_t samplerate)
+    uint_t buf_size, uint_t hop_size, uint_t samplerate)
 {
   aubio_tempo_t * o = AUBIO_NEW(aubio_tempo_t);
@@ -115,17 +115,17 @@
   o->silence = -90.;
   o->blockpos = 0;
-  o->dfframe  = new_fvec(o->winlen,channels);
-  o->fftgrain = new_cvec(buf_size, channels);
-  o->out      = new_fvec(o->step,channels);
-  o->pv       = new_aubio_pvoc(buf_size, hop_size, channels);
-  o->pp       = new_aubio_peakpicker(channels);
+  o->dfframe  = new_fvec(o->winlen);
+  o->fftgrain = new_cvec(buf_size);
+  o->out      = new_fvec(o->step);
+  o->pv       = new_aubio_pvoc(buf_size, hop_size);
+  o->pp       = new_aubio_peakpicker();
   aubio_peakpicker_set_threshold (o->pp, o->threshold);
-  o->od       = new_aubio_specdesc(onset_mode,buf_size,channels);
-  o->of       = new_fvec(1, channels);
-  o->bt       = new_aubio_beattracking(o->winlen,channels);
-  o->onset    = new_fvec(1, channels);
+  o->od       = new_aubio_specdesc(onset_mode,buf_size);
+  o->of       = new_fvec(1);
+  o->bt       = new_aubio_beattracking(o->winlen);
+  o->onset    = new_fvec(1);
   /*if (usedoubled)    {
-    o2 = new_aubio_specdesc(type_onset2,buffer_size,channels);
-    onset2 = new_fvec(1 , channels);
+    o2 = new_aubio_specdesc(type_onset2,buffer_size);
+    onset2 = new_fvec(1);
   }*/
   return o;
Index: src/tempo/tempo.h
===================================================================
--- src/tempo/tempo.h	(revision 741bdda6b26a37c6f58d02738d8b8221cb294542)
+++ src/tempo/tempo.h	(revision d2073008dcbc8f07eb16446a618c10aa8f2dd2e1)
@@ -40,5 +40,5 @@
 /** create tempo detection object */
 aubio_tempo_t * new_aubio_tempo (char_t * method, 
-    uint_t buf_size, uint_t hop_size, uint_t channels, uint_t samplerate);
+    uint_t buf_size, uint_t hop_size, uint_t samplerate);
 
 /** execute tempo detection */
