src/aubiopitch~.c: fix aubiopitch_tilde_del
[pd-aubio.git] / src / aubio_setup.c
1
2 #include <m_pd.h>
3 #include <aubio/aubio.h>
4 #include <string.h>
5
6 char aubio_version[] = "aubio external for pd, version " PACKAGE_VERSION;
7
8 static t_class *aubio_class;
9
10 typedef struct aubio
11 {
12   t_object x_ob;
13 } t_aubio;
14
15 void *aubio_new (void);
16 void aubio_setup (void);
17 extern void aubioonset_tilde_setup (void);
18 extern void aubiotempo_tilde_setup (void);
19 extern void aubiotss_tilde_setup (void);
20 extern void aubioquiet_tilde_setup (void);
21 extern void aubiopitch_tilde_setup (void);
22 extern void aubiozcr_tilde_setup (void);
23
24 void *aubio_new (void)
25 {
26   t_aubio *x = (t_aubio *)pd_new(aubio_class);
27   return (void *)x;
28 }
29
30 void aubio_custom_log(int level, const char *message, void *data)
31 {
32   // remove the last character, removing the trailing space
33   char *pos;
34   if ((pos=strchr(message, '\n')) != NULL) {
35         *pos = '\0';
36   }
37   post(message);
38 }
39
40 void aubio_setup (void)
41 {
42   post(aubio_version);
43   // register custom log function for errors and warnings
44   aubio_log_set_level_function(AUBIO_LOG_ERR, aubio_custom_log, NULL);
45   aubio_log_set_level_function(AUBIO_LOG_WRN, aubio_custom_log, NULL);
46   aubioonset_tilde_setup();
47   aubiotempo_tilde_setup();
48   aubiotss_tilde_setup();
49   aubioquiet_tilde_setup();
50   aubiopitch_tilde_setup();
51   aubiozcr_tilde_setup();
52   aubio_class = class_new(gensym("aubio"), (t_newmethod)aubio_new, 0,
53       sizeof(t_aubio), 0, 0);
54 }