2 Copyright (C) 2006 Paul Brossier
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.
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.
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.
22 Onset detection driver
24 The following routines compute the onset detection function and detect peaks
25 in these functions. When onsets are found above a given silence threshold,
26 and after a minimum inter-onset interval, the output vector returned by
27 aubio_onset_do is filled with 1. Otherwise, the output vector remains 0.
29 The peak-picking threshold, the silence threshold, and the minimum
30 inter-onset interval can be adjusted during the execution of the
31 aubio_onset_do routine using the corresponding functions.
43 /** onset detection object */
44 typedef struct _aubio_onset_t aubio_onset_t;
46 /** create onset detection object
48 \param type_onset onset detection type as specified in onsetdetection.h
49 \param buf_size buffer size for phase vocoder
50 \param hop_size hop size for phase vocoder
51 \param channels number of channels
54 aubio_onset_t * new_aubio_onset (char_t * onset_mode,
55 uint_t buf_size, uint_t hop_size, uint_t channels);
57 /** execute onset detection
59 \param o onset detection object as returned by new_aubio_onset
60 \param input new audio vector of length hop_size
61 \param onset output vector, 1 if onset is found, 0 otherwise
64 void aubio_onset_do (aubio_onset_t *o, fvec_t * input, fvec_t * onset);
66 /** set onset detection silence threshold
68 \param o onset detection object as returned by new_aubio_onset
69 \param silence new silence detection threshold
72 uint_t aubio_onset_set_silence(aubio_onset_t * o, smpl_t silence);
74 /** set onset detection peak picking threshold
76 \param o onset detection object as returned by new_aubio_onset
77 \param threshold new peak-picking threshold
80 uint_t aubio_onset_set_threshold(aubio_onset_t * o, smpl_t threshold);
82 /** set minimum inter onset interval
84 \param o onset detection object as returned by new_aubio_onset
85 \param minioi minimum number of frames between onsets (in multiple of
89 uint_t aubio_onset_set_minioi(aubio_onset_t * o, uint_t minioi);
91 /** delete onset detection object
93 \param o onset detection object to delete
96 void del_aubio_onset(aubio_onset_t * o);