- Timestamp:
- May 17, 2006, 9:46:09 PM (19 years ago)
- Branches:
- feature/autosink, feature/cnn, feature/cnn_org, feature/constantq, feature/crepe, feature/crepe_org, feature/pitchshift, feature/pydocstrings, feature/timestretch, fix/ffmpeg5, master, pitchshift, sampler, timestretch, yinfft+
- Children:
- ca29f57
- Parents:
- 2afdb0f
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/onsetdetection.h
r2afdb0f r6ebcb08 18 18 */ 19 19 20 /** @file 21 * 22 * Onset detection functions 23 * 24 * These functions are adapted from Juan Pablo Bello matlab code. 25 * 26 * - all of the following onset detection function take as arguments the fft of 27 * a windowed signal ( be created with an aubio_pvoc). 28 * 29 * 30 * (the phasevocoder implementation does implement an fftshift like) 31 * 32 * - they output one smpl_t per frame and per channel (stored in a fvec_t * of 33 * size [channels][1]) 34 * 35 * Some of the functions should be improved by - downsampling the input of the 36 * phasevocoder - oversampling the ouput 37 * 38 * \todo write a generic driver (with a phase vocoder and the appropriate 39 * resampling) 40 */ 20 /** \file 21 22 Onset detection functions 23 24 All of the following onset detection function take as arguments the FFT of a 25 windowed signal (as created with aubio_pvoc). They output one smpl_t per 26 buffer and per channel (stored in a vector of size [channels]x[1]). 27 28 These functions were first adapted from Juan Pablo Bello's code, and now 29 include further improvements and modifications made within aubio. 30 31 \todo Write a generic driver similar to pitchdetection.c, including the phase 32 vocoder, the silence detection, and the peak picking. 33 34 */ 41 35 42 36 … … 55 49 aubio_onset_complex, /**< complex domain */ 56 50 aubio_onset_phase, /**< phase fast */ 57 aubio_onset_kl, /**< Kullback Liebler (Hainsworth et al., Onset detection in musical audio signals)*/58 aubio_onset_mkl /**< modified Kullback Liebler (Hainsworth et al., Onset detection in musical audio signals)*/51 aubio_onset_kl, /**< Kullback Liebler */ 52 aubio_onset_mkl /**< modified Kullback Liebler */ 59 53 } aubio_onsetdetection_type; 60 54 … … 62 56 typedef struct _aubio_onsetdetection_t aubio_onsetdetection_t; 63 57 /** Energy based onset detection function 64 * 65 * calculates the local energy profile 66 * 67 * - buffer 1024 68 * - overlap 512 69 */ 58 59 This function calculates the local energy of the input spectral frame. 60 61 \param o onset detection object as returned by new_aubio_pitchfcomb 62 \param fftgrain input spectral frame 63 \param onset output onset detection function 64 65 */ 70 66 void aubio_onsetdetection_energy(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset); 71 67 /** High Frequency Content onset detection function 72 * 73 * - buffer 1024 74 * - overlap 512 75 */ 68 69 This method computes the High Frequency Content (HFC) of the input spectral 70 frame. The resulting function is efficient at detecting percussive onsets. 71 72 Paul Masri. Computer modeling of Sound for Transformation and Synthesis of 73 Musical Signal. PhD dissertation, University of Bristol, UK, 1996. 74 75 \param o onset detection object as returned by new_aubio_pitchfcomb 76 \param fftgrain input spectral frame 77 \param onset output onset detection function 78 79 */ 76 80 void aubio_onsetdetection_hfc(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset); 77 81 /** Complex Domain Method onset detection function 78 * 79 * From C. Duxbury & J. Pablo Bello 80 * 81 * - buffer 512 82 * - overlap 128 83 * - dowfact 8 84 * - interpfact 2 85 */ 82 83 Christopher Duxbury, Mike E. Davies, and Mark B. Sandler. Complex domain 84 onset detection for musical signals. In Proceedings of the Digital Audio 85 Effects Conference, DAFx-03, pages 9093, London, UK, 2003. 86 87 \param o onset detection object as returned by new_aubio_pitchfcomb 88 \param fftgrain input spectral frame 89 \param onset output onset detection function 90 91 */ 86 92 void aubio_onsetdetection_complex(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset); 87 93 /** Phase Based Method onset detection function 88 * 89 * - buffer 512 90 * - overlap 128 91 * - dowfact 8 92 * - interpfact 2 93 */ 94 95 Juan-Pablo Bello, Mike P. Davies, and Mark B. Sandler. Phase-based note onset 96 detection for music signals. In Proceedings of the IEEE International 97 Conference on Acoustics Speech and Signal Processing, pages 441444, 98 Hong-Kong, 2003. 99 100 \param o onset detection object as returned by new_aubio_pitchfcomb 101 \param fftgrain input spectral frame 102 \param onset output onset detection function 103 104 */ 94 105 void aubio_onsetdetection_phase(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset); 95 106 /** Spectral difference method onset detection function 96 * 97 * - buffer 512 98 * - overlap 128 99 * - dowfact 8 100 * - interpfact 2 101 */ 107 108 Jonhatan Foote and Shingo Uchihashi. The beat spectrum: a new approach to 109 rhythm analysis. In IEEE International Conference on Multimedia and Expo 110 (ICME 2001), pages 881884, Tokyo, Japan, August 2001. 111 112 \param o onset detection object as returned by new_aubio_pitchfcomb 113 \param fftgrain input spectral frame 114 \param onset output onset detection function 115 116 */ 102 117 void aubio_onsetdetection_specdiff(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset); 103 /** Kullback-Liebler onset detection function */ 118 /** Kullback-Liebler onset detection function 119 120 Stephen Hainsworth and Malcom Macleod. Onset detection in music audio 121 signals. In Proceedings of the International Computer Music Conference 122 (ICMC), Singapore, 2003. 123 124 \param o onset detection object as returned by new_aubio_pitchfcomb 125 \param fftgrain input spectral frame 126 \param onset output onset detection function 127 128 */ 104 129 void aubio_onsetdetection_kl(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset); 105 /** Modified Kullback-Liebler onset detection function */ 130 /** Modified Kullback-Liebler onset detection function 131 132 Paul Brossier, ``Automatic annotation of musical audio for interactive 133 systems'', Chapter 2, Temporal segmentation, PhD thesis, Centre for Digital 134 music, Queen Mary University of London, London, UK, 2003. 135 136 \param o onset detection object as returned by new_aubio_pitchfcomb 137 \param fftgrain input spectral frame 138 \param onset output onset detection function 139 140 */ 106 141 void aubio_onsetdetection_mkl(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset); 107 /** Generic function pointing to the choosen one */ 142 /** execute onset detection function on a spectral frame 143 144 Generic function to compute onset detection. 145 146 \param o onset detection object as returned by new_aubio_onsetdetection 147 \param fftgrain input signal spectrum as computed by aubio_pvoc_do 148 \param onset output vector (one sample long, to send to the peak picking) 149 150 */ 108 151 void aubio_onsetdetection(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset); 109 /** Allocate memory for an onset detection */ 152 /** creation of an onset detection object 153 154 \param type onset detection mode 155 \param size length of the input spectrum frame 156 \param channels number of input channels 157 158 */ 110 159 aubio_onsetdetection_t * new_aubio_onsetdetection(aubio_onsetdetection_type type, uint_t size, uint_t channels); 111 /** Free memory for an onset detection */ 160 /** deletion of an onset detection object 161 162 \param o onset detection object as returned by new_aubio_pitchfcomb 163 164 */ 112 165 void aubio_onsetdetection_free(aubio_onsetdetection_t *o); 113 166
Note: See TracChangeset
for help on using the changeset viewer.