source: src/onsetdetection.h @ 96fb8ad

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

import 0.1.7.1

  • Property mode set to 100644
File size: 3.4 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 * 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 */
41
42
43#ifndef ONSETDETECTION_H
44#define ONSETDETECTION_H
45
46#ifdef __cplusplus
47extern "C" {
48#endif
49
50/** onsetdetection types */
51typedef enum {
52        energy,         /**< energy based */         
53        specdiff,       /**< spectral diff */         
54        hfc,            /**< high frequency content */
55        complexdomain,  /**< complex domain */       
56        phase           /**< phase fast */           
57} aubio_onsetdetection_type;
58
59/** onsetdetection structure */
60typedef struct _aubio_onsetdetection_t aubio_onsetdetection_t;
61/** Energy based onset detection function
62 *
63 * calculates the local energy profile
64 *
65 *      - buffer 1024
66 *      - overlap 512
67 */
68void aubio_onsetdetection_energy(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset);
69/** High Frequency Content onset detection function
70 *
71 *      - buffer 1024
72 *      - overlap 512
73 */
74void aubio_onsetdetection_hfc(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset);
75/** Complex Domain Method onset detection function
76 *
77 *      From C. Duxbury & J. Pablo Bello
78 *             
79 *      - buffer 512
80 *      - overlap 128
81 *      - dowfact 8
82 *      - interpfact 2
83 */
84void aubio_onsetdetection_complex(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset);
85/** Phase Based Method onset detection function
86 *
87 *      - buffer 512
88 *      - overlap 128
89 *      - dowfact 8
90 *      - interpfact 2
91 */
92void aubio_onsetdetection_phase(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset);
93/** Spectral difference method onset detection function
94 *
95 *      - buffer 512
96 *      - overlap 128
97 *      - dowfact 8
98 *      - interpfact 2
99 */
100void aubio_onsetdetection_specdiff(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset);
101/** Generic function pointing to the choosen one */
102void aubio_onsetdetection(aubio_onsetdetection_t *o, cvec_t * fftgrain, fvec_t * onset);
103/** Allocate memory for an onset detection */
104aubio_onsetdetection_t * new_aubio_onsetdetection(aubio_onsetdetection_type type, uint_t size, uint_t channels);
105/** Free memory for an onset detection */
106void aubio_onsetdetection_free(aubio_onsetdetection_t *o);
107
108#ifdef __cplusplus
109}
110#endif
111
112#endif /* ONSETDETECTION_H */
Note: See TracBrowser for help on using the repository browser.