aubio
0.4.1
Main Page
Data Structures
Files
Examples
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Macros
onset
onset.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2006-2013 Paul Brossier <piem@aubio.org>
3
4
This file is part of aubio.
5
6
aubio is free software: you can redistribute it and/or modify
7
it under the terms of the GNU General Public License as published by
8
the Free Software Foundation, either version 3 of the License, or
9
(at your option) any later version.
10
11
aubio is distributed in the hope that it will be useful,
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
GNU General Public License for more details.
15
16
You should have received a copy of the GNU General Public License
17
along with aubio. If not, see <http://www.gnu.org/licenses/>.
18
19
*/
20
21
/** \file
22
23
Onset detection object
24
25
The following routines compute the onset detection function and detect peaks
26
in these functions. When onsets are found above a given silence threshold,
27
and after a minimum inter-onset interval, the output vector returned by
28
aubio_onset_do() is filled with `1`. Otherwise, the output vector remains
29
`0`.
30
31
The peak-picking threshold, the silence threshold, and the minimum
32
inter-onset interval can be adjusted during the execution of the
33
aubio_onset_do routine using the corresponding functions.
34
35
\example onset/test-onset.c
36
\example examples/aubioonset.c
37
\example examples/aubionotes.c
38
39
*/
40
41
42
#ifndef _AUBIO_ONSET_H
43
#define _AUBIO_ONSET_H
44
45
#ifdef __cplusplus
46
extern
"C"
{
47
#endif
48
49
/** onset detection object */
50
typedef
struct
_aubio_onset_t
aubio_onset_t
;
51
52
/** create onset detection object
53
54
\param method onset detection type as specified in specdesc.h
55
\param buf_size buffer size for phase vocoder
56
\param hop_size hop size for phase vocoder
57
\param samplerate sampling rate of the input signal
58
59
\return newly created ::aubio_onset_t
60
61
*/
62
aubio_onset_t
*
new_aubio_onset
(
char_t
* method,
63
uint_t
buf_size,
uint_t
hop_size,
uint_t
samplerate);
64
65
/** execute onset detection
66
67
\param o onset detection object as returned by new_aubio_onset()
68
\param input new audio vector of length hop_size
69
\param onset output vector of length 1, containing 0 if no onset was found,
70
and a value equal or greater than 1 otherwise
71
72
When no onset was detected, the first element of the output vector `onset`
73
is set to 0.
74
75
When an onset is found, the first element of the output vector `onset` is set
76
to `offset = 1 + a` where `a` is a number in the range`[0, 1]`.
77
78
The final onset detection time, in samples, can be obtained with
79
aubio_onset_get_last(). It can also be derived from `offset` as
80
follows:
81
82
\code
83
t = total_frames + offset * hop_size - delay
84
\endcode
85
86
where `total_frames` is the total number of frames processed so far, and
87
`delay` is the current delay of the onset object, as returned by
88
aubio_onset_get_delay().
89
90
*/
91
void
aubio_onset_do
(
aubio_onset_t
*o,
fvec_t
* input,
fvec_t
* onset);
92
93
/** get the time of the latest onset detected, in samples
94
95
\param o onset detection object as returned by new_aubio_onset()
96
97
\return onset detection timestamps (in samples)
98
99
*/
100
uint_t
aubio_onset_get_last
(
aubio_onset_t
*o);
101
102
/** get the time of the latest onset detected, in seconds
103
104
\param o onset detection object as returned by new_aubio_onset()
105
106
\return onset detection timestamps (in seconds)
107
108
*/
109
smpl_t
aubio_onset_get_last_s
(
aubio_onset_t
*o);
110
111
/** get the time of the latest onset detected, in milliseconds
112
113
\param o onset detection object as returned by new_aubio_onset()
114
115
\return onset detection timestamps (in milliseconds)
116
117
*/
118
smpl_t
aubio_onset_get_last_ms
(
aubio_onset_t
*o);
119
120
/** set onset detection silence threshold
121
122
\param o onset detection object as returned by new_aubio_onset()
123
\param silence new silence detection threshold
124
125
*/
126
uint_t
aubio_onset_set_silence
(
aubio_onset_t
* o,
smpl_t
silence);
127
128
/** get onset detection function
129
130
\param o onset detection object as returned by new_aubio_onset()
131
\return the current value of the descriptor
132
133
*/
134
smpl_t
aubio_onset_get_descriptor
(
aubio_onset_t
*o);
135
136
/** get thresholded onset detection function
137
138
\param o onset detection object as returned by new_aubio_onset()
139
\return the value of the thresholded descriptor
140
141
*/
142
smpl_t
aubio_onset_get_thresholded_descriptor
(
aubio_onset_t
*o);
143
144
/** set onset detection peak picking threshold
145
146
\param o onset detection object as returned by new_aubio_onset()
147
\param threshold new peak-picking threshold
148
149
*/
150
uint_t
aubio_onset_set_threshold
(
aubio_onset_t
* o,
smpl_t
threshold);
151
152
/** set minimum inter onset interval in samples
153
154
\param o onset detection object as returned by new_aubio_onset()
155
\param minioi minimum interval between two consecutive onsets (in
156
samples)
157
158
*/
159
uint_t
aubio_onset_set_minioi
(
aubio_onset_t
* o,
uint_t
minioi);
160
161
/** set minimum inter onset interval in seconds
162
163
\param o onset detection object as returned by new_aubio_onset()
164
\param minioi minimum interval between two consecutive onsets (in
165
seconds)
166
167
*/
168
uint_t
aubio_onset_set_minioi_s
(
aubio_onset_t
* o,
smpl_t
minioi);
169
170
/** set minimum inter onset interval in milliseconds
171
172
\param o onset detection object as returned by new_aubio_onset()
173
\param minioi minimum interval between two consecutive onsets (in
174
milliseconds)
175
176
*/
177
uint_t
aubio_onset_set_minioi_ms
(
aubio_onset_t
* o,
smpl_t
minioi);
178
179
/** set minimum inter onset interval in samples
180
181
\param o onset detection object as returned by new_aubio_onset()
182
\param delay constant system delay to take back from detection time
183
(in samples)
184
185
*/
186
uint_t
aubio_onset_set_delay
(
aubio_onset_t
* o,
uint_t
delay);
187
188
/** set minimum inter onset interval in seconds
189
190
\param o onset detection object as returned by new_aubio_onset()
191
\param delay constant system delay to take back from detection time
192
(in seconds)
193
194
*/
195
uint_t
aubio_onset_set_delay_s
(
aubio_onset_t
* o,
smpl_t
delay);
196
197
/** set minimum inter onset interval in milliseconds
198
199
\param o onset detection object as returned by new_aubio_onset()
200
\param delay constant system delay to take back from detection time
201
(in milliseconds)
202
203
*/
204
uint_t
aubio_onset_set_delay_ms
(
aubio_onset_t
* o,
smpl_t
delay);
205
206
/** get minimum inter onset interval in samples
207
208
\param o onset detection object as returned by new_aubio_onset()
209
\return minimum interval between two consecutive onsets (in
210
samples)
211
212
*/
213
uint_t
aubio_onset_get_minioi
(
aubio_onset_t
* o);
214
215
/** get minimum inter onset interval in seconds
216
217
\param o onset detection object as returned by new_aubio_onset()
218
\return minimum interval between two consecutive onsets (in
219
seconds)
220
221
*/
222
smpl_t
aubio_onset_get_minioi_s
(
aubio_onset_t
* o);
223
224
/** get minimum inter onset interval in milliseconds
225
226
\param o onset detection object as returned by new_aubio_onset()
227
\return minimum interval between two consecutive onsets (in
228
milliseconds)
229
230
*/
231
smpl_t
aubio_onset_get_minioi_ms
(
aubio_onset_t
* o);
232
233
/** get minimum inter onset interval in samples
234
235
\param o onset detection object as returned by new_aubio_onset()
236
\return constant system delay to take back from detection time
237
(in samples)
238
239
*/
240
uint_t
aubio_onset_get_delay
(
aubio_onset_t
* o);
241
242
/** get minimum inter onset interval in seconds
243
244
\param o onset detection object as returned by new_aubio_onset()
245
\return constant system delay to take back from detection time
246
(in seconds)
247
248
*/
249
smpl_t
aubio_onset_get_delay_s
(
aubio_onset_t
* o);
250
251
/** get minimum inter onset interval in milliseconds
252
253
\param o onset detection object as returned by new_aubio_onset()
254
\return constant system delay to take back from detection time
255
(in milliseconds)
256
257
*/
258
smpl_t
aubio_onset_get_delay_ms
(
aubio_onset_t
* o);
259
260
/** get onset peak picking threshold
261
262
\param o onset detection object as returned by new_aubio_onset()
263
\return current onset detection threshold
264
265
*/
266
smpl_t
aubio_onset_get_threshold
(
aubio_onset_t
* o);
267
268
/** delete onset detection object
269
270
\param o onset detection object to delete
271
272
*/
273
void
del_aubio_onset
(
aubio_onset_t
* o);
274
275
#ifdef __cplusplus
276
}
277
#endif
278
279
#endif
/* _AUBIO_ONSET_H */
Generated on Wed Mar 12 2014 15:43:22 for aubio by
1.8.3.1