examples/utils.{c,h}, examples/aubioonset.c: added process_flush function to get...
authorPaul Brossier <piem@piem.org>
Tue, 13 Nov 2007 08:15:35 +0000 (09:15 +0100)
committerPaul Brossier <piem@piem.org>
Tue, 13 Nov 2007 08:15:35 +0000 (09:15 +0100)
examples/aubioonset.c
examples/utils.c
examples/utils.h

index 880526f3a1970ef39d594559752ad396442d83d2..ab8374fa6344fd07d88f02d27847a4a1451dc4aa 100644 (file)
@@ -71,14 +71,15 @@ void process_print (void) {
        * actual onset */
       if (isonset && output_filename == NULL) {
         if(frames >= 4) {
-          outmsg("%f\n",(frames-4)*overlap_size/(float)samplerate);
-        } else if (frames < 4) {
+          outmsg("%f\n",(frames-frames_delay)*overlap_size/(float)samplerate);
+        } else if (frames < frames_delay) {
           outmsg("%f\n",0.);
         }
       }
 }
 
 int main(int argc, char **argv) {
+  frames_delay = 4;
   examples_common_init(argc,argv);
   examples_common_process(aubio_process,process_print);
   examples_common_del();
index 0a67606818fd2f15be6aba95216d35b0f922fdf3..3af049a98b248526dafeb622e63ed23ea1aca260 100644 (file)
@@ -21,6 +21,7 @@ void * lash_thread_main (void * data);
 int lash_main (void);
 void save_data (void);
 void restore_data(lash_config_t * lash_config);
+void flush_process(aubio_process_func_t process_func, aubio_print_func_t print);
 pthread_t lash_thread;
 #endif /* LASH_SUPPORT */
 
@@ -32,6 +33,7 @@ int frames = 0;
 int verbose = 0;
 int usejack = 0;
 int usedoubled = 1;
+int frames_delay = 0;
 
 
 /* energy,specdiff,hfc,complexdomain,phase */
@@ -394,6 +396,8 @@ void examples_common_process(aubio_process_func_t process_func, aubio_print_func
     }
 
     debug("Processed %d frames of %d samples.\n", frames, buffer_size);
+
+    flush_process(process_func, print);
     del_aubio_sndfile(file);
 
     if (output_filename != NULL)
@@ -402,6 +406,18 @@ void examples_common_process(aubio_process_func_t process_func, aubio_print_func
   }
 }
 
+void flush_process(aubio_process_func_t process_func, aubio_print_func_t print){
+  uint i,j;
+  for (i = 0; i < channels; i++) {
+    for (j = 0; j < obuf->length; j++) {
+      fvec_write_sample(obuf,0.,i,j);
+    }
+  }
+  for (i = 0; i < frames_delay; i++) {
+    process_func(ibuf->data, obuf->data, overlap_size);
+    print(); 
+  }
+}
 
 
 void send_noteon(int pitch, int velo)
index d4d02235eeed5bc85c03e701fba31ffa45af15e5..047b0a57de8688867215eb65b1b955594d54fa9b 100644 (file)
@@ -41,6 +41,7 @@ extern int frames;
 extern int verbose;
 extern int usejack;
 extern int usedoubled;
+extern int frames_delay;
 extern unsigned int median;
 extern const char * output_filename;
 extern const char * input_filename;