| @@ -22,20 +22,20 @@ · 21 unmodified lines |
| 22 | #include "fvec.h" | 22 | #include "fvec.h" |
| 23 | #include "cvec.h" | 23 | #include "cvec.h" |
| 24 | #include "spectral/fft.h" | 24 | #include "spectral/fft.h" |
| | 25 | #include "spectral/specdesc.h" |
| 25 | #include "mathutils.h" | 26 | #include "mathutils.h" |
| 26 | #include "utils/hist.h" | 27 | #include "utils/hist.h" |
| 27 | #include "onset/onsetdetection.h" | | |
| 28 | | 28 | |
| 29 | /** Energy based onset detection function | 29 | /** Energy based onset detection function |
| 30 | | 30 | |
| 31 | This function calculates the local energy of the input spectral frame. | 31 | This function calculates the local energy of the input spectral frame. |
| 32 | | 32 | |
| 33 | \param o onset detection object as returned by new_aubio_onsetdetection() | 33 | \param o onset detection object as returned by new_aubio_specdesc() |
| 34 | \param fftgrain input spectral frame | 34 | \param fftgrain input spectral frame |
| 35 | \param onset output onset detection function | 35 | \param onset output onset detection function |
| 36 | | 36 | |
| 37 | */ | 37 | */ |
| 38 | void aubio_onsetdetection_energy(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset); | 38 | void aubio_specdesc_energy(aubio_specdesc_t *o, cvec_t * fftgrain, fvec_t * onset); |
| 39 | /** High Frequency Content onset detection function | 39 | /** High Frequency Content onset detection function |
| 40 | | 40 | |
| 41 | This method computes the High Frequency Content (HFC) of the input spectral | 41 | This method computes the High Frequency Content (HFC) of the input spectral |
| @@ -44,24 +44,24 @@ void aubio_onsetdetection_energy(aubio_onsetdetection_t *o, cvec_t * fftgrain, f · 2 unmodified lines |
| 44 | Paul Masri. Computer modeling of Sound for Transformation and Synthesis of | 44 | Paul Masri. Computer modeling of Sound for Transformation and Synthesis of |
| 45 | Musical Signal. PhD dissertation, University of Bristol, UK, 1996. | 45 | Musical Signal. PhD dissertation, University of Bristol, UK, 1996. |
| 46 | | 46 | |
| 47 | \param o onset detection object as returned by new_aubio_onsetdetection() | 47 | \param o onset detection object as returned by new_aubio_specdesc() |
| 48 | \param fftgrain input spectral frame | 48 | \param fftgrain input spectral frame |
| 49 | \param onset output onset detection function | 49 | \param onset output onset detection function |
| 50 | | 50 | |
| 51 | */ | 51 | */ |
| 52 | void aubio_onsetdetection_hfc(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset); | 52 | void aubio_specdesc_hfc(aubio_specdesc_t *o, cvec_t * fftgrain, fvec_t * onset); |
| 53 | /** Complex Domain Method onset detection function | 53 | /** Complex Domain Method onset detection function |
| 54 | | 54 | |
| 55 | Christopher Duxbury, Mike E. Davies, and Mark B. Sandler. Complex domain | 55 | Christopher Duxbury, Mike E. Davies, and Mark B. Sandler. Complex domain |
| 56 | onset detection for musical signals. In Proceedings of the Digital Audio | 56 | onset detection for musical signals. In Proceedings of the Digital Audio |
| 57 | Effects Conference, DAFx-03, pages 90-93, London, UK, 2003. | 57 | Effects Conference, DAFx-03, pages 90-93, London, UK, 2003. |
| 58 | | 58 | |
| 59 | \param o onset detection object as returned by new_aubio_onsetdetection() | 59 | \param o onset detection object as returned by new_aubio_specdesc() |
| 60 | \param fftgrain input spectral frame | 60 | \param fftgrain input spectral frame |
| 61 | \param onset output onset detection function | 61 | \param onset output onset detection function |
| 62 | | 62 | |
| 63 | */ | 63 | */ |
| 64 | void aubio_onsetdetection_complex(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset); | 64 | void aubio_specdesc_complex(aubio_specdesc_t *o, cvec_t * fftgrain, fvec_t * onset); |
| 65 | /** Phase Based Method onset detection function | 65 | /** Phase Based Method onset detection function |
| 66 | | 66 | |
| 67 | Juan-Pablo Bello, Mike P. Davies, and Mark B. Sandler. Phase-based note onset | 67 | Juan-Pablo Bello, Mike P. Davies, and Mark B. Sandler. Phase-based note onset |
| @@ -69,60 +69,60 @@ void aubio_onsetdetection_complex(aubio_onsetdetection_t *o, cvec_t * fftgrain, · 1 unmodified line |
| 69 | Conference on Acoustics Speech and Signal Processing, pages 441444, | 69 | Conference on Acoustics Speech and Signal Processing, pages 441444, |
| 70 | Hong-Kong, 2003. | 70 | Hong-Kong, 2003. |
| 71 | | 71 | |
| 72 | \param o onset detection object as returned by new_aubio_onsetdetection() | 72 | \param o onset detection object as returned by new_aubio_specdesc() |
| 73 | \param fftgrain input spectral frame | 73 | \param fftgrain input spectral frame |
| 74 | \param onset output onset detection function | 74 | \param onset output onset detection function |
| 75 | | 75 | |
| 76 | */ | 76 | */ |
| 77 | void aubio_onsetdetection_phase(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset); | 77 | void aubio_specdesc_phase(aubio_specdesc_t *o, cvec_t * fftgrain, fvec_t * onset); |
| 78 | /** Spectral difference method onset detection function | 78 | /** Spectral difference method onset detection function |
| 79 | | 79 | |
| 80 | Jonhatan Foote and Shingo Uchihashi. The beat spectrum: a new approach to | 80 | Jonhatan Foote and Shingo Uchihashi. The beat spectrum: a new approach to |
| 81 | rhythm analysis. In IEEE International Conference on Multimedia and Expo | 81 | rhythm analysis. In IEEE International Conference on Multimedia and Expo |
| 82 | (ICME 2001), pages 881884, Tokyo, Japan, August 2001. | 82 | (ICME 2001), pages 881884, Tokyo, Japan, August 2001. |
| 83 | | 83 | |
| 84 | \param o onset detection object as returned by new_aubio_onsetdetection() | 84 | \param o onset detection object as returned by new_aubio_specdesc() |
| 85 | \param fftgrain input spectral frame | 85 | \param fftgrain input spectral frame |
| 86 | \param onset output onset detection function | 86 | \param onset output onset detection function |
| 87 | | 87 | |
| 88 | */ | 88 | */ |
| 89 | void aubio_onsetdetection_specdiff(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset); | 89 | void aubio_specdesc_specdiff(aubio_specdesc_t *o, cvec_t * fftgrain, fvec_t * onset); |
| 90 | /** Kullback-Liebler onset detection function | 90 | /** Kullback-Liebler onset detection function |
| 91 | | 91 | |
| 92 | Stephen Hainsworth and Malcom Macleod. Onset detection in music audio | 92 | Stephen Hainsworth and Malcom Macleod. Onset detection in music audio |
| 93 | signals. In Proceedings of the International Computer Music Conference | 93 | signals. In Proceedings of the International Computer Music Conference |
| 94 | (ICMC), Singapore, 2003. | 94 | (ICMC), Singapore, 2003. |
| 95 | | 95 | |
| 96 | \param o onset detection object as returned by new_aubio_onsetdetection() | 96 | \param o onset detection object as returned by new_aubio_specdesc() |
| 97 | \param fftgrain input spectral frame | 97 | \param fftgrain input spectral frame |
| 98 | \param onset output onset detection function | 98 | \param onset output onset detection function |
| 99 | | 99 | |
| 100 | */ | 100 | */ |
| 101 | void aubio_onsetdetection_kl(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset); | 101 | void aubio_specdesc_kl(aubio_specdesc_t *o, cvec_t * fftgrain, fvec_t * onset); |
| 102 | /** Modified Kullback-Liebler onset detection function | 102 | /** Modified Kullback-Liebler onset detection function |
| 103 | | 103 | |
| 104 | Paul Brossier, ``Automatic annotation of musical audio for interactive | 104 | Paul Brossier, ``Automatic annotation of musical audio for interactive |
| 105 | systems'', Chapter 2, Temporal segmentation, PhD thesis, Centre for Digital | 105 | systems'', Chapter 2, Temporal segmentation, PhD thesis, Centre for Digital |
| 106 | music, Queen Mary University of London, London, UK, 2006. | 106 | music, Queen Mary University of London, London, UK, 2006. |
| 107 | | 107 | |
| 108 | \param o onset detection object as returned by new_aubio_onsetdetection() | 108 | \param o onset detection object as returned by new_aubio_specdesc() |
| 109 | \param fftgrain input spectral frame | 109 | \param fftgrain input spectral frame |
| 110 | \param onset output onset detection function | 110 | \param onset output onset detection function |
| 111 | | 111 | |
| 112 | */ | 112 | */ |
| 113 | void aubio_onsetdetection_mkl(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset); | 113 | void aubio_specdesc_mkl(aubio_specdesc_t *o, cvec_t * fftgrain, fvec_t * onset); |
| 114 | /** Spectral Flux | 114 | /** Spectral Flux |
| 115 | | 115 | |
| 116 | Simon Dixon, Onset Detection Revisited, in ``Proceedings of the 9th | 116 | Simon Dixon, Onset Detection Revisited, in ``Proceedings of the 9th |
| 117 | International Conference on Digital Audio Effects'' (DAFx-06), Montreal, | 117 | International Conference on Digital Audio Effects'' (DAFx-06), Montreal, |
| 118 | Canada, 2006. | 118 | Canada, 2006. |
| 119 | | 119 | |
| 120 | \param o onset detection object as returned by new_aubio_onsetdetection() | 120 | \param o onset detection object as returned by new_aubio_specdesc() |
| 121 | \param fftgrain input spectral frame | 121 | \param fftgrain input spectral frame |
| 122 | \param onset output onset detection function | 122 | \param onset output onset detection function |
| 123 | | 123 | |
| 124 | */ | 124 | */ |
| 125 | void aubio_onsetdetection_specflux(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset); | 125 | void aubio_specdesc_specflux(aubio_specdesc_t *o, cvec_t * fftgrain, fvec_t * onset); |
| 126 | | 126 | |
| 127 | /** onsetdetection types */ | 127 | /** onsetdetection types */ |
| 128 | typedef enum { | 128 | typedef enum { |
| @@ -135,13 +135,13 @@ typedef enum { · 6 unmodified lines |
| 135 | aubio_onset_mkl, /**< modified Kullback Liebler */ | 135 | aubio_onset_mkl, /**< modified Kullback Liebler */ |
| 136 | aubio_onset_specflux, /**< spectral flux */ | 136 | aubio_onset_specflux, /**< spectral flux */ |
| 137 | aubio_onset_default = aubio_onset_hfc, /**< default mode, set to hfc */ | 137 | aubio_onset_default = aubio_onset_hfc, /**< default mode, set to hfc */ |
| 138 | } aubio_onsetdetection_type; | 138 | } aubio_specdesc_type; |
| 139 | | 139 | |
| 140 | /** structure to store object state */ | 140 | /** structure to store object state */ |
| 141 | struct _aubio_onsetdetection_t { | 141 | struct _aubio_specdesc_t { |
| 142 | aubio_onsetdetection_type onset_type; /**< onset detection type */ | 142 | aubio_specdesc_type onset_type; /**< onset detection type */ |
| 143 | /** Pointer to aubio_onsetdetection_<type> function */ | 143 | /** Pointer to aubio_specdesc_<type> function */ |
| 144 | void (*funcpointer)(aubio_onsetdetection_t *o, | 144 | void (*funcpointer)(aubio_specdesc_t *o, |
| 145 | cvec_t * fftgrain, fvec_t * onset); | 145 | cvec_t * fftgrain, fvec_t * onset); |
| 146 | smpl_t threshold; /**< minimum norm threshold for phase and specdiff */ | 146 | smpl_t threshold; /**< minimum norm threshold for phase and specdiff */ |
| 147 | fvec_t *oldmag; /**< previous norm vector */ | 147 | fvec_t *oldmag; /**< previous norm vector */ |
| @@ -153,7 +153,7 @@ struct _aubio_onsetdetection_t { · 5 unmodified lines |
| 153 | | 153 | |
| 154 | | 154 | |
| 155 | /* Energy based onset detection function */ | 155 | /* Energy based onset detection function */ |
| 156 | void aubio_onsetdetection_energy (aubio_onsetdetection_t *o UNUSED, | 156 | void aubio_specdesc_energy (aubio_specdesc_t *o UNUSED, |
| 157 | cvec_t * fftgrain, fvec_t * onset) { | 157 | cvec_t * fftgrain, fvec_t * onset) { |
| 158 | uint_t i,j; | 158 | uint_t i,j; |
| 159 | for (i=0;i<fftgrain->channels;i++) { | 159 | for (i=0;i<fftgrain->channels;i++) { |
| @@ -165,7 +165,7 @@ void aubio_onsetdetection_energy (aubio_onsetdetection_t *o UNUSED, · 5 unmodified lines |
| 165 | } | 165 | } |
| 166 | | 166 | |
| 167 | /* High Frequency Content onset detection function */ | 167 | /* High Frequency Content onset detection function */ |
| 168 | void aubio_onsetdetection_hfc(aubio_onsetdetection_t *o UNUSED, | 168 | void aubio_specdesc_hfc(aubio_specdesc_t *o UNUSED, |
| 169 | cvec_t * fftgrain, fvec_t * onset){ | 169 | cvec_t * fftgrain, fvec_t * onset){ |
| 170 | uint_t i,j; | 170 | uint_t i,j; |
| 171 | for (i=0;i<fftgrain->channels;i++) { | 171 | for (i=0;i<fftgrain->channels;i++) { |
| @@ -178,7 +178,7 @@ void aubio_onsetdetection_hfc(aubio_onsetdetection_t *o UNUSED, · 6 unmodified lines |
| 178 | | 178 | |
| 179 | | 179 | |
| 180 | /* Complex Domain Method onset detection function */ | 180 | /* Complex Domain Method onset detection function */ |
| 181 | void aubio_onsetdetection_complex (aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset) { | 181 | void aubio_specdesc_complex (aubio_specdesc_t *o, cvec_t * fftgrain, fvec_t * onset) { |
| 182 | uint_t i, j; | 182 | uint_t i, j; |
| 183 | uint_t nbins = fftgrain->length; | 183 | uint_t nbins = fftgrain->length; |
| 184 | for (i=0;i<fftgrain->channels; i++) { | 184 | for (i=0;i<fftgrain->channels; i++) { |
| @@ -203,7 +203,7 @@ void aubio_onsetdetection_complex (aubio_onsetdetection_t *o, cvec_t * fftgrain, · 18 unmodified lines |
| 203 | | 203 | |
| 204 | | 204 | |
| 205 | /* Phase Based Method onset detection function */ | 205 | /* Phase Based Method onset detection function */ |
| 206 | void aubio_onsetdetection_phase(aubio_onsetdetection_t *o, | 206 | void aubio_specdesc_phase(aubio_specdesc_t *o, |
| 207 | cvec_t * fftgrain, fvec_t * onset){ | 207 | cvec_t * fftgrain, fvec_t * onset){ |
| 208 | uint_t i, j; | 208 | uint_t i, j; |
| 209 | uint_t nbins = fftgrain->length; | 209 | uint_t nbins = fftgrain->length; |
| @@ -235,7 +235,7 @@ void aubio_onsetdetection_phase(aubio_onsetdetection_t *o, · 25 unmodified lines |
| 235 | } | 235 | } |
| 236 | | 236 | |
| 237 | /* Spectral difference method onset detection function */ | 237 | /* Spectral difference method onset detection function */ |
| 238 | void aubio_onsetdetection_specdiff(aubio_onsetdetection_t *o, | 238 | void aubio_specdesc_specdiff(aubio_specdesc_t *o, |
| 239 | cvec_t * fftgrain, fvec_t * onset){ | 239 | cvec_t * fftgrain, fvec_t * onset){ |
| 240 | uint_t i, j; | 240 | uint_t i, j; |
| 241 | uint_t nbins = fftgrain->length; | 241 | uint_t nbins = fftgrain->length; |
| @@ -266,7 +266,7 @@ void aubio_onsetdetection_specdiff(aubio_onsetdetection_t *o, · 24 unmodified lines |
| 266 | /* Kullback Liebler onset detection function | 266 | /* Kullback Liebler onset detection function |
| 267 | * note we use ln(1+Xn/(Xn-1+0.0001)) to avoid | 267 | * note we use ln(1+Xn/(Xn-1+0.0001)) to avoid |
| 268 | * negative (1.+) and infinite values (+1.e-10) */ | 268 | * negative (1.+) and infinite values (+1.e-10) */ |
| 269 | void aubio_onsetdetection_kl(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset){ | 269 | void aubio_specdesc_kl(aubio_specdesc_t *o, cvec_t * fftgrain, fvec_t * onset){ |
| 270 | uint_t i,j; | 270 | uint_t i,j; |
| 271 | for (i=0;i<fftgrain->channels;i++) { | 271 | for (i=0;i<fftgrain->channels;i++) { |
| 272 | onset->data[i][0] = 0.; | 272 | onset->data[i][0] = 0.; |
| @@ -282,7 +282,7 @@ void aubio_onsetdetection_kl(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_ · 9 unmodified lines |
| 282 | /* Modified Kullback Liebler onset detection function | 282 | /* Modified Kullback Liebler onset detection function |
| 283 | * note we use ln(1+Xn/(Xn-1+0.0001)) to avoid | 283 | * note we use ln(1+Xn/(Xn-1+0.0001)) to avoid |
| 284 | * negative (1.+) and infinite values (+1.e-10) */ | 284 | * negative (1.+) and infinite values (+1.e-10) */ |
| 285 | void aubio_onsetdetection_mkl(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset){ | 285 | void aubio_specdesc_mkl(aubio_specdesc_t *o, cvec_t * fftgrain, fvec_t * onset){ |
| 286 | uint_t i,j; | 286 | uint_t i,j; |
| 287 | for (i=0;i<fftgrain->channels;i++) { | 287 | for (i=0;i<fftgrain->channels;i++) { |
| 288 | onset->data[i][0] = 0.; | 288 | onset->data[i][0] = 0.; |
| @@ -295,7 +295,7 @@ void aubio_onsetdetection_mkl(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec · 6 unmodified lines |
| 295 | } | 295 | } |
| 296 | | 296 | |
| 297 | /* Spectral flux */ | 297 | /* Spectral flux */ |
| 298 | void aubio_onsetdetection_specflux(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset){ | 298 | void aubio_specdesc_specflux(aubio_specdesc_t *o, cvec_t * fftgrain, fvec_t * onset){ |
| 299 | uint_t i, j; | 299 | uint_t i, j; |
| 300 | for (i=0;i<fftgrain->channels;i++) { | 300 | for (i=0;i<fftgrain->channels;i++) { |
| 301 | onset->data[i][0] = 0.; | 301 | onset->data[i][0] = 0.; |
| @@ -309,7 +309,7 @@ void aubio_onsetdetection_specflux(aubio_onsetdetection_t *o, cvec_t * fftgrain, · 7 unmodified lines |
| 309 | | 309 | |
| 310 | /* Generic function pointing to the choosen one */ | 310 | /* Generic function pointing to the choosen one */ |
| 311 | void | 311 | void |
| 312 | aubio_onsetdetection_do (aubio_onsetdetection_t *o, cvec_t * fftgrain, | 312 | aubio_specdesc_do (aubio_specdesc_t *o, cvec_t * fftgrain, |
| 313 | fvec_t * onset) { | 313 | fvec_t * onset) { |
| 314 | o->funcpointer(o,fftgrain,onset); | 314 | o->funcpointer(o,fftgrain,onset); |
| 315 | } | 315 | } |
| @@ -317,12 +317,12 @@ aubio_onsetdetection_do (aubio_onsetdetection_t *o, cvec_t * fftgrain, · 1 unmodified line |
| 317 | /* Allocate memory for an onset detection | 317 | /* Allocate memory for an onset detection |
| 318 | * depending on the choosen type, allocate memory as needed | 318 | * depending on the choosen type, allocate memory as needed |
| 319 | */ | 319 | */ |
| 320 | aubio_onsetdetection_t * | 320 | aubio_specdesc_t * |
| 321 | new_aubio_onsetdetection (char_t * onset_mode, | 321 | new_aubio_specdesc (char_t * onset_mode, |
| 322 | uint_t size, uint_t channels){ | 322 | uint_t size, uint_t channels){ |
| 323 | aubio_onsetdetection_t * o = AUBIO_NEW(aubio_onsetdetection_t); | 323 | aubio_specdesc_t * o = AUBIO_NEW(aubio_specdesc_t); |
| 324 | uint_t rsize = size/2+1; | 324 | uint_t rsize = size/2+1; |
| 325 | aubio_onsetdetection_type onset_type; | 325 | aubio_specdesc_type onset_type; |
| 326 | if (strcmp (onset_mode, "energy") == 0) | 326 | if (strcmp (onset_mode, "energy") == 0) |
| 327 | onset_type = aubio_onset_energy; | 327 | onset_type = aubio_onset_energy; |
| 328 | else if (strcmp (onset_mode, "specdiff") == 0) | 328 | else if (strcmp (onset_mode, "specdiff") == 0) |
| @@ -388,28 +388,28 @@ new_aubio_onsetdetection (char_t * onset_mode, · 59 unmodified lines |
| 388 | | 388 | |
| 389 | switch(onset_type) { | 389 | switch(onset_type) { |
| 390 | case aubio_onset_energy: | 390 | case aubio_onset_energy: |
| 391 | o->funcpointer = aubio_onsetdetection_energy; | 391 | o->funcpointer = aubio_specdesc_energy; |
| 392 | break; | 392 | break; |
| 393 | case aubio_onset_hfc: | 393 | case aubio_onset_hfc: |
| 394 | o->funcpointer = aubio_onsetdetection_hfc; | 394 | o->funcpointer = aubio_specdesc_hfc; |
| 395 | break; | 395 | break; |
| 396 | case aubio_onset_complex: | 396 | case aubio_onset_complex: |
| 397 | o->funcpointer = aubio_onsetdetection_complex; | 397 | o->funcpointer = aubio_specdesc_complex; |
| 398 | break; | 398 | break; |
| 399 | case aubio_onset_phase: | 399 | case aubio_onset_phase: |
| 400 | o->funcpointer = aubio_onsetdetection_phase; | 400 | o->funcpointer = aubio_specdesc_phase; |
| 401 | break; | 401 | break; |
| 402 | case aubio_onset_specdiff: | 402 | case aubio_onset_specdiff: |
| 403 | o->funcpointer = aubio_onsetdetection_specdiff; | 403 | o->funcpointer = aubio_specdesc_specdiff; |
| 404 | break; | 404 | break; |
| 405 | case aubio_onset_kl: | 405 | case aubio_onset_kl: |
| 406 | o->funcpointer = aubio_onsetdetection_kl; | 406 | o->funcpointer = aubio_specdesc_kl; |
| 407 | break; | 407 | break; |
| 408 | case aubio_onset_mkl: | 408 | case aubio_onset_mkl: |
| 409 | o->funcpointer = aubio_onsetdetection_mkl; | 409 | o->funcpointer = aubio_specdesc_mkl; |
| 410 | break; | 410 | break; |
| 411 | case aubio_onset_specflux: | 411 | case aubio_onset_specflux: |
| 412 | o->funcpointer = aubio_onsetdetection_specflux; | 412 | o->funcpointer = aubio_specdesc_specflux; |
| 413 | break; | 413 | break; |
| 414 | default: | 414 | default: |
| 415 | break; | 415 | break; |
| @@ -418,7 +418,7 @@ new_aubio_onsetdetection (char_t * onset_mode, · 2 unmodified lines |
| 418 | return o; | 418 | return o; |
| 419 | } | 419 | } |
| 420 | | 420 | |
| 421 | void del_aubio_onsetdetection (aubio_onsetdetection_t *o){ | 421 | void del_aubio_specdesc (aubio_specdesc_t *o){ |
| 422 | switch(o->onset_type) { | 422 | switch(o->onset_type) { |
| 423 | /* for both energy and hfc, only fftgrain->norm is required */ | 423 | /* for both energy and hfc, only fftgrain->norm is required */ |
| 424 | case aubio_onset_energy: | 424 | case aubio_onset_energy: |