source: src/fvec.h @ b235c0e

feature/autosinkfeature/constantqfeature/pitchshiftfeature/pydocstringsfeature/timestretchpitchshiftsamplertimestretchyinfft+
Last change on this file since b235c0e was b235c0e, checked in by Paul Brossier <piem@piem.org>, 6 years ago

src/: sync header defines, remove trailing spaces, update copyrights

Signed-off-by: Paul Brossier <piem@piem.org>

  • Property mode set to 100644
File size: 3.9 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__FVEC_H
22#define _AUBIO__FVEC_H
23
24#ifdef __cplusplus
25extern "C" {
26#endif
27
28/** \file
29
30  Vector of real-valued data
31
32  This file specifies the ::fvec_t buffer type, which is used throughout aubio
33  to store vector of real-valued ::smpl_t.
34
35  \example test-fvec.c
36
37*/
38
39/** Buffer for real data
40
41  Vector of real-valued data
42
43  ::fvec_t is is the structure used to store vector of real-valued data, ::smpl_t .
44
45  \code
46
47  uint_t buffer_size = 1024;
48
49  // create a vector of 512 values
50  fvec_t * input = new_fvec (buffer_size);
51
52  // set some values of the vector
53  input->data[23] = 2.;
54  // ..
55
56  // compute the mean of the vector
57  mean = fvec_mean(a_vector);
58
59  // destroy the vector
60  del_fvec(a_vector);
61
62  \endcode
63
64  See `examples/` and `tests/src` directories for more examples.
65
66 */
67typedef struct {
68  uint_t length;  /**< length of buffer */
69  smpl_t *data;   /**< data vector of length ::fvec_t.length */
70} fvec_t;
71
72/** fvec_t buffer creation function
73
74  \param length the length of the buffer to create
75
76*/
77fvec_t * new_fvec(uint_t length);
78/** fvec_t buffer deletion function
79
80  \param s buffer to delete as returned by new_fvec()
81
82*/
83void del_fvec(fvec_t *s);
84/** read sample value in a buffer
85
86  Note that this function is not used in the aubio library, since the same
87  result can be obtained using vec->data[position]. Its purpose is to
88  access these values from wrappers, as created by swig.
89
90  \param s vector to read from
91  \param position sample position to read from
92
93*/
94smpl_t fvec_read_sample(fvec_t *s, uint_t position);
95/** write sample value in a buffer
96
97  Note that this function is not used in the aubio library, since the same
98  result can be obtained by assigning vec->data[position]. Its purpose
99  is to access these values from wrappers, as created by swig.
100
101  \param s vector to write to
102  \param data value to write in s->data[position]
103  \param position sample position to write to
104
105*/
106void  fvec_write_sample(fvec_t *s, smpl_t data, uint_t position);
107
108/** read data from a buffer
109
110  Note that this function is not used in the aubio library, since the same
111  result can be obtained with vec->data. Its purpose is to access these values
112  from wrappers, as created by swig.
113
114  \param s vector to read from
115
116*/
117smpl_t * fvec_get_data(fvec_t *s);
118
119/** print out fvec data
120
121  \param s vector to print out
122
123*/
124void fvec_print(fvec_t *s);
125
126/** set all elements to a given value
127
128  \param s vector to modify
129  \param val value to set elements to
130
131*/
132void fvec_set(fvec_t *s, smpl_t val);
133
134/** set all elements to zero
135
136  \param s vector to modify
137
138*/
139void fvec_zeros(fvec_t *s);
140
141/** set all elements to ones
142
143  \param s vector to modify
144
145*/
146void fvec_ones(fvec_t *s);
147
148/** revert order of vector elements
149
150  \param s vector to revert
151
152*/
153void fvec_rev(fvec_t *s);
154
155/** apply weight to vector
156
157  If the weight vector is longer than s, only the first elements are used. If
158  the weight vector is shorter than s, the last elements of s are not weighted.
159
160  \param s vector to weight
161  \param weight weighting coefficients
162
163*/
164void fvec_weight(fvec_t *s, fvec_t *weight);
165
166/** make a copy of a vector
167
168  \param s source vector
169  \param t vector to copy to
170
171*/
172void fvec_copy(fvec_t *s, fvec_t *t);
173
174#ifdef __cplusplus
175}
176#endif
177
178#endif /* _AUBIO__FVEC_H */
Note: See TracBrowser for help on using the repository browser.