source: src/synth/wavetable.h @ 37a6942

feature/autosinkfeature/cnnfeature/cnn_orgfeature/constantqfeature/crepefeature/crepe_orgfeature/pitchshiftfeature/pydocstringsfeature/timestretchfix/ffmpeg5
Last change on this file since 37a6942 was 9511547, checked in by Paul Brossier <piem@piem.org>, 6 years ago

[wavetable] remove undefined aubio_wavetable_load from header

  • Property mode set to 100644
File size: 4.2 KB
Line 
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
21#ifndef AUBIO_WAVETABLE_H
22#define AUBIO_WAVETABLE_H
23
24/** \file
25
26  Wavetable synthesis.
27
28  This file creates a wavetable and plays it at different frequency.
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
47  \param hop_size the block size of the new wavetable
48
49  \return the newly created aubio_wavetable_t
50
51*/
52aubio_wavetable_t * new_aubio_wavetable(uint_t samplerate, uint_t hop_size);
53
54/** process wavetable function
55
56  \param o wavetable, created by new_aubio_wavetable()
57  \param input input of the wavetable, to be added to the output
58  \param output output of the wavetable
59
60This function adds the new samples from the playing wavetable to the output.
61
62If `input` is not NULL and different from `output`, then the samples from `input`
63are added to the output.
64
65*/
66void aubio_wavetable_do ( aubio_wavetable_t * o, const fvec_t * input, fvec_t * output);
67
68/** process wavetable function, multiple channels
69
70  \param o wavetable, created by new_aubio_wavetable()
71  \param input input of the wavetable, to be added to the output
72  \param output output of the wavetable
73
74This function adds the new samples from the playing wavetable to the output.
75
76If `input` is not NULL and different from `output`, then the samples from `input`
77are added to the output.
78
79*/
80void aubio_wavetable_do_multi ( aubio_wavetable_t * o, const fmat_t * input, fmat_t * output);
81
82/** get current playing state
83
84  \param o wavetable, created by new_aubio_wavetable()
85
86  \return 0 if not playing, 1 if playing
87
88*/
89uint_t aubio_wavetable_get_playing ( const aubio_wavetable_t * o );
90
91/** set current playing state
92
93  \param o wavetable, created by new_aubio_wavetable()
94  \param playing 0 for not playing, 1 for playing
95
96  \return 0 if successful, 1 otherwise
97
98*/
99uint_t aubio_wavetable_set_playing ( aubio_wavetable_t * o, uint_t playing );
100
101/** play sample from start
102
103  \param o wavetable, created by new_aubio_wavetable()
104
105  \return 0 if successful, 1 otherwise
106
107*/
108uint_t aubio_wavetable_play ( aubio_wavetable_t * o );
109
110/** stop wavetable
111
112  \param o wavetable, created by new_aubio_wavetable()
113
114  \return 0 if successful, 1 otherwise
115
116*/
117uint_t aubio_wavetable_stop ( aubio_wavetable_t * o );
118
119/** set wavetable frequency
120
121  \param o wavetable, created by new_aubio_wavetable()
122  \param freq new frequency value for the wavetable
123
124  \return 0 if successful, 1 otherwise
125
126*/
127uint_t aubio_wavetable_set_freq ( aubio_wavetable_t * o, smpl_t freq );
128
129/** get wavetable frequency
130
131  \param o wavetable, created by new_aubio_wavetable()
132
133  \return current frequency, in Hz
134
135*/
136smpl_t aubio_wavetable_get_freq ( const aubio_wavetable_t * o);
137
138/** set wavetable amplitude
139
140  \param o wavetable, created by new_aubio_wavetable()
141  \param amp new amplitude value for the wavetable
142
143  \return 0 if successful, 1 otherwise
144
145*/
146uint_t aubio_wavetable_set_amp ( aubio_wavetable_t * o, smpl_t amp );
147
148/** get wavetable amplitude
149
150  \param o wavetable, created by new_aubio_wavetable()
151
152  \return current amplitude
153
154*/
155smpl_t aubio_wavetable_get_amp ( const aubio_wavetable_t * o);
156
157/** destroy aubio_wavetable_t object
158
159  \param o wavetable, created by new_aubio_wavetable()
160
161*/
162void del_aubio_wavetable( aubio_wavetable_t * o );
163
164#ifdef __cplusplus
165}
166#endif
167
168#endif /* AUBIO_WAVETABLE_H */
Note: See TracBrowser for help on using the repository browser.