Unified · Split
| @@ -38,8 +38,10 @@ · 37 unmodified lines | ||
| 38 | 38 | #endif |
| 39 | 39 | #else |
| 40 | 40 | #if FFTW3F_SUPPORT |
| 41 | +/** fft data type */ | |
| 41 | 42 | #define FFTW_TYPE float |
| 42 | 43 | #else |
| 44 | +/** fft data type */ | |
| 43 | 45 | #define FFTW_TYPE double |
| 44 | 46 | #endif |
| 45 | 47 | #endif |
| @@ -48,6 +50,7 @@ · 2 unmodified lines | ||
| 48 | 50 | extern "C" { |
| 49 | 51 | #endif |
| 50 | 52 | |
| 53 | +/** fft data type */ | |
| 51 | 54 | typedef FFTW_TYPE fft_data_t; |
| 52 | 55 | |
| 53 | 56 | /** FFT object |
| @@ -66,8 +66,7 @@ void aubio_filter_do_outplace(aubio_filter_t * b, fvec_t * in, fvec_t * out); · 65 unmodified lines | ||
| 66 | 66 | void aubio_filter_do_filtfilt(aubio_filter_t * b, fvec_t * in, fvec_t * tmp); |
| 67 | 67 | /** create new IIR filter |
| 68 | 68 | |
| 69 | − \param b vector of forward coefficients | |
| 70 | − \param a vector of feedback coefficients | |
| 69 | + \param samplerate signal sampling rate | |
| 71 | 70 | \param order order of the filter (number of coefficients) |
| 72 | 71 | |
| 73 | 72 | */ |
| @@ -42,10 +42,15 @@ typedef struct _aubio_hist_t aubio_hist_t; · 41 unmodified lines | ||
| 42 | 42 | aubio_hist_t * new_aubio_hist(smpl_t flow, smpl_t fhig, uint_t nelems, uint_t channels); |
| 43 | 43 | /** histogram deletion */ |
| 44 | 44 | void del_aubio_hist(aubio_hist_t *s); |
| 45 | +/** compute the histogram */ | |
| 45 | 46 | void aubio_hist_do(aubio_hist_t *s, fvec_t * input); |
| 47 | +/** compute the histogram ignoring null elements */ | |
| 46 | 48 | void aubio_hist_do_notnull(aubio_hist_t *s, fvec_t * input); |
| 49 | +/** compute the mean of the histogram */ | |
| 47 | 50 | smpl_t aubio_hist_mean(aubio_hist_t *s); |
| 51 | +/** weight the histogram */ | |
| 48 | 52 | void aubio_hist_weigth(aubio_hist_t *s); |
| 53 | +/** compute dynamic histogram for non-null elements */ | |
| 49 | 54 | void aubio_hist_dyn_notnull (aubio_hist_t *s, fvec_t *input); |
| 50 | 55 | |
| 51 | 56 | #ifdef __cplusplus |
| @@ -118,13 +118,14 @@ smpl_t vec_local_hfc(fvec_t * f); · 117 unmodified lines | ||
| 118 | 118 | * \bug should not use POW :( |
| 119 | 119 | */ |
| 120 | 120 | smpl_t vec_alpha_norm(fvec_t * DF, smpl_t alpha); |
| 121 | −/* dc(min) removal */ | |
| 121 | +/** dc(min) removal */ | |
| 122 | 122 | void vec_dc_removal(fvec_t * mag); |
| 123 | 123 | /** alpha normalisation */ |
| 124 | 124 | void vec_alpha_normalise(fvec_t * mag, uint_t alpha); |
| 125 | − | |
| 125 | +/** add a constant to all members of a vector */ | |
| 126 | 126 | void vec_add(fvec_t * mag, smpl_t threshold); |
| 127 | 127 | |
| 128 | +/** compute adaptive threshold of input vector */ | |
| 128 | 129 | void vec_adapt_thres(fvec_t * vec, fvec_t * tmp, |
| 129 | 130 | uint_t win_post, uint_t win_pre); |
| 130 | 131 | /** adaptative thresholding |
| @@ -181,14 +182,22 @@ smpl_t aubio_quadfrac(smpl_t s0, smpl_t s1, smpl_t s2, smpl_t pf); · 50 unmodified lines | ||
| 181 | 182 | /** returns 1 if X1 is a peak and positive */ |
| 182 | 183 | uint_t vec_peakpick(fvec_t * input, uint_t pos); |
| 183 | 184 | |
| 185 | +/** convert frequency bin to midi value */ | |
| 184 | 186 | smpl_t aubio_bintomidi(smpl_t bin, smpl_t samplerate, smpl_t fftsize); |
| 187 | +/** convert midi value to frequency bin */ | |
| 185 | 188 | smpl_t aubio_miditobin(smpl_t midi, smpl_t samplerate, smpl_t fftsize); |
| 189 | +/** convert frequency bin to frequency (Hz) */ | |
| 186 | 190 | smpl_t aubio_bintofreq(smpl_t bin, smpl_t samplerate, smpl_t fftsize); |
| 191 | +/** convert frequency (Hz) to frequency bin */ | |
| 187 | 192 | smpl_t aubio_freqtobin(smpl_t freq, smpl_t samplerate, smpl_t fftsize); |
| 193 | +/** convert frequency (Hz) to midi value (0-128) */ | |
| 188 | 194 | smpl_t aubio_freqtomidi(smpl_t freq); |
| 195 | +/** convert midi value (0-128) to frequency (Hz) */ | |
| 189 | 196 | smpl_t aubio_miditofreq(smpl_t midi); |
| 190 | 197 | |
| 198 | +/** check if current buffer level is under a given threshold */ | |
| 191 | 199 | uint_t aubio_silence_detection(fvec_t * ibuf, smpl_t threshold); |
| 200 | +/** get the current buffer level */ | |
| 192 | 201 | smpl_t aubio_level_detection(fvec_t * ibuf, smpl_t threshold); |
| 193 | 202 | /** |
| 194 | 203 | * calculate normalised autocorrelation function |
| @@ -30,20 +30,31 @@ · 29 unmodified lines | ||
| 30 | 30 | extern "C" { |
| 31 | 31 | #endif |
| 32 | 32 | |
| 33 | +/** function pointer to thresholding function */ | |
| 33 | 34 | typedef smpl_t (*aubio_thresholdfn_t)(fvec_t *input); |
| 35 | +/** function pointer to peak-picking function */ | |
| 34 | 36 | typedef uint_t (*aubio_pickerfn_t)(fvec_t *input, uint_t pos); |
| 37 | +/** peak-picker structure */ | |
| 35 | 38 | typedef struct _aubio_pickpeak_t aubio_pickpeak_t; |
| 36 | 39 | |
| 40 | +/** peak-picker creation function */ | |
| 37 | 41 | aubio_pickpeak_t * new_aubio_peakpicker(smpl_t threshold); |
| 42 | +/** real time peak picking function */ | |
| 38 | 43 | uint_t aubio_peakpick_pimrt(fvec_t * DF, aubio_pickpeak_t * p); |
| 39 | 44 | /** function added by Miguel Ramirez to return the onset detection amplitude in peakval */ |
| 40 | 45 | uint_t aubio_peakpick_pimrt_wt( fvec_t* DF, aubio_pickpeak_t* p, smpl_t* peakval ); |
| 46 | +/** get current peak value */ | |
| 41 | 47 | smpl_t aubio_peakpick_pimrt_getval(aubio_pickpeak_t * p); |
| 48 | +/** destroy peak picker structure */ | |
| 42 | 49 | void del_aubio_peakpicker(aubio_pickpeak_t * p); |
| 43 | 50 | |
| 51 | +/** set peak picking threshold */ | |
| 44 | 52 | void aubio_peakpicker_set_threshold(aubio_pickpeak_t * p, smpl_t threshold); |
| 53 | +/** get peak picking threshold */ | |
| 45 | 54 | smpl_t aubio_peakpicker_get_threshold(aubio_pickpeak_t * p); |
| 55 | +/** set peak picker thresholding function */ | |
| 46 | 56 | void aubio_peakpicker_set_thresholdfn(aubio_pickpeak_t * p, aubio_thresholdfn_t thresholdfn); |
| 57 | +/** get peak picker thresholding function */ | |
| 47 | 58 | aubio_thresholdfn_t aubio_peakpicker_get_thresholdfn(aubio_pickpeak_t * p); |
| 48 | 59 | |
| 49 | 60 | #ifdef __cplusplus |
| @@ -49,6 +49,7 @@ typedef struct _aubio_pitchmcomb_t aubio_pitchmcomb_t; · 48 unmodified lines | ||
| 49 | 49 | |
| 50 | 50 | */ |
| 51 | 51 | smpl_t aubio_pitchmcomb_detect(aubio_pitchmcomb_t * p, cvec_t * fftgrain); |
| 52 | +/** select the best candidates */ | |
| 52 | 53 | uint_t aubio_pitch_cands(aubio_pitchmcomb_t * p, cvec_t * fftgrain, smpl_t * cands); |
| 53 | 54 | /** creation of the pitch detection object |
| 54 | 55 | |
| @@ -17,6 +17,15 @@ · 16 unmodified lines | ||
| 17 | 17 | |
| 18 | 18 | */ |
| 19 | 19 | |
| 20 | +/** \file | |
| 21 | + | |
| 22 | + Tempo detection driver | |
| 23 | + | |
| 24 | + This object stores all the memory required for tempo detection algorithm | |
| 25 | + and returns the estimated beat locations. | |
| 26 | + | |
| 27 | +*/ | |
| 28 | + | |
| 20 | 29 | #ifndef TEMPO_H |
| 21 | 30 | #define TEMPO_H |
| 22 | 31 | |
| @@ -24,6 +33,7 @@ · 1 unmodified line | ||
| 24 | 33 | extern "C" { |
| 25 | 34 | #endif |
| 26 | 35 | |
| 36 | +/** tempo detection structure */ | |
| 27 | 37 | typedef struct _aubio_tempo_t aubio_tempo_t; |
| 28 | 38 | |
| 29 | 39 | /** create tempo detection object */ |