2 Copyright (C) 2003 Paul Brossier
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2 of the License, or
7 (at your option) any later version.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
29 #ifdef HAVE_C99_VARARGS_MACROS
30 #define debug(...) if (verbose) fprintf (stderr, __VA_ARGS__)
31 #define errmsg(...) fprintf (stderr, __VA_ARGS__)
32 #define outmsg(...) fprintf (stdout, __VA_ARGS__)
34 #define debug(format, args...) if (verbose) fprintf(stderr, format , ##args)
35 #define errmsg(format, args...) fprintf(stderr, format , ##args)
36 #define outmsg(format, args...) fprintf(stdout, format , ##args)
43 extern int usedoubled;
44 extern unsigned int median;
45 extern const char * output_filename;
46 extern const char * input_filename;
47 /* defined in utils.c */
48 void usage (FILE * stream, int exit_code);
49 int parse_args (int argc, char **argv);
50 void examples_common_init(int argc, char **argv);
51 void examples_common_del(void);
52 typedef void (aubio_print_func_t)(void);
54 typedef int (*aubio_process_func_t)
55 (smpl_t **input, smpl_t **output, int nframes);
57 void examples_common_process(aubio_process_func_t process_func, aubio_print_func_t print);
60 void send_noteon(int pitch, int velo);
61 /** append new note candidate to the note_buffer and return filtered value. we
62 * need to copy the input array as vec_median destroy its input data.*/
63 void note_append(fvec_t * note_buffer, smpl_t curnote);
64 uint_t get_note(fvec_t *note_buffer, fvec_t *note_buffer2);
66 extern const char * output_filename;
67 extern const char * input_filename;
68 extern const char * onset_filename;
71 extern int usedoubled;
74 /* energy,specdiff,hfc,complexdomain,phase */
75 extern aubio_onsetdetection_type type_onset;
76 extern aubio_onsetdetection_type type_onset2;
77 extern smpl_t threshold;
78 extern smpl_t silence;
79 extern uint_t buffer_size;
80 extern uint_t overlap_size;
81 extern uint_t channels;
82 extern uint_t samplerate;
85 extern aubio_sndfile_t * file;
86 extern aubio_sndfile_t * fileout;
88 extern aubio_pvoc_t * pv;
91 extern cvec_t * fftgrain;
92 extern fvec_t * woodblock;
93 extern aubio_onsetdetection_t *o;
94 extern aubio_onsetdetection_t *o2;
96 extern fvec_t *onset2;
98 extern aubio_pickpeak_t * parms;
102 extern aubio_pitchdetection_t * pitchdet;
103 extern aubio_pitchdetection_type mode;
104 extern uint_t median;
106 extern fvec_t * note_buffer;
107 extern fvec_t * note_buffer2;
108 extern smpl_t curlevel;
109 extern smpl_t maxonset;
112 extern aubio_midi_player_t * mplay;
113 extern aubio_midi_driver_t * mdriver;
114 extern aubio_midi_event_t * event;
116 extern smpl_t curnote;
117 extern smpl_t newnote;
118 extern uint_t isready;
120 /* per example param */
121 extern uint_t usepitch;