source: src/io/source.h @ 4b43742

feature/autosinkfeature/cnnfeature/cnn_orgfeature/constantqfeature/crepefeature/crepe_orgfeature/pitchshiftfeature/pydocstringsfeature/timestretchfix/ffmpeg5pitchshiftsamplertimestretchyinfft+
Last change on this file since 4b43742 was 4b43742, checked in by Paul Brossier <piem@piem.org>, 10 years ago

src/io/source.h: add note about source_wavread

  • Property mode set to 100644
File size: 4.4 KB
Line 
1/*
2  Copyright (C) 2012-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_SOURCE_H
22#define _AUBIO_SOURCE_H
23
24/** \file
25
26  Media source to read blocks of consecutive audio samples from file
27
28  Depending on how aubio was compiled, the following file formats will be
29  available.
30
31  To write to file, use ::aubio_sink_t.
32
33  \b \p source_avcodec : libav
34
35  aubio can be optionally compiled with [libav](http://libav.org), which can
36  read from a very large number of audio and video formats, including over
37  different network protocols such as HTTP.
38
39  \b \p source_apple_audio : ExtAudioFileRef
40 
41  On Mac and iOS platforms, aubio should be compiled with CoreAudio [Extended
42  Audio File Services]
43  (https://developer.apple.com/library/mac/documentation/MusicAudio/Reference/ExtendedAudioFileServicesReference/Reference/reference.html).
44  This provides access to most common audio file formats, including compressed
45  ones.
46
47  \b \p source_sndfile : libsndfile
48
49  Also optional, aubio can be built against
50  [libsndfile](http://www.mega-nerd.com/libsndfile/), which can read [most
51  uncompressed formats](http://www.mega-nerd.com/libsndfile/#Features).
52
53  \b \p source_wavread : native WAV reader
54
55  A simple source to read from 16-bits PCM RIFF encoded WAV files.
56
57  \example io/test-source.c
58  \example io/test-source_multi.c
59
60*/
61
62#ifdef __cplusplus
63extern "C" {
64#endif
65
66/** media source object */
67typedef struct _aubio_source_t aubio_source_t;
68
69/**
70
71  create new ::aubio_source_t
72
73  \param uri the file path or uri to read from
74  \param samplerate sampling rate to view the fie at
75  \param hop_size the size of the blocks to read from
76
77  Creates a new source object. If `0` is passed as `samplerate`, the sample
78  rate of the original file is used.
79
80  The samplerate of newly created source can be obtained using
81  ::aubio_source_get_samplerate.
82
83*/
84aubio_source_t * new_aubio_source(char_t * uri, uint_t samplerate, uint_t hop_size);
85
86/**
87
88  read monophonic vector of length hop_size from source object
89
90  \param s source object, created with ::new_aubio_source
91  \param read_to ::fvec_t of data to read to
92  \param read upon returns, equals to number of frames actually read
93
94  Upon returns, `read` contains the number of frames actually read from the
95  source. `hop_size` if enough frames could be read, less otherwise.
96
97*/
98void aubio_source_do(aubio_source_t * s, fvec_t * read_to, uint_t * read);
99
100/**
101
102  read polyphonic vector of length hop_size from source object
103
104  \param s source object, created with ::new_aubio_source
105  \param read_to ::fmat_t of data to read to
106  \param[out] read upon returns, equals to number of frames actually read
107
108  Upon returns, `read` contains the number of frames actually read from the
109  source. `hop_size` if enough frames could be read, less otherwise.
110
111*/
112void aubio_source_do_multi(aubio_source_t * s, fmat_t * read_to, uint_t * read);
113
114/**
115
116  get samplerate of source object
117
118  \param s source object, created with ::new_aubio_source
119  \return samplerate, in Hz
120
121*/
122uint_t aubio_source_get_samplerate(aubio_source_t * s);
123
124/**
125
126  get channels of source object
127
128  \param s source object, created with ::new_aubio_source
129  \return channels
130
131*/
132uint_t aubio_source_get_channels (aubio_source_t * s);
133
134/**
135
136  seek source object
137
138  \param s source object, created with ::new_aubio_source
139  \param pos position to seek to, in frames
140
141  \return 0 if sucessful, non-zero on failure
142
143*/
144uint_t aubio_source_seek (aubio_source_t * s, uint_t pos);
145
146/**
147
148  close source object
149
150  \param s source object, created with ::new_aubio_source
151
152  \return 0 if sucessful, non-zero on failure
153
154 */
155uint_t aubio_source_close (aubio_source_t *s);
156
157/**
158
159  close source and cleanup memory
160
161  \param s source object, created with ::new_aubio_source
162
163*/
164void del_aubio_source(aubio_source_t * s);
165
166#ifdef __cplusplus
167}
168#endif
169
170#endif /* _AUBIO_SOURCE_H */
Note: See TracBrowser for help on using the repository browser.