aubio
0.4.9
Toggle main menu visibility
Loading...
Searching...
No Matches
synth
wavetable.h
Go to the documentation of this file.
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
38
extern
"C"
{
39
#endif
40
41
/** wavetable object */
42
typedef
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
*/
52
aubio_wavetable_t
*
new_aubio_wavetable
(
uint_t
samplerate,
uint_t
hop_size);
53
54
/** load source in wavetable
55
56
TODO: This function is not implemented yet. See new_aubio_sampler() instead.
57
58
\param o wavetable, created by new_aubio_wavetable()
59
\param uri the uri of the source to load
60
61
\return 0 if successful, non-zero otherwise
62
63
*/
64
uint_t
aubio_wavetable_load
(
aubio_wavetable_t
* o,
const
char_t
* uri );
65
66
/** process wavetable function
67
68
\param o wavetable, created by new_aubio_wavetable()
69
\param input input of the wavetable, to be added to the output
70
\param output output of the wavetable
71
72
This function adds the new samples from the playing wavetable to the output.
73
74
If `input` is not NULL and different from `output`, then the samples from `input`
75
are added to the output.
76
77
*/
78
void
aubio_wavetable_do
(
aubio_wavetable_t
* o,
const
fvec_t
* input,
fvec_t
* output);
79
80
/** process wavetable function, multiple channels
81
82
\param o wavetable, created by new_aubio_wavetable()
83
\param input input of the wavetable, to be added to the output
84
\param output output of the wavetable
85
86
This function adds the new samples from the playing wavetable to the output.
87
88
If `input` is not NULL and different from `output`, then the samples from `input`
89
are added to the output.
90
91
*/
92
void
aubio_wavetable_do_multi
(
aubio_wavetable_t
* o,
const
fmat_t
* input,
fmat_t
* output);
93
94
/** get current playing state
95
96
\param o wavetable, created by new_aubio_wavetable()
97
98
\return 0 if not playing, 1 if playing
99
100
*/
101
uint_t
aubio_wavetable_get_playing
(
const
aubio_wavetable_t
* o );
102
103
/** set current playing state
104
105
\param o wavetable, created by new_aubio_wavetable()
106
\param playing 0 for not playing, 1 for playing
107
108
\return 0 if successful, 1 otherwise
109
110
*/
111
uint_t
aubio_wavetable_set_playing
(
aubio_wavetable_t
* o,
uint_t
playing );
112
113
/** play sample from start
114
115
\param o wavetable, created by new_aubio_wavetable()
116
117
\return 0 if successful, 1 otherwise
118
119
*/
120
uint_t
aubio_wavetable_play
(
aubio_wavetable_t
* o );
121
122
/** stop wavetable
123
124
\param o wavetable, created by new_aubio_wavetable()
125
126
\return 0 if successful, 1 otherwise
127
128
*/
129
uint_t
aubio_wavetable_stop
(
aubio_wavetable_t
* o );
130
131
/** set wavetable frequency
132
133
\param o wavetable, created by new_aubio_wavetable()
134
\param freq new frequency value for the wavetable
135
136
\return 0 if successful, 1 otherwise
137
138
*/
139
uint_t
aubio_wavetable_set_freq
(
aubio_wavetable_t
* o,
smpl_t
freq );
140
141
/** get wavetable frequency
142
143
\param o wavetable, created by new_aubio_wavetable()
144
145
\return current frequency, in Hz
146
147
*/
148
smpl_t
aubio_wavetable_get_freq
(
const
aubio_wavetable_t
* o);
149
150
/** set wavetable amplitude
151
152
\param o wavetable, created by new_aubio_wavetable()
153
\param amp new amplitude value for the wavetable
154
155
\return 0 if successful, 1 otherwise
156
157
*/
158
uint_t
aubio_wavetable_set_amp
(
aubio_wavetable_t
* o,
smpl_t
amp );
159
160
/** get wavetable amplitude
161
162
\param o wavetable, created by new_aubio_wavetable()
163
164
\return current amplitude
165
166
*/
167
smpl_t
aubio_wavetable_get_amp
(
const
aubio_wavetable_t
* o);
168
169
/** destroy aubio_wavetable_t object
170
171
\param o wavetable, created by new_aubio_wavetable()
172
173
*/
174
void
del_aubio_wavetable
(
aubio_wavetable_t
* o );
175
176
#ifdef __cplusplus
177
}
178
#endif
179
180
#endif
/* AUBIO_WAVETABLE_H */
fmat_t
Buffer for real data.
Definition
fmat.h:40
fvec_t
Buffer for real data.
Definition
fvec.h:67
uint_t
unsigned int uint_t
unsigned integer
Definition
types.h:60
char_t
char char_t
character
Definition
types.h:64
smpl_t
float smpl_t
short sample format (32 or 64 bits)
Definition
types.h:41
new_aubio_wavetable
aubio_wavetable_t * new_aubio_wavetable(uint_t samplerate, uint_t hop_size)
create new wavetable object
aubio_wavetable_set_freq
uint_t aubio_wavetable_set_freq(aubio_wavetable_t *o, smpl_t freq)
set wavetable frequency
aubio_wavetable_get_playing
uint_t aubio_wavetable_get_playing(const aubio_wavetable_t *o)
get current playing state
aubio_wavetable_set_playing
uint_t aubio_wavetable_set_playing(aubio_wavetable_t *o, uint_t playing)
set current playing state
aubio_wavetable_get_amp
smpl_t aubio_wavetable_get_amp(const aubio_wavetable_t *o)
get wavetable amplitude
aubio_wavetable_do
void aubio_wavetable_do(aubio_wavetable_t *o, const fvec_t *input, fvec_t *output)
process wavetable function
aubio_wavetable_do_multi
void aubio_wavetable_do_multi(aubio_wavetable_t *o, const fmat_t *input, fmat_t *output)
process wavetable function, multiple channels
aubio_wavetable_stop
uint_t aubio_wavetable_stop(aubio_wavetable_t *o)
stop wavetable
aubio_wavetable_t
struct _aubio_wavetable_t aubio_wavetable_t
wavetable object
Definition
wavetable.h:42
aubio_wavetable_get_freq
smpl_t aubio_wavetable_get_freq(const aubio_wavetable_t *o)
get wavetable frequency
aubio_wavetable_set_amp
uint_t aubio_wavetable_set_amp(aubio_wavetable_t *o, smpl_t amp)
set wavetable amplitude
aubio_wavetable_play
uint_t aubio_wavetable_play(aubio_wavetable_t *o)
play sample from start
del_aubio_wavetable
void del_aubio_wavetable(aubio_wavetable_t *o)
destroy aubio_wavetable_t object
aubio_wavetable_load
uint_t aubio_wavetable_load(aubio_wavetable_t *o, const char_t *uri)
load source in wavetable
Generated by
1.17.0