2 Copyright (C) 2003-2013 Paul Brossier <piem@aubio.org>
4 This file is part of aubio.
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.
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.
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/>.
21 #ifndef AUBIO_SAMPLER_H
22 #define AUBIO_SAMPLER_H
26 Load and play sound files.
28 This file loads a sample and gets ready to play it.
30 The `_do` function adds the new samples to the input, and write the result as
33 \example synth/test-sampler.c
42 typedef struct _aubio_sampler_t aubio_sampler_t;
44 /** create new sampler object
46 \param samplerate the sampling rate of the new sampler
47 \param hop_size the block size of the new sampler
49 \return the newly created ::aubio_sampler_t
52 aubio_sampler_t * new_aubio_sampler(uint_t samplerate, uint_t hop_size);
54 /** load source in sampler
56 \param o sampler, created by new_aubio_sampler()
57 \param uri the uri of the source to load
59 \return 0 if successful, non-zero otherwise
62 uint_t aubio_sampler_load( aubio_sampler_t * o, const char_t * uri );
64 /** process sampler function
66 \param o sampler, created by new_aubio_sampler()
67 \param input input of the sampler, to be added to the output
68 \param output output of the sampler
70 This function adds the new samples from the playing source to the output.
72 If `input` is not NULL and different from `output`, then the samples from `input`
73 are added to the output.
76 void aubio_sampler_do ( aubio_sampler_t * o, const fvec_t * input, fvec_t * output);
78 /** process sampler function, multiple channels
80 \param o sampler, created by new_aubio_sampler()
81 \param input input of the sampler, to be added to the output
82 \param output output of the sampler
84 This function adds the new samples from the playing source to the output.
86 If `input` is not NULL and different from `output`, then the samples from `input`
87 are added to the output.
90 void aubio_sampler_do_multi ( aubio_sampler_t * o, const fmat_t * input, fmat_t * output);
92 /** get current playing state
94 \param o sampler, created by new_aubio_sampler()
96 \return 0 if not playing, 1 if playing
99 uint_t aubio_sampler_get_playing ( const aubio_sampler_t * o );
101 /** set current playing state
103 \param o sampler, created by new_aubio_sampler()
104 \param playing 0 for not playing, 1 for playing
106 \return 0 if successful, 1 otherwise
109 uint_t aubio_sampler_set_playing ( aubio_sampler_t * o, uint_t playing );
111 /** play sample from start
113 \param o sampler, created by new_aubio_sampler()
115 \return 0 if successful, 1 otherwise
118 uint_t aubio_sampler_play ( aubio_sampler_t * o );
122 \param o sampler, created by new_aubio_sampler()
124 \return 0 if successful, 1 otherwise
127 uint_t aubio_sampler_stop ( aubio_sampler_t * o );
129 /** destroy ::aubio_sampler_t object
131 \param o sampler, created by new_aubio_sampler()
134 void del_aubio_sampler( aubio_sampler_t * o );
140 #endif /* AUBIO_SAMPLER_H */