/*
- 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;
}