source: src/io/source_wavread.h @ ebfa80d

feature/autosinkfeature/cnnfeature/cnn_orgfeature/constantqfeature/crepefeature/crepe_orgfeature/pitchshiftfeature/timestretchfix/ffmpeg5
Last change on this file since ebfa80d was b4e1438, checked in by Paul Brossier <piem@piem.org>, 9 years ago

src/io/source_wavread.h: add _get_duration

  • Property mode set to 100644
File size: 4.1 KB
Line 
1/*
2  Copyright (C) 2014 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_WAVREAD_H
22#define AUBIO_SOURCE_WAVREAD_H
23
24/** \file
25
26  Read from file using custom wav reading routines.
27
28  Avoid including this file directly! Prefer using ::aubio_source_t instead to
29  make your code portable.
30
31  To write to file, use ::aubio_sink_t.
32
33  References:
34
35    - http://netghost.narod.ru/gff/graphics/summary/micriff.htm
36    - https://ccrma.stanford.edu/courses/422/projects/WaveFormat/
37
38  \example io/test-source_wavread.c
39
40*/
41
42#ifdef __cplusplus
43extern "C" {
44#endif
45
46/** wavread media source object */
47typedef struct _aubio_source_wavread_t aubio_source_wavread_t;
48
49/**
50
51  create new ::aubio_source_wavread_t
52
53  \param uri the file path or uri to read from
54  \param samplerate sampling rate to view the fie at
55  \param hop_size the size of the blocks to read from
56
57  Creates a new source object. If `0` is passed as `samplerate`, the sample
58  rate of the original file is used.
59
60  The samplerate of newly created source can be obtained using
61  ::aubio_source_wavread_get_samplerate.
62
63*/
64aubio_source_wavread_t * new_aubio_source_wavread(const char_t * uri, uint_t samplerate, uint_t hop_size);
65
66/**
67
68  read monophonic vector of length hop_size from source object
69
70  \param s source object, created with ::new_aubio_source_wavread
71  \param read_to ::fvec_t of data to read to
72  \param[out] read upon returns, equals to number of frames actually read
73
74  Upon returns, `read` contains the number of frames actually read from the
75  source. `hop_size` if enough frames could be read, less otherwise.
76
77*/
78void aubio_source_wavread_do(aubio_source_wavread_t * s, fvec_t * read_to, uint_t * read);
79
80/**
81
82  read polyphonic vector of length hop_size from source object
83
84  \param s source object, created with ::new_aubio_source_wavread
85  \param read_to ::fmat_t of data to read to
86  \param read upon returns, equals to number of frames actually read
87
88  Upon returns, `read` contains the number of frames actually read from the
89  source. `hop_size` if enough frames could be read, less otherwise.
90
91*/
92void aubio_source_wavread_do_multi(aubio_source_wavread_t * s, fmat_t * read_to, uint_t * read);
93
94/**
95
96  get samplerate of source object
97
98  \param s source object, created with ::new_aubio_source_wavread
99  \return samplerate, in Hz
100
101*/
102uint_t aubio_source_wavread_get_samplerate(aubio_source_wavread_t * s);
103
104/**
105
106  get number of channels of source object
107
108  \param s source object, created with ::new_aubio_source_wavread
109  \return number of channels
110
111*/
112uint_t aubio_source_wavread_get_channels (aubio_source_wavread_t * s);
113
114/**
115
116  seek source object
117
118  \param s source object, created with ::new_aubio_source_wavread
119  \param pos position to seek to, in frames
120
121  \return 0 if sucessful, non-zero on failure
122
123*/
124uint_t aubio_source_wavread_seek (aubio_source_wavread_t *s, uint_t pos);
125
126/**
127
128  get the duration of source object, in frames
129
130  \param s source object, created with ::new_aubio_source_sndfile
131  \return number of frames in file
132
133*/
134uint_t aubio_source_wavread_get_duration (const aubio_source_wavread_t *s);
135
136/**
137
138  close source
139
140  \param s source object, created with ::new_aubio_source_wavread
141
142  \return 0 if sucessful, non-zero on failure
143
144*/
145uint_t aubio_source_wavread_close (aubio_source_wavread_t *s);
146
147/**
148
149  close source and cleanup memory
150
151  \param s source object, created with ::new_aubio_source_wavread
152
153*/
154void del_aubio_source_wavread(aubio_source_wavread_t * s);
155
156#ifdef __cplusplus
157}
158#endif
159
160#endif /* AUBIO_SOURCE_WAVREAD_H */
Note: See TracBrowser for help on using the repository browser.