shithub: aubio

Download patch

ref: e7d4aa0a172fb12794dd0f337e9a5fa40834626b
parent: 284fe8a875a1bfa847b1141d3e2fafa119216102
author: Paul Brossier <piem@piem.org>
date: Mon Nov 28 10:40:57 EST 2016

tests/src/effects/test-timestretch.c: update to use new interface

--- a/tests/src/effects/test-timestretch.c
+++ b/tests/src/effects/test-timestretch.c
@@ -21,6 +21,7 @@
   smpl_t transpose = 0.;
   smpl_t stretch = 1.;
   uint_t n_frames = 0, read = 0;
+  uint_t eof = 0, source_read = 0;
 
   char_t *source_path = argv[1];
   char_t *sink_path = argv[2];
@@ -38,13 +39,19 @@
     return err;
   }
 
+  uint_t source_hopsize = 2048;
+  aubio_source_t *s = new_aubio_source(source_path, samplerate, source_hopsize);
+  if (!s) { err = 1; goto beach_source; }
+  if (samplerate == 0) samplerate = aubio_source_get_samplerate(s);
+
+  fvec_t *in = new_fvec(source_hopsize);
   fvec_t *out = new_fvec(hop_size);
   if (!out) { err = 1; goto beach_fvec; }
 
-  aubio_timestretch_t *ps = new_aubio_timestretch(source_path, mode,
-      stretch, hop_size, samplerate);
+  aubio_timestretch_t *ps = new_aubio_timestretch(mode, stretch, hop_size,
+      samplerate);
   if (!ps) { err = 1; goto beach_timestretch; }
-  if (samplerate == 0 ) samplerate = aubio_timestretch_get_samplerate(ps);
+  //if (samplerate == 0 ) samplerate = aubio_timestretch_get_samplerate(ps);
 
   aubio_sink_t *o = new_aubio_sink(sink_path, samplerate);
   if (!o) { err = 1; goto beach_sink; }
@@ -51,54 +58,32 @@
 
   if (transpose != 0) aubio_timestretch_set_transpose(ps, transpose);
 
-#if 0
   do {
-    if (aubio_timestretch_get_opened(ps) == 0)
-      PRINT_MSG("not opened!\n");
-    aubio_timestretch_get_opened(ps);
-    aubio_timestretch_set_stretch(ps, stretch);
-    aubio_timestretch_set_transpose(ps, transpose);
-    aubio_timestretch_do(ps, out, &read);
-    if (samplerate == 0) {
-      PRINT_MSG("setting samplerate now to %d\n", aubio_timestretch_get_samplerate(ps));
-      samplerate = aubio_timestretch_get_samplerate(ps);
-      aubio_sink_preset_samplerate(o, samplerate);
-      aubio_sink_preset_channels(o, 1);
+    //aubio_timestretch_set_stretch(ps, stretch);
+    //aubio_timestretch_set_transpose(ps, transpose);
+
+    while (aubio_timestretch_get_available(ps) < (sint_t)hop_size && !eof) {
+      aubio_source_do(s, in, &source_read);
+      aubio_timestretch_push(ps, in, source_read);
+      if (source_read < in->length) eof = 1;
     }
+#if 0
+    if (n_frames == hop_size * 200) {
+      PRINT_MSG("sampler: setting stretch gave %d\n",
+          aubio_timestretch_set_stretch(ps, 2.) );
+      PRINT_MSG("sampler: getting stretch gave %f\n",
+          aubio_timestretch_get_stretch(ps) );
+      PRINT_MSG("sampler: setting transpose gave %d\n",
+          aubio_timestretch_set_transpose(ps, 12.) );
+      PRINT_MSG("sampler: getting transpose gave %f\n",
+          aubio_timestretch_get_transpose(ps) );
+    }
+#endif
+    aubio_timestretch_do(ps, out, &read);
     aubio_sink_do(o, out, read);
     n_frames += read;
   } while ( read == hop_size );
-#else
 
-  aubio_timestretch_queue(ps, source_path, samplerate);
-
-  do {
-    aubio_timestretch_get_opened(ps);
-    aubio_timestretch_set_stretch(ps, stretch);
-    aubio_timestretch_set_transpose(ps, transpose);
-    aubio_timestretch_do(ps, out, &read);
-    if (n_frames == 34999 * hop_size) {
-      PRINT_MSG("instant queuing?\n");
-      aubio_timestretch_queue(ps, source_path, samplerate);
-    }
-    if (n_frames == 64999 * hop_size) {
-      PRINT_MSG("instant queuing 2\n");
-      aubio_timestretch_queue(ps, "/dev/null", samplerate);
-    }
-    if (n_frames == 54999 * hop_size) {
-      PRINT_MSG("instant queuing?\n");
-      aubio_timestretch_queue(ps, source_path, samplerate);
-    }
-    if (n_frames == 74999 * hop_size) {
-      PRINT_MSG("instant queuing?\n");
-      aubio_timestretch_queue(ps, source_path, samplerate);
-    }
-    aubio_sink_do(o, out, read);
-  //} while ( read == hop_size );
-    n_frames += hop_size;
-  } while ( n_frames < 100000 * hop_size);
-#endif
-
   PRINT_MSG("wrote %d frames at %dHz (%d blocks) from %s written to %s\n",
       n_frames, samplerate, n_frames / hop_size,
       source_path, sink_path);
@@ -109,5 +94,7 @@
 beach_timestretch:
   del_fvec(out);
 beach_fvec:
+  del_aubio_source(s);
+beach_source:
   return err;
 }