source: src/synth/sampler.h @ 6cc2d9d

sampler
Last change on this file since 6cc2d9d was 6cc2d9d, checked in by Paul Brossier <piem@piem.org>, 8 years ago

src/synth/sampler.h: improve documentation

  • Property mode set to 100644
File size: 5.6 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_SAMPLER_H
22#define AUBIO_SAMPLER_H
23
24/** \file
25
26  Load and play a sound file.
27
28  This file loads a sample and gets ready to play it.
29
30  The `_do` function adds the new samples to the input, and write the result as
31  the output.
32
33TODO:
34  - add _preset_threaded(level)
35  - add _set_stretch
36  - add _set_pitch
37
38  \example synth/test-sampler.c
39
40*/
41
42#ifdef __cplusplus
43extern "C" {
44#endif
45
46/** sampler object */
47typedef struct _aubio_sampler_t aubio_sampler_t;
48
49/** create new sampler object
50
51  \param samplerate the sampling rate of the new sampler
52  \param hop_size the block size of the new sampler
53
54  \return the newly created ::aubio_sampler_t
55
56*/
57aubio_sampler_t * new_aubio_sampler(uint_t hop_size, uint_t samplerate);
58
59/** load source in sampler
60
61  \param o sampler, created by new_aubio_sampler()
62  \param uri the uri of the source to load
63
64  \return 0 if successful, non-zero otherwise
65
66  This function attempts to load a new source, swaps the current one with the
67  newly loaded one (or NULL if loading failed), then delete the old one.
68
69*/
70uint_t aubio_sampler_load( aubio_sampler_t * o, const char_t * uri );
71
72/** queue source in sampler
73
74  \param o sampler, created by new_aubio_sampler()
75  \param uri the uri of the source to load
76
77  \return 0 if successfully queued, non-zero otherwise
78
79  This function is identical to aubio_sampler_load(), except it will be called
80  in its own thread to avoid blocking calls to aubio_sampler_do().
81
82*/
83uint_t aubio_sampler_queue(aubio_sampler_t * o, const char_t * uri );
84
85/** process sampler function
86
87  \param o sampler, created by new_aubio_sampler()
88  \param output output of the sampler
89  \param read number of samples actually read
90
91  This function get new samples from the sampler and store them into output.
92
93  The output vector will be completed with 0 if too few samples are available.
94
95*/
96void aubio_sampler_do ( aubio_sampler_t * o, fvec_t * output, uint_t *read);
97
98/** process sampler function, multiple channels
99
100  \param o sampler, created by new_aubio_sampler()
101  \param output output of the sampler
102
103This function gets new samples from the playing source into output.
104
105*/
106void aubio_sampler_do_multi ( aubio_sampler_t * o, fmat_t * output, uint_t *read);
107
108/** get current playing state
109
110  \param o sampler, created by new_aubio_sampler()
111
112  \return 0 if not playing, 1 if playing
113
114*/
115uint_t aubio_sampler_get_playing ( const aubio_sampler_t * o );
116
117/** set current playing state
118
119  \param o sampler, created by new_aubio_sampler()
120  \param playing 0 for not playing, 1 for playing
121
122  \return 0 if successful, 1 otherwise
123
124*/
125uint_t aubio_sampler_set_playing ( aubio_sampler_t * o, uint_t playing );
126
127uint_t aubio_sampler_get_loop(aubio_sampler_t * o);
128
129/** set current looping state
130
131  \param o sampler, created by new_aubio_sampler()
132  \param looping 0 for not looping, 1 for looping
133
134  \return 0 if successful, 1 otherwise
135
136*/
137uint_t aubio_sampler_set_loop(aubio_sampler_t * o, uint_t loop);
138
139/** play sample from start
140
141  \param o sampler, created by new_aubio_sampler()
142
143  \return 0 if successful, 1 otherwise
144
145*/
146uint_t aubio_sampler_play ( aubio_sampler_t * o );
147
148/** play sample from start, looping it
149
150  \param o sampler, created by new_aubio_sampler()
151
152  \return 0 if successful, 1 otherwise
153
154*/
155uint_t aubio_sampler_loop ( aubio_sampler_t * o );
156
157/** play sample from start, once
158
159  \param o sampler, created by new_aubio_sampler()
160
161  \return 0 if successful, 1 otherwise
162
163*/
164uint_t aubio_sampler_trigger ( aubio_sampler_t * o );
165
166/** stop sample
167
168  \param o sampler, created by new_aubio_sampler()
169
170  \return 0 if successful, 1 otherwise
171
172*/
173uint_t aubio_sampler_stop ( aubio_sampler_t * o );
174
175/** get end-of-file status
176
177  \param o sampler, created by new_aubio_sampler()
178
179  \return 1 when the eof is being reached, 0 otherwise
180
181*/
182uint_t aubio_sampler_get_eof(aubio_sampler_t * o);
183
184/** get end-of-file status
185
186  \param o sampler, created by new_aubio_sampler()
187
188  \return 1 when the eof is being reached, 0 otherwise
189
190*/
191uint_t aubio_sampler_get_finished (aubio_sampler_t * o);
192
193/** get samplerate
194
195  \param o sampler, created by new_aubio_sampler()
196
197  \return samplerate of the sampler
198
199*/
200uint_t aubio_sampler_get_samplerate(aubio_sampler_t * o);
201
202/** get the number of samples that were set to zero while opening a file
203
204  \param o sampler, created by new_aubio_sampler()
205  \param waited the number of frames processed during this block
206
207  \return the total delay in samples when the file was successfuly opened, 0
208  otherwise
209
210*/
211uint_t aubio_sampler_get_waited_opening(aubio_sampler_t * o, uint_t waited);
212
213/** seek to position
214
215  \param o sampler, created by new_aubio_sampler()
216  \param pos position to seek to, in samples
217
218  \return 0 if successful, 1 otherwise
219
220*/
221uint_t aubio_sampler_seek(aubio_sampler_t * o, uint_t pos);
222
223/** destroy ::aubio_sampler_t object
224
225  \param o sampler, created by new_aubio_sampler()
226
227*/
228void del_aubio_sampler( aubio_sampler_t * o );
229
230#ifdef __cplusplus
231}
232#endif
233
234#endif /* AUBIO_SAMPLER_H */
Note: See TracBrowser for help on using the repository browser.