aubio
0.4.1
|
00001 /* 00002 Copyright (C) 2003-2013 Paul Brossier <piem@aubio.org> 00003 00004 This file is part of aubio. 00005 00006 aubio is free software: you can redistribute it and/or modify 00007 it under the terms of the GNU General Public License as published by 00008 the Free Software Foundation, either version 3 of the License, or 00009 (at your option) any later version. 00010 00011 aubio is distributed in the hope that it will be useful, 00012 but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 GNU General Public License for more details. 00015 00016 You should have received a copy of the GNU General Public License 00017 along with aubio. If not, see <http://www.gnu.org/licenses/>. 00018 00019 */ 00020 00021 #ifndef _AUBIO_PARAMETER_H 00022 #define _AUBIO_PARAMETER_H 00023 00024 /** \file 00025 00026 Parameter with linear interpolation 00027 00028 This object manages a parameter, with minimum and maximum values, and a 00029 number of steps to compute linear interpolation between two values. 00030 00031 \example utils/test-parameter.c 00032 00033 */ 00034 00035 #ifdef __cplusplus 00036 extern "C" { 00037 #endif 00038 00039 /** parameter object */ 00040 typedef struct _aubio_parameter_t aubio_parameter_t; 00041 00042 /** create new parameter object 00043 00044 \param min_value the minimum value of the new parameter 00045 \param max_value the maximum value of the new parameter 00046 \param steps the number of steps to interpolate from the old value to the target value 00047 00048 \return the newly created ::aubio_parameter_t 00049 00050 */ 00051 aubio_parameter_t * new_aubio_parameter(smpl_t min_value, smpl_t max_value, uint_t steps); 00052 00053 /** set target value of the parameter 00054 00055 \param param parameter, created by ::new_aubio_parameter 00056 \param value new target value 00057 00058 \return 0 if successful, 1 otherwise 00059 00060 */ 00061 uint_t aubio_parameter_set_target_value ( aubio_parameter_t * param, smpl_t value ); 00062 00063 /** get next parameter 00064 00065 \param param parameter, created by ::new_aubio_parameter 00066 00067 \return new interpolated parameter value 00068 00069 */ 00070 smpl_t aubio_parameter_get_next_value ( aubio_parameter_t * param ); 00071 00072 /** get current parameter value, without interpolation 00073 00074 \param param parameter, created by ::new_aubio_parameter 00075 00076 \return current value 00077 00078 */ 00079 smpl_t aubio_parameter_get_current_value ( aubio_parameter_t * param ); 00080 00081 /** set current parameter value, skipping interpolation 00082 00083 \param param parameter, created by ::new_aubio_parameter 00084 \param value new parameter value 00085 00086 \return 0 if successful, 1 otherwise 00087 00088 */ 00089 uint_t aubio_parameter_set_current_value ( aubio_parameter_t * param, smpl_t value ); 00090 00091 /** set number of steps used for interpolation 00092 00093 \param param parameter, created by ::new_aubio_parameter 00094 \param steps new number of steps 00095 00096 \return 0 if successful, 1 otherwise 00097 00098 */ 00099 uint_t aubio_parameter_set_steps ( aubio_parameter_t * param, uint_t steps ); 00100 00101 /** get number of steps of this parameter 00102 00103 \param param parameter, created by ::new_aubio_parameter 00104 00105 \return number of steps 00106 00107 */ 00108 uint_t aubio_parameter_get_steps ( aubio_parameter_t * param); 00109 00110 /** set minimum value of this parameter 00111 00112 \param param parameter, created by ::new_aubio_parameter 00113 \param min_value new minimum value 00114 00115 \return 0 if successful, 1 otherwise 00116 00117 */ 00118 uint_t aubio_parameter_set_min_value ( aubio_parameter_t * param, smpl_t min_value ); 00119 00120 /** get minimum value of this parameter 00121 00122 \param param parameter, created by ::new_aubio_parameter 00123 00124 \return minimum value 00125 00126 */ 00127 smpl_t aubio_parameter_get_min_value ( aubio_parameter_t * param ); 00128 00129 /** set maximum value of this parameter 00130 00131 \param param parameter, created by ::new_aubio_parameter 00132 \param max_value new maximum value 00133 00134 \return 0 if successful, 1 otherwise 00135 00136 */ 00137 uint_t aubio_parameter_set_max_value ( aubio_parameter_t * param, smpl_t max_value ); 00138 00139 /** get maximum value of this parameter 00140 00141 \param param parameter, created by ::new_aubio_parameter 00142 00143 \return maximum value 00144 00145 */ 00146 smpl_t aubio_parameter_get_max_value ( aubio_parameter_t * param ); 00147 00148 /** destroy ::aubio_parameter_t object 00149 00150 \param param parameter, created by ::new_aubio_parameter 00151 00152 */ 00153 void del_aubio_parameter( aubio_parameter_t * param ); 00154 00155 #ifdef __cplusplus 00156 } 00157 #endif 00158 00159 #endif /* _AUBIO_PARAMETER_H */