source: src/onsetdetection.h @ 895ad8c

feature/autosinkfeature/cnnfeature/cnn_orgfeature/constantqfeature/crepefeature/crepe_orgfeature/pitchshiftfeature/pydocstringsfeature/timestretchfix/ffmpeg5pitchshiftsamplertimestretchyinfft+
Last change on this file since 895ad8c was bd24069, checked in by Paul Brossier <piem@altern.org>, 18 years ago

remove completed todo, fix documentation
remove completed todo, fix documentation

  • Property mode set to 100644
File size: 6.5 KB
Line 
1/*
2         Copyright (C) 2003 Paul Brossier
3
4         This program is free software; you can redistribute it and/or modify
5         it under the terms of the GNU General Public License as published by
6         the Free Software Foundation; either version 2 of the License, or
7         (at your option) any later version.
8
9         This program is distributed in the hope that it will be useful,
10         but WITHOUT ANY WARRANTY; without even the implied warranty of
11         MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12         GNU General Public License for more details.
13
14         You should have received a copy of the GNU General Public License
15         along with this program; if not, write to the Free Software
16         Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17         
18*/
19
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*/
32
33
34#ifndef ONSETDETECTION_H
35#define ONSETDETECTION_H
36
37#ifdef __cplusplus
38extern "C" {
39#endif
40
41/** onsetdetection types */
42typedef enum {
43        aubio_onset_energy,         /**< energy based */         
44        aubio_onset_specdiff,       /**< spectral diff */         
45        aubio_onset_hfc,            /**< high frequency content */
46        aubio_onset_complex,        /**< complex domain */       
47        aubio_onset_phase,          /**< phase fast */           
48        aubio_onset_kl,             /**< Kullback Liebler */
49        aubio_onset_mkl             /**< modified Kullback Liebler */
50} aubio_onsetdetection_type;
51
52/** onsetdetection structure */
53typedef struct _aubio_onsetdetection_t aubio_onsetdetection_t;
54/** Energy based onset detection function
55 
56  This function calculates the local energy of the input spectral frame.
57 
58  \param o onset detection object as returned by new_aubio_onsetdetection()
59  \param fftgrain input spectral frame
60  \param onset output onset detection function
61
62*/
63void aubio_onsetdetection_energy(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset);
64/** High Frequency Content onset detection function
65 
66  This method computes the High Frequency Content (HFC) of the input spectral
67  frame. The resulting function is efficient at detecting percussive onsets.
68
69  Paul Masri. Computer modeling of Sound for Transformation and Synthesis of
70  Musical Signal. PhD dissertation, University of Bristol, UK, 1996.
71 
72  \param o onset detection object as returned by new_aubio_onsetdetection()
73  \param fftgrain input spectral frame
74  \param onset output onset detection function
75
76*/
77void aubio_onsetdetection_hfc(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset);
78/** Complex Domain Method onset detection function
79 
80  Christopher Duxbury, Mike E. Davies, and Mark B. Sandler. Complex domain
81  onset detection for musical signals. In Proceedings of the Digital Audio
82  Effects Conference, DAFx-03, pages 90-93, London, UK, 2003.
83
84  \param o onset detection object as returned by new_aubio_onsetdetection()
85  \param fftgrain input spectral frame
86  \param onset output onset detection function
87
88*/
89void aubio_onsetdetection_complex(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset);
90/** Phase Based Method onset detection function
91
92  Juan-Pablo Bello, Mike P. Davies, and Mark B. Sandler. Phase-based note onset
93  detection for music signals. In Proceedings of the IEEE International
94  Conference on Acoustics Speech and Signal Processing, pages 441­444,
95  Hong-Kong, 2003.
96
97  \param o onset detection object as returned by new_aubio_onsetdetection()
98  \param fftgrain input spectral frame
99  \param onset output onset detection function
100
101*/
102void aubio_onsetdetection_phase(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset);
103/** Spectral difference method onset detection function
104
105  Jonhatan Foote and Shingo Uchihashi. The beat spectrum: a new approach to
106  rhythm analysis. In IEEE International Conference on Multimedia and Expo
107  (ICME 2001), pages 881­884, Tokyo, Japan, August 2001.
108
109  \param o onset detection object as returned by new_aubio_onsetdetection()
110  \param fftgrain input spectral frame
111  \param onset output onset detection function
112
113*/
114void aubio_onsetdetection_specdiff(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset);
115/** Kullback-Liebler onset detection function
116 
117  Stephen Hainsworth and Malcom Macleod. Onset detection in music audio
118  signals. In Proceedings of the International Computer Music Conference
119  (ICMC), Singapore, 2003.
120 
121  \param o onset detection object as returned by new_aubio_onsetdetection()
122  \param fftgrain input spectral frame
123  \param onset output onset detection function
124
125*/
126void aubio_onsetdetection_kl(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset);
127/** Modified Kullback-Liebler onset detection function
128
129  Paul Brossier, ``Automatic annotation of musical audio for interactive
130  systems'', Chapter 2, Temporal segmentation, PhD thesis, Centre for Digital
131  music, Queen Mary University of London, London, UK, 2006.
132
133  \param o onset detection object as returned by new_aubio_onsetdetection()
134  \param fftgrain input spectral frame
135  \param onset output onset detection function
136
137*/
138void aubio_onsetdetection_mkl(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset);
139/** execute onset detection function on a spectral frame
140
141  Generic function to compute onset detection.
142 
143  \param o onset detection object as returned by new_aubio_onsetdetection()
144  \param fftgrain input signal spectrum as computed by aubio_pvoc_do
145  \param onset output vector (one sample long, to send to the peak picking)
146
147*/
148void aubio_onsetdetection(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset);
149/** creation of an onset detection object
150
151  \param type onset detection mode
152  \param size length of the input spectrum frame
153  \param channels number of input channels
154
155*/
156aubio_onsetdetection_t * new_aubio_onsetdetection(aubio_onsetdetection_type type, uint_t size, uint_t channels);
157/** deletion of an onset detection object
158
159  \param o onset detection object as returned by new_aubio_onsetdetection()
160
161*/
162void del_aubio_onsetdetection(aubio_onsetdetection_t *o);
163/** deletion of an onset detection object (obsolete)
164
165  \param o onset detection object as returned by new_aubio_onsetdetection()
166
167*/
168void aubio_onsetdetection_free(aubio_onsetdetection_t *o);
169
170
171#ifdef __cplusplus
172}
173#endif
174
175#endif /* ONSETDETECTION_H */
Note: See TracBrowser for help on using the repository browser.