aubio  0.4.9
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 */
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 */
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 */
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 */
121 
122 /** stop wavetable
123 
124  \param o wavetable, created by new_aubio_wavetable()
125 
126  \return 0 if successful, 1 otherwise
127 
128 */
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 */
140 
141 /** get wavetable frequency
142 
143  \param o wavetable, created by new_aubio_wavetable()
144 
145  \return current frequency, in Hz
146 
147 */
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 */
159 
160 /** get wavetable amplitude
161 
162  \param o wavetable, created by new_aubio_wavetable()
163 
164  \return current amplitude
165 
166 */
168 
169 /** destroy aubio_wavetable_t object
170 
171  \param o wavetable, created by new_aubio_wavetable()
172 
173 */
175 
176 #ifdef __cplusplus
177 }
178 #endif
179 
180 #endif /* AUBIO_WAVETABLE_H */
void del_aubio_wavetable(aubio_wavetable_t *o)
destroy aubio_wavetable_t object
uint_t aubio_wavetable_load(aubio_wavetable_t *o, const char_t *uri)
load source in wavetable
float smpl_t
short sample format (32 or 64 bits)
Definition: types.h:41
uint_t aubio_wavetable_play(aubio_wavetable_t *o)
play sample from start
smpl_t aubio_wavetable_get_freq(const aubio_wavetable_t *o)
get wavetable frequency
uint_t aubio_wavetable_get_playing(const aubio_wavetable_t *o)
get current playing state
uint_t aubio_wavetable_set_freq(aubio_wavetable_t *o, smpl_t freq)
set wavetable frequency
Buffer for real data.
Definition: fvec.h:67
void aubio_wavetable_do_multi(aubio_wavetable_t *o, const fmat_t *input, fmat_t *output)
process wavetable function, multiple channels
aubio_wavetable_t * new_aubio_wavetable(uint_t samplerate, uint_t hop_size)
create new wavetable object
uint_t aubio_wavetable_set_amp(aubio_wavetable_t *o, smpl_t amp)
set wavetable amplitude
void aubio_wavetable_do(aubio_wavetable_t *o, const fvec_t *input, fvec_t *output)
process wavetable function
smpl_t aubio_wavetable_get_amp(const aubio_wavetable_t *o)
get wavetable amplitude
unsigned int uint_t
unsigned integer
Definition: types.h:60
char char_t
character
Definition: types.h:64
uint_t aubio_wavetable_set_playing(aubio_wavetable_t *o, uint_t playing)
set current playing state
struct _aubio_wavetable_t aubio_wavetable_t
wavetable object
Definition: wavetable.h:42
uint_t aubio_wavetable_stop(aubio_wavetable_t *o)
stop wavetable
Buffer for real data.
Definition: fmat.h:40