README: add note about my ignorance
[java-aubio.git] / aubio.i
1 %module aubiowrapper
2
3 %{
4 #include <aubio/aubio.h>
5 %}
6
7 /* type aliases */
8 typedef unsigned int uint_t;
9 typedef int sint_t;
10 typedef float smpl_t;
11
12 /* fvec */
13 fvec_t * new_fvec(uint_t length, uint_t channels);
14 void del_fvec(fvec_t *s);
15 smpl_t fvec_read_sample(fvec_t *s, uint_t channel, uint_t position);
16 void fvec_write_sample(fvec_t *s, smpl_t data, uint_t channel, uint_t position);
17 smpl_t * fvec_get_channel(fvec_t *s, uint_t channel);
18 void fvec_put_channel(fvec_t *s, smpl_t * data, uint_t channel);
19 smpl_t ** fvec_get_data(fvec_t *s);
20
21 /* cvec */
22 cvec_t * new_cvec(uint_t length, uint_t channels);
23 void del_cvec(cvec_t *s);
24 void cvec_write_norm(cvec_t *s, smpl_t data, uint_t channel, uint_t position);
25 void cvec_write_phas(cvec_t *s, smpl_t data, uint_t channel, uint_t position);
26 smpl_t cvec_read_norm(cvec_t *s, uint_t channel, uint_t position);
27 smpl_t cvec_read_phas(cvec_t *s, uint_t channel, uint_t position);
28 void cvec_put_norm_channel(cvec_t *s, smpl_t * data, uint_t channel);
29 void cvec_put_phas_channel(cvec_t *s, smpl_t * data, uint_t channel);
30 smpl_t * cvec_get_norm_channel(cvec_t *s, uint_t channel);
31 smpl_t * cvec_get_phas_channel(cvec_t *s, uint_t channel);
32 smpl_t ** cvec_get_norm(cvec_t *s);
33 smpl_t ** cvec_get_phas(cvec_t *s);
34
35
36 /* fft */
37 aubio_fft_t * new_aubio_fft(uint_t size, uint_t channels);
38 void del_aubio_fft(aubio_fft_t * s);
39 void aubio_fft_do (aubio_fft_t *s, fvec_t * input, cvec_t * spectrum);
40 void aubio_fft_rdo (aubio_fft_t *s, cvec_t * spectrum, fvec_t * output);
41 void aubio_fft_do_complex (aubio_fft_t *s, fvec_t * input, fvec_t * compspec);
42 void aubio_fft_rdo_complex (aubio_fft_t *s, fvec_t * compspec, fvec_t * output);
43 void aubio_fft_get_spectrum(fvec_t * compspec, cvec_t * spectrum);
44 void aubio_fft_get_realimag(cvec_t * spectrum, fvec_t * compspec);
45 void aubio_fft_get_phas(fvec_t * compspec, cvec_t * spectrum);
46 void aubio_fft_get_imag(cvec_t * spectrum, fvec_t * compspec);
47 void aubio_fft_get_norm(fvec_t * compspec, cvec_t * spectrum);
48 void aubio_fft_get_real(cvec_t * spectrum, fvec_t * compspec);
49
50 /* filter */
51 aubio_filter_t * new_aubio_filter(uint_t order, uint_t channels);
52 void aubio_filter_do(aubio_filter_t * b, fvec_t * in);
53 void aubio_filter_do_outplace(aubio_filter_t * b, fvec_t * in, fvec_t * out);
54 void aubio_filter_do_filtfilt(aubio_filter_t * b, fvec_t * in, fvec_t * tmp);
55 void del_aubio_filter(aubio_filter_t * b);
56
57 /* a_weighting */
58 aubio_filter_t * new_aubio_filter_a_weighting (uint_t channels, uint_t samplerate);
59 uint_t aubio_filter_set_a_weighting (aubio_filter_t * b, uint_t samplerate);
60
61 /* c_weighting */
62 aubio_filter_t * new_aubio_filter_c_weighting (uint_t channels, uint_t samplerate);
63 uint_t aubio_filter_set_c_weighting (aubio_filter_t * b, uint_t samplerate);
64
65 /* biquad */
66 aubio_filter_t * new_aubio_filter_biquad(lsmp_t b1, lsmp_t b2, lsmp_t b3, lsmp_t a2, lsmp_t a3, uint_t channels);
67 uint_t aubio_filter_set_biquad (aubio_filter_t * b, lsmp_t b1, lsmp_t b2, lsmp_t b3, lsmp_t a2, lsmp_t a3);
68
69 /* mathutils */
70 fvec_t * new_aubio_window(char * wintype, uint_t size);
71 smpl_t aubio_unwrap2pi (smpl_t phase);
72 smpl_t aubio_bintomidi(smpl_t bin, smpl_t samplerate, smpl_t fftsize);
73 smpl_t aubio_miditobin(smpl_t midi, smpl_t samplerate, smpl_t fftsize);
74 smpl_t aubio_bintofreq(smpl_t bin, smpl_t samplerate, smpl_t fftsize);
75 smpl_t aubio_freqtobin(smpl_t freq, smpl_t samplerate, smpl_t fftsize);
76 smpl_t aubio_freqtomidi(smpl_t freq);
77 smpl_t aubio_miditofreq(smpl_t midi);
78 uint_t aubio_silence_detection(fvec_t * ibuf, smpl_t threshold);
79 smpl_t aubio_level_detection(fvec_t * ibuf, smpl_t threshold);
80 smpl_t aubio_zero_crossing_rate(fvec_t * input);
81
82 /* mfcc */
83 aubio_mfcc_t * new_aubio_mfcc (uint_t win_s, uint_t samplerate, uint_t n_filters, uint_t n_coefs);
84 void del_aubio_mfcc(aubio_mfcc_t *mf);
85 void aubio_mfcc_do(aubio_mfcc_t *mf, cvec_t *in, fvec_t *out);
86
87 /* pvoc */
88 aubio_pvoc_t * new_aubio_pvoc (uint_t win_s, uint_t hop_s, uint_t channels);
89 void del_aubio_pvoc(aubio_pvoc_t *pv);
90 void aubio_pvoc_do(aubio_pvoc_t *pv, fvec_t *in, cvec_t * fftgrain);
91 void aubio_pvoc_rdo(aubio_pvoc_t *pv, cvec_t * fftgrain, fvec_t *out);
92
93 /* pitch detection */
94 aubio_pitch_t *new_aubio_pitch (char *pitch_mode,
95     uint_t bufsize, uint_t hopsize, uint_t channels, uint_t samplerate);
96 void aubio_pitch_do (aubio_pitch_t * p, fvec_t * ibuf, fvec_t * obuf);
97 uint_t aubio_pitch_set_tolerance(aubio_pitch_t *p, smpl_t thres);
98 uint_t aubio_pitch_set_unit(aubio_pitch_t *p, char * pitch_unit);
99 void del_aubio_pitch(aubio_pitch_t * p);
100
101 /* tempo */
102 aubio_tempo_t * new_aubio_tempo (char_t * mode,
103     uint_t buf_size, uint_t hop_size, uint_t channels, uint_t samplerate);
104 void aubio_tempo_do (aubio_tempo_t *o, fvec_t * input, fvec_t * tempo);
105 uint_t aubio_tempo_set_silence(aubio_tempo_t * o, smpl_t silence);
106 uint_t aubio_tempo_set_threshold(aubio_tempo_t * o, smpl_t threshold);
107 smpl_t aubio_tempo_get_bpm(aubio_tempo_t * bt);
108 smpl_t aubio_tempo_get_confidence(aubio_tempo_t * bt);
109 void del_aubio_tempo(aubio_tempo_t * o);