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_PARAMETER_H
22 #define _AUBIO_PARAMETER_H
26 Parameter with linear interpolation
28 This object manages a parameter, with minimum and maximum values, and a
29 number of steps to compute linear interpolation between two values.
31 \example utils/test-parameter.c
39 /** parameter object */
40 typedef struct _aubio_parameter_t aubio_parameter_t;
42 /** create new parameter object
44 \param min_value the minimum value of the new parameter
45 \param max_value the maximum value of the new parameter
46 \param steps the number of steps to interpolate from the old value to the target value
48 \return the newly created ::aubio_parameter_t
51 aubio_parameter_t * new_aubio_parameter(smpl_t min_value, smpl_t max_value, uint_t steps);
53 /** set target value of the parameter
55 \param param parameter, created by ::new_aubio_parameter
56 \param value new target value
58 \return 0 if successful, 1 otherwise
61 uint_t aubio_parameter_set_target_value ( aubio_parameter_t * param, smpl_t value );
63 /** get next parameter
65 \param param parameter, created by ::new_aubio_parameter
67 \return new interpolated parameter value
70 smpl_t aubio_parameter_get_next_value ( aubio_parameter_t * param );
72 /** get current parameter value, without interpolation
74 \param param parameter, created by ::new_aubio_parameter
79 smpl_t aubio_parameter_get_current_value ( const aubio_parameter_t * param );
81 /** set current parameter value, skipping interpolation
83 \param param parameter, created by ::new_aubio_parameter
84 \param value new parameter value
86 \return 0 if successful, 1 otherwise
89 uint_t aubio_parameter_set_current_value ( aubio_parameter_t * param, smpl_t value );
91 /** set number of steps used for interpolation
93 \param param parameter, created by ::new_aubio_parameter
94 \param steps new number of steps
96 \return 0 if successful, 1 otherwise
99 uint_t aubio_parameter_set_steps ( aubio_parameter_t * param, uint_t steps );
101 /** get number of steps of this parameter
103 \param param parameter, created by ::new_aubio_parameter
105 \return number of steps
108 uint_t aubio_parameter_get_steps ( const aubio_parameter_t * param);
110 /** set minimum value of this parameter
112 \param param parameter, created by ::new_aubio_parameter
113 \param min_value new minimum value
115 \return 0 if successful, 1 otherwise
118 uint_t aubio_parameter_set_min_value ( aubio_parameter_t * param, smpl_t min_value );
120 /** get minimum value of this parameter
122 \param param parameter, created by ::new_aubio_parameter
124 \return minimum value
127 smpl_t aubio_parameter_get_min_value ( const aubio_parameter_t * param );
129 /** set maximum value of this parameter
131 \param param parameter, created by ::new_aubio_parameter
132 \param max_value new maximum value
134 \return 0 if successful, 1 otherwise
137 uint_t aubio_parameter_set_max_value ( aubio_parameter_t * param, smpl_t max_value );
139 /** get maximum value of this parameter
141 \param param parameter, created by ::new_aubio_parameter
143 \return maximum value
146 smpl_t aubio_parameter_get_max_value ( const aubio_parameter_t * param );
148 /** destroy ::aubio_parameter_t object
150 \param param parameter, created by ::new_aubio_parameter
153 void del_aubio_parameter( aubio_parameter_t * param );
159 #endif /* _AUBIO_PARAMETER_H */