[tests] add run_on_default_source_and_sink helper
[aubio.git] / examples / aubioquiet.c
index c6335b8..f62e1ed 100644 (file)
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2003-2009 Paul Brossier <piem@aubio.org>
+  Copyright (C) 2003-2013 Paul Brossier <piem@aubio.org>
 
   This file is part of aubio.
 
 */
 
 #include "utils.h"
+#define PROG_HAS_SILENCE 1
+#include "parse_args.h"
 
-unsigned int pos = 0; /*frames%dspblocksize*/
 sint_t wassilence = 1, issilence;
 
-int aubio_process(smpl_t **input, smpl_t **output, int nframes);
-int aubio_process(smpl_t **input, smpl_t **output, int nframes) {
-  unsigned int j;       /*frames*/
-  for (j=0;j<(unsigned)nframes;j++) {
-    if(usejack) {
-      /* write input to datanew */
-      fvec_write_sample(ibuf, input[0][j], pos);
-      /* put synthnew in output */
-      output[0][j] = fvec_read_sample(obuf, pos);
-    }
-    /*time for fft*/
-    if (pos == overlap_size-1) {         
-      /* test for silence */
-      if (aubio_silence_detection(ibuf, silence)==1) {
-        if (wassilence==1) issilence = 1;
-        else issilence = 2;
-        wassilence=1;
-      } else { 
-        if (wassilence<=0) issilence = 0;
-        else issilence = -1;
-        wassilence=0;
-      }
-      /* end of block loop */
-      pos = -1; /* so it will be zero next j loop */
-    }
-    pos++;
+void process_block(fvec_t * ibuf, fvec_t * obuf) {
+  fvec_zeros (obuf);
+  if (aubio_silence_detection(ibuf, silence_threshold)==1) {
+    if (wassilence==1) issilence = 1;
+    else issilence = 2;
+    wassilence=1;
+  } else {
+    if (wassilence<=0) issilence = 0;
+    else issilence = -1;
+    wassilence=0;
   }
-  return 1;
 }
 
-static void process_print (void) {
-      int curframes = (frames - 4) > 0 ? frames -4 : 0;
-      if (issilence == -1) {
-          outmsg("NOISY: %f\n",curframes*overlap_size/(float)samplerate);
-      } else if (issilence == 2) { 
-          outmsg("QUIET: %f\n",curframes*overlap_size/(float)samplerate);
-      }
+void process_print (void) {
+  int curblocks = (blocks - 4) > 0 ? blocks - 4 : 0;
+  if (issilence == -1 || issilence == 2) {
+    if (issilence == -1) {
+      outmsg ("NOISY: ");
+    } else { // if (issilence == 2) {
+      outmsg ("QUIET: ");
+    }
+    print_time (curblocks * hop_size);
+    outmsg ("\n");
+  }
 }
 
 int main(int argc, char **argv) {
   examples_common_init(argc,argv);
-  examples_common_process(aubio_process,process_print);
+  verbmsg ("using source: %s at %dHz\n", source_uri, samplerate);
+  verbmsg ("buffer_size: %d, ", buffer_size);
+  verbmsg ("hop_size: %d\n", hop_size);
+  examples_common_process((aubio_process_func_t)process_block,process_print);
   examples_common_del();
-  debug("End of program.\n");
-  fflush(stderr);
   return 0;
 }