source: src/synth/wavetable.h @ edb1d7a

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

src/pitch/: add const qualifiers, filter_do_outplace to avoid modifying input

  • Property mode set to 100644
File size: 4.4 KB
RevLine 
[dd15573]1/*
2  Copyright (C) 2003-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
[b235c0e]21#ifndef _AUBIO_WAVETABLE_H
22#define _AUBIO_WAVETABLE_H
[dd15573]23
24/** \file
25
[2b6139e7]26  Wavetable synthesis.
[dd15573]27
[2b6139e7]28  This file creates a wavetable and plays it at different frequency.
[dd15573]29
30  The `_do` function adds the new samples to the input, and write the result as
31  the output.
32
33  \example synth/test-wavetable.c
34
35*/
36
37#ifdef __cplusplus
38extern "C" {
39#endif
40
41/** wavetable object */
42typedef struct _aubio_wavetable_t aubio_wavetable_t;
43
44/** create new wavetable object
45
46  \param samplerate the sampling rate of the new wavetable
[2b6139e7]47  \param hop_size the block size of the new wavetable
[dd15573]48
[2b6139e7]49  \return the newly created aubio_wavetable_t
[dd15573]50
51*/
52aubio_wavetable_t * new_aubio_wavetable(uint_t samplerate, uint_t hop_size);
53
54/** load source in wavetable
55
[2b6139e7]56  \param o wavetable, created by new_aubio_wavetable()
[dd15573]57  \param uri the uri of the source to load
58
59  \return 0 if successful, non-zero otherwise
60
61*/
[ce3ff2b]62uint_t aubio_wavetable_load( aubio_wavetable_t * o, const char_t * uri );
[dd15573]63
64/** process wavetable function
65
[2b6139e7]66  \param o wavetable, created by new_aubio_wavetable()
[dd15573]67  \param input input of the wavetable, to be added to the output
68  \param output output of the wavetable
69
[2b6139e7]70This function adds the new samples from the playing wavetable to the output.
[dd15573]71
72If `input` is not NULL and different from `output`, then the samples from `input`
73are added to the output.
74
75*/
[ce3ff2b]76void aubio_wavetable_do ( aubio_wavetable_t * o, const fvec_t * input, fvec_t * output);
[dd15573]77
78/** process wavetable function, multiple channels
79
[2b6139e7]80  \param o wavetable, created by new_aubio_wavetable()
[dd15573]81  \param input input of the wavetable, to be added to the output
82  \param output output of the wavetable
83
[2b6139e7]84This function adds the new samples from the playing wavetable to the output.
[dd15573]85
86If `input` is not NULL and different from `output`, then the samples from `input`
87are added to the output.
88
89*/
[ce3ff2b]90void aubio_wavetable_do_multi ( aubio_wavetable_t * o, const fmat_t * input, fmat_t * output);
[dd15573]91
92/** get current playing state
93
[2b6139e7]94  \param o wavetable, created by new_aubio_wavetable()
[dd15573]95
96  \return 0 if not playing, 1 if playing
97
98*/
[ce3ff2b]99uint_t aubio_wavetable_get_playing ( const aubio_wavetable_t * o );
[dd15573]100
101/** set current playing state
102
[2b6139e7]103  \param o wavetable, created by new_aubio_wavetable()
[dd15573]104  \param playing 0 for not playing, 1 for playing
105
106  \return 0 if successful, 1 otherwise
107
108*/
109uint_t aubio_wavetable_set_playing ( aubio_wavetable_t * o, uint_t playing );
110
111/** play sample from start
112
[2b6139e7]113  \param o wavetable, created by new_aubio_wavetable()
[dd15573]114
115  \return 0 if successful, 1 otherwise
116
117*/
118uint_t aubio_wavetable_play ( aubio_wavetable_t * o );
119
[2b6139e7]120/** stop wavetable
[dd15573]121
[2b6139e7]122  \param o wavetable, created by new_aubio_wavetable()
[dd15573]123
124  \return 0 if successful, 1 otherwise
125
126*/
127uint_t aubio_wavetable_stop ( aubio_wavetable_t * o );
128
129/** set wavetable frequency
130
[2b6139e7]131  \param o wavetable, created by new_aubio_wavetable()
[8750bbd]132  \param freq new frequency value for the wavetable
[dd15573]133
134  \return 0 if successful, 1 otherwise
135
136*/
137uint_t aubio_wavetable_set_freq ( aubio_wavetable_t * o, smpl_t freq );
138
139/** get wavetable frequency
140
[2b6139e7]141  \param o wavetable, created by new_aubio_wavetable()
[dd15573]142
143  \return current frequency, in Hz
144
145*/
[ce3ff2b]146smpl_t aubio_wavetable_get_freq ( const aubio_wavetable_t * o);
[dd15573]147
148/** set wavetable amplitude
149
[2b6139e7]150  \param o wavetable, created by new_aubio_wavetable()
[8750bbd]151  \param amp new amplitude value for the wavetable
[dd15573]152
153  \return 0 if successful, 1 otherwise
154
155*/
156uint_t aubio_wavetable_set_amp ( aubio_wavetable_t * o, smpl_t amp );
157
158/** get wavetable amplitude
159
[2b6139e7]160  \param o wavetable, created by new_aubio_wavetable()
[dd15573]161
162  \return current amplitude
163
164*/
[ce3ff2b]165smpl_t aubio_wavetable_get_amp ( const aubio_wavetable_t * o);
[dd15573]166
[2b6139e7]167/** destroy aubio_wavetable_t object
[dd15573]168
[2b6139e7]169  \param o wavetable, created by new_aubio_wavetable()
[dd15573]170
171*/
172void del_aubio_wavetable( aubio_wavetable_t * o );
173
174#ifdef __cplusplus
175}
176#endif
177
[b235c0e]178#endif /* _AUBIO_WAVETABLE_H */
Note: See TracBrowser for help on using the repository browser.