Mercurial > hg > libxtract
comparison src/descriptors.c @ 140:67f6b6e63d45
added Ooura implementation to repository
author | Jamie Bullock <jamie@jamiebullock.com> |
---|---|
date | Mon, 07 Jan 2013 16:27:15 +0000 |
parents | efb1c1ae2ba8 |
children | e4f704649c50 |
comparison
equal
deleted
inserted
replaced
136:cd6b321218f2 | 140:67f6b6e63d45 |
---|---|
1 /* libxtract feature extraction library | 1 /* libxtract feature extraction library |
2 * | 2 * |
3 * Copyright (C) 2006 Jamie Bullock | 3 * Copyright (C) 2006 Jamie Bullock |
4 * | 4 * |
5 * This program is free software; you can redistribute it and/or modify | 5 * This program is free software; you can redistribute it and/or modify |
6 * it under the terms of the GNU General Public License as published by | 6 * it under the terms of the GNU General Public License as published by |
7 * the Free Software Foundation; either version 2 of the License, or | 7 * the Free Software Foundation; either version 2 of the License, or |
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 * GNU General Public License for more details. | 13 * GNU General Public License for more details. |
14 * | 14 * |
15 * You should have received a copy of the GNU General Public License | 15 * You should have received a copy of the GNU General Public License |
16 * along with this program; if not, write to the Free Software | 16 * along with this program; if not, write to the Free Software |
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | 17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, |
18 * USA. | 18 * USA. |
19 */ | 19 */ |
20 | 20 |
21 #include "xtract/libxtract.h" | 21 #include "xtract/libxtract.h" |
22 #include "xtract_macros_private.h" | 22 #include "xtract_macros_private.h" |
23 #include <stdlib.h> | 23 #include <stdlib.h> |
24 #include <string.h> | 24 #include <string.h> |
25 #define XTRACT | 25 #define XTRACT |
26 | 26 |
27 xtract_function_descriptor_t *xtract_make_descriptors(void){ | 27 xtract_function_descriptor_t *xtract_make_descriptors(void) |
28 { | |
28 | 29 |
29 int f , F; | 30 int f , F; |
30 char *name, *p_name, *desc, *p_desc, *author; | 31 char *name, *p_name, *desc, *p_desc, *author; |
31 float *argv_min, *argv_max, *argv_def, *result_min, *result_max; | 32 float *argv_min, *argv_max, *argv_def, *result_min, *result_max; |
32 int *argc, *year, *argv_donor; | 33 int *argc, *year, *argv_donor; |
33 xtract_vector_t *data_format, *result_format; | 34 xtract_vector_t *data_format, *result_format; |
34 xtract_unit_t *data_unit, *argv_unit, *result_unit; | 35 xtract_unit_t *data_unit, *argv_unit, *result_unit; |
35 xtract_bool_t *is_scalar, *is_delta; | 36 xtract_bool_t *is_scalar, *is_delta; |
36 xtract_function_descriptor_t *fd, *d; | 37 xtract_function_descriptor_t *fd, *d; |
37 xtract_type_t *argv_type; | 38 xtract_type_t *argv_type; |
38 | 39 |
40 | 41 |
41 fd = malloc(XTRACT_FEATURES * sizeof(xtract_function_descriptor_t)); | 42 fd = malloc(XTRACT_FEATURES * sizeof(xtract_function_descriptor_t)); |
42 | 43 |
43 /* FIX - this file probably needs a rewrite for readability */ | 44 /* FIX - this file probably needs a rewrite for readability */ |
44 | 45 |
45 while(f--){ | 46 while(f--) |
47 { | |
46 | 48 |
47 d = &fd[f]; | 49 d = &fd[f]; |
48 d->id = f; | 50 d->id = f; |
49 argc = &d->argc; | 51 argc = &d->argc; |
50 argv_type = &d->argv.type; | 52 argv_type = &d->argv.type; |
52 argv_min = &d->argv.min[0]; | 54 argv_min = &d->argv.min[0]; |
53 argv_max = &d->argv.max[0]; | 55 argv_max = &d->argv.max[0]; |
54 argv_def = &d->argv.def[0]; | 56 argv_def = &d->argv.def[0]; |
55 argv_unit = &d->argv.unit[0]; | 57 argv_unit = &d->argv.unit[0]; |
56 | 58 |
57 switch (f) { | 59 switch (f) |
60 { | |
58 /* argc = 1 */ | 61 /* argc = 1 */ |
59 case XTRACT_VARIANCE: | 62 case XTRACT_VARIANCE: |
60 case XTRACT_SPECTRAL_VARIANCE: | 63 case XTRACT_SPECTRAL_VARIANCE: |
61 case XTRACT_STANDARD_DEVIATION: | 64 case XTRACT_STANDARD_DEVIATION: |
62 case XTRACT_DIFFERENCE_VECTOR: | 65 case XTRACT_DIFFERENCE_VECTOR: |
63 case XTRACT_AVERAGE_DEVIATION: | 66 case XTRACT_AVERAGE_DEVIATION: |
64 case XTRACT_SPECTRAL_STANDARD_DEVIATION: | 67 case XTRACT_SPECTRAL_STANDARD_DEVIATION: |
65 /* case XTRACT_SPECTRAL_AVERAGE_DEVIATION: */ | 68 /* case XTRACT_SPECTRAL_AVERAGE_DEVIATION: */ |
66 case XTRACT_LOWEST_VALUE: | 69 case XTRACT_LOWEST_VALUE: |
67 case XTRACT_TONALITY: | 70 case XTRACT_TONALITY: |
68 case XTRACT_MFCC: | 71 case XTRACT_MFCC: |
69 case XTRACT_LPC: | 72 case XTRACT_LPC: |
70 case XTRACT_LPCC: | 73 case XTRACT_LPCC: |
71 *argv_min = XTRACT_ANY; | 74 *argv_min = XTRACT_ANY; |
72 *argv_max = XTRACT_ANY; | 75 *argv_max = XTRACT_ANY; |
73 *argv_def = XTRACT_ANY; | 76 *argv_def = XTRACT_ANY; |
74 *argv_unit = XTRACT_DBFS; | 77 *argv_unit = XTRACT_DBFS; |
75 break; | 78 break; |
76 case XTRACT_SPECTRAL_INHARMONICITY: | 79 case XTRACT_SPECTRAL_INHARMONICITY: |
77 *argv_min = 0.f; | 80 *argv_min = 0.f; |
78 *argv_max = XTRACT_SR_UPPER_LIMIT / 2; | 81 *argv_max = XTRACT_SR_UPPER_LIMIT / 2; |
79 *argv_def = XTRACT_FUNDAMENTAL_DEFAULT; | 82 *argv_def = XTRACT_FUNDAMENTAL_DEFAULT; |
80 *argv_unit = XTRACT_HERTZ; | 83 *argv_unit = XTRACT_HERTZ; |
81 break; | 84 break; |
82 case XTRACT_F0: | 85 case XTRACT_F0: |
83 case XTRACT_FAILSAFE_F0: | 86 case XTRACT_FAILSAFE_F0: |
84 *argv_min = XTRACT_SR_LOWER_LIMIT; | 87 *argv_min = XTRACT_SR_LOWER_LIMIT; |
85 *argv_max = XTRACT_SR_UPPER_LIMIT; | 88 *argv_max = XTRACT_SR_UPPER_LIMIT; |
86 *argv_def = XTRACT_SR_DEFAULT; | 89 *argv_def = XTRACT_SR_DEFAULT; |
87 *argv_unit = XTRACT_HERTZ; | 90 *argv_unit = XTRACT_HERTZ; |
88 break; | 91 break; |
89 case XTRACT_FLATNESS_DB: | 92 case XTRACT_FLATNESS_DB: |
90 *argv_min = 0; | 93 *argv_min = 0; |
91 *argv_max = 1.0; | 94 *argv_max = 1.0; |
92 *argv_def = XTRACT_ANY; | 95 *argv_def = XTRACT_ANY; |
93 *argv_unit = XTRACT_DBFS; | 96 *argv_unit = XTRACT_DBFS; |
94 break; | 97 break; |
95 /* argc = 2 */; | 98 /* argc = 2 */; |
96 case XTRACT_ROLLOFF: | 99 case XTRACT_ROLLOFF: |
97 *argv_min = XTRACT_FFT_BANDS_MIN; | 100 *argv_min = XTRACT_FFT_BANDS_MIN; |
98 *argv_max = XTRACT_FFT_BANDS_MAX; | 101 *argv_max = XTRACT_FFT_BANDS_MAX; |
99 *argv_def = XTRACT_SPEC_BW_DEF ; | 102 *argv_def = XTRACT_SPEC_BW_DEF ; |
100 *argv_unit = XTRACT_HERTZ; | 103 *argv_unit = XTRACT_HERTZ; |
101 *(argv_min + 1) = 0.f; | 104 *(argv_min + 1) = 0.f; |
102 *(argv_max + 1) = 100.f; | 105 *(argv_max + 1) = 100.f; |
103 *(argv_def + 1) = 95.f; | 106 *(argv_def + 1) = 95.f; |
104 *(argv_unit + 1) = XTRACT_PERCENT; | 107 *(argv_unit + 1) = XTRACT_PERCENT; |
105 break; | 108 break; |
106 case XTRACT_PEAK_SPECTRUM: | 109 case XTRACT_PEAK_SPECTRUM: |
107 *argv_min = XTRACT_SR_LOWER_LIMIT / 2; | 110 *argv_min = XTRACT_SR_LOWER_LIMIT / 2; |
108 *argv_max = XTRACT_SR_UPPER_LIMIT / 2; | 111 *argv_max = XTRACT_SR_UPPER_LIMIT / 2; |
109 *argv_def = XTRACT_SR_DEFAULT / 2; | 112 *argv_def = XTRACT_SR_DEFAULT / 2; |
110 *argv_unit = XTRACT_HERTZ; | 113 *argv_unit = XTRACT_HERTZ; |
111 *(argv_min + 1) = 0.f; | 114 *(argv_min + 1) = 0.f; |
112 *(argv_max + 1) = 100.f ; | 115 *(argv_max + 1) = 100.f ; |
113 *(argv_def + 1) = 10.f ; | 116 *(argv_def + 1) = 10.f ; |
114 *(argv_unit + 1) = XTRACT_PERCENT; | 117 *(argv_unit + 1) = XTRACT_PERCENT; |
115 break; | 118 break; |
116 case XTRACT_HARMONIC_SPECTRUM: | 119 case XTRACT_HARMONIC_SPECTRUM: |
117 *argv_min = 0.f; | 120 *argv_min = 0.f; |
118 *argv_max = XTRACT_SR_UPPER_LIMIT / 2; | 121 *argv_max = XTRACT_SR_UPPER_LIMIT / 2; |
119 *argv_def = XTRACT_FUNDAMENTAL_DEFAULT; | 122 *argv_def = XTRACT_FUNDAMENTAL_DEFAULT; |
120 *argv_unit = XTRACT_HERTZ; | 123 *argv_unit = XTRACT_HERTZ; |
121 *(argv_min + 1) = 0.f; | 124 *(argv_min + 1) = 0.f; |
122 *(argv_max + 1) = 1.f ; | 125 *(argv_max + 1) = 1.f ; |
123 *(argv_def + 1) = .1f ; | 126 *(argv_def + 1) = .1f ; |
124 *(argv_unit + 1) = XTRACT_NONE; | 127 *(argv_unit + 1) = XTRACT_NONE; |
125 break; | 128 break; |
126 case XTRACT_NOISINESS: | 129 case XTRACT_NOISINESS: |
127 case XTRACT_SKEWNESS: | 130 case XTRACT_SKEWNESS: |
128 case XTRACT_KURTOSIS: | 131 case XTRACT_KURTOSIS: |
129 case XTRACT_SPECTRAL_SKEWNESS: | 132 case XTRACT_SPECTRAL_SKEWNESS: |
130 case XTRACT_SPECTRAL_KURTOSIS: | 133 case XTRACT_SPECTRAL_KURTOSIS: |
131 case XTRACT_CREST: | 134 case XTRACT_CREST: |
132 *argv_min = XTRACT_NONE; | 135 *argv_min = XTRACT_NONE; |
133 *argv_max = XTRACT_NONE; | 136 *argv_max = XTRACT_NONE; |
134 *argv_def = XTRACT_NONE; | 137 *argv_def = XTRACT_NONE; |
135 *argv_unit = XTRACT_NONE; | 138 *argv_unit = XTRACT_NONE; |
136 *(argv_min + 1) = XTRACT_NONE; | 139 *(argv_min + 1) = XTRACT_NONE; |
137 *(argv_max + 1) = XTRACT_NONE; | 140 *(argv_max + 1) = XTRACT_NONE; |
138 *(argv_def + 1) = XTRACT_NONE; | 141 *(argv_def + 1) = XTRACT_NONE; |
139 *(argv_unit + 1) = XTRACT_NONE; | 142 *(argv_unit + 1) = XTRACT_NONE; |
140 break; | 143 break; |
141 /* argc = 4 */ | 144 /* argc = 4 */ |
142 case XTRACT_SPECTRUM: | 145 case XTRACT_SPECTRUM: |
143 *argv_min = XTRACT_SR_LOWER_LIMIT / XTRACT_FFT_BANDS_MIN; | 146 *argv_min = XTRACT_SR_LOWER_LIMIT / XTRACT_FFT_BANDS_MIN; |
144 *argv_max = XTRACT_SR_UPPER_LIMIT / XTRACT_FFT_BANDS_MAX; | 147 *argv_max = XTRACT_SR_UPPER_LIMIT / XTRACT_FFT_BANDS_MAX; |
145 *argv_def = XTRACT_SR_DEFAULT / XTRACT_FFT_BANDS_DEF; | 148 *argv_def = XTRACT_SR_DEFAULT / XTRACT_FFT_BANDS_DEF; |
146 *argv_unit = XTRACT_HERTZ; | 149 *argv_unit = XTRACT_HERTZ; |
147 *(argv_min + 1) = 0; | 150 *(argv_min + 1) = 0; |
148 *(argv_max + 1) = 3 ; | 151 *(argv_max + 1) = 3 ; |
149 *(argv_def + 1) = 0; | 152 *(argv_def + 1) = 0; |
150 *(argv_unit + 1) = XTRACT_NONE; | 153 *(argv_unit + 1) = XTRACT_NONE; |
151 *(argv_min + 2) = 0; | 154 *(argv_min + 2) = 0; |
152 *(argv_max + 2) = 1; | 155 *(argv_max + 2) = 1; |
153 *(argv_def + 2) = 0; | 156 *(argv_def + 2) = 0; |
154 *(argv_unit + 2) = XTRACT_NONE; | 157 *(argv_unit + 2) = XTRACT_NONE; |
155 *(argv_min + 3) = 0; | 158 *(argv_min + 3) = 0; |
156 *(argv_max + 3) = 1; | 159 *(argv_max + 3) = 1; |
157 *(argv_def + 3) = 0; | 160 *(argv_def + 3) = 0; |
158 *(argv_unit + 3) = XTRACT_NONE; | 161 *(argv_unit + 3) = XTRACT_NONE; |
159 break; | 162 break; |
160 case XTRACT_SUBBANDS: | 163 case XTRACT_SUBBANDS: |
161 *argv_min = XTRACT_ANY; | 164 *argv_min = XTRACT_ANY; |
162 *argv_max = XTRACT_ANY; | 165 *argv_max = XTRACT_ANY; |
163 *argv_def = XTRACT_MEAN; | 166 *argv_def = XTRACT_MEAN; |
164 *argv_unit = XTRACT_NONE; | 167 *argv_unit = XTRACT_NONE; |
165 *(argv_min + 1) = 1; | 168 *(argv_min + 1) = 1; |
166 *(argv_max + 1) = 16384; | 169 *(argv_max + 1) = 16384; |
167 *(argv_def + 1) = 4; | 170 *(argv_def + 1) = 4; |
168 *(argv_unit + 1) = XTRACT_NONE; | 171 *(argv_unit + 1) = XTRACT_NONE; |
169 *(argv_min + 2) = 0; | 172 *(argv_min + 2) = 0; |
170 *(argv_max + 2) = 32; | 173 *(argv_max + 2) = 32; |
171 *(argv_def + 2) = 0; | 174 *(argv_def + 2) = 0; |
172 *(argv_unit + 2) = XTRACT_NONE; | 175 *(argv_unit + 2) = XTRACT_NONE; |
173 *(argv_min + 3) = 0; | 176 *(argv_min + 3) = 0; |
174 *(argv_max + 3) = XTRACT_ANY; | 177 *(argv_max + 3) = XTRACT_ANY; |
175 *(argv_def + 3) = 0; | 178 *(argv_def + 3) = 0; |
176 *(argv_unit + 3) = XTRACT_BINS; | 179 *(argv_unit + 3) = XTRACT_BINS; |
177 break; | 180 break; |
178 case XTRACT_BARK_COEFFICIENTS: | 181 case XTRACT_BARK_COEFFICIENTS: |
179 /* BARK_COEFFICIENTS is special because argc = BARK_BANDS */ | 182 /* BARK_COEFFICIENTS is special because argc = BARK_BANDS */ |
180 case XTRACT_WINDOWED: | 183 case XTRACT_WINDOWED: |
181 /* WINDOWED is special because argc = window size = N */ | 184 /* WINDOWED is special because argc = window size = N */ |
182 default: | 185 default: |
183 *argv_min = XTRACT_NONE; | 186 *argv_min = XTRACT_NONE; |
184 *argv_max = XTRACT_NONE; | 187 *argv_max = XTRACT_NONE; |
185 *argv_def = XTRACT_NONE; | 188 *argv_def = XTRACT_NONE; |
186 *argv_unit = XTRACT_NONE; | 189 *argv_unit = XTRACT_NONE; |
187 break; | 190 break; |
188 } | 191 } |
189 | 192 |
190 argv_donor = &d->argv.donor[0]; | 193 argv_donor = &d->argv.donor[0]; |
191 | 194 |
192 switch (f) { | 195 switch (f) |
196 { | |
193 /* argc = 1 */ | 197 /* argc = 1 */ |
194 case XTRACT_VARIANCE: | 198 case XTRACT_VARIANCE: |
195 *argv_donor = XTRACT_MEAN; | 199 *argv_donor = XTRACT_MEAN; |
196 break; | 200 break; |
197 case XTRACT_SPECTRAL_VARIANCE: | 201 case XTRACT_SPECTRAL_VARIANCE: |
198 *argv_donor = XTRACT_SPECTRAL_MEAN; | 202 *argv_donor = XTRACT_SPECTRAL_MEAN; |
199 break; | 203 break; |
200 case XTRACT_STANDARD_DEVIATION: | 204 case XTRACT_STANDARD_DEVIATION: |
201 *argv_donor = XTRACT_VARIANCE; | 205 *argv_donor = XTRACT_VARIANCE; |
202 break; | 206 break; |
203 case XTRACT_AVERAGE_DEVIATION: | 207 case XTRACT_AVERAGE_DEVIATION: |
204 *argv_donor = XTRACT_MEAN; | 208 *argv_donor = XTRACT_MEAN; |
205 break; | 209 break; |
206 case XTRACT_SPECTRAL_STANDARD_DEVIATION: | 210 case XTRACT_SPECTRAL_STANDARD_DEVIATION: |
207 *argv_donor = XTRACT_SPECTRAL_VARIANCE; | 211 *argv_donor = XTRACT_SPECTRAL_VARIANCE; |
208 break; | 212 break; |
209 /* case XTRACT_SPECTRAL_AVERAGE_DEVIATION: | 213 /* case XTRACT_SPECTRAL_AVERAGE_DEVIATION: |
210 *argv_donor = XTRACT_SPECTRAL_MEAN; | 214 *argv_donor = XTRACT_SPECTRAL_MEAN; |
211 break; */ | 215 break; */ |
212 case XTRACT_SPECTRAL_INHARMONICITY: | 216 case XTRACT_SPECTRAL_INHARMONICITY: |
213 *argv_donor = XTRACT_FAILSAFE_F0; | 217 *argv_donor = XTRACT_FAILSAFE_F0; |
214 break; | 218 break; |
215 case XTRACT_FLATNESS_DB: | 219 case XTRACT_FLATNESS_DB: |
216 *argv_donor = XTRACT_FLATNESS; | 220 *argv_donor = XTRACT_FLATNESS; |
217 break; | 221 break; |
218 case XTRACT_TONALITY: | 222 case XTRACT_TONALITY: |
219 *argv_donor = XTRACT_FLATNESS_DB; | 223 *argv_donor = XTRACT_FLATNESS_DB; |
220 break; | 224 break; |
221 case XTRACT_LOWEST_VALUE: | 225 case XTRACT_LOWEST_VALUE: |
222 case XTRACT_F0: | 226 case XTRACT_F0: |
223 case XTRACT_FAILSAFE_F0: | 227 case XTRACT_FAILSAFE_F0: |
224 *argv_donor = XTRACT_ANY; | 228 *argv_donor = XTRACT_ANY; |
225 break; | 229 break; |
226 case XTRACT_MFCC: | 230 case XTRACT_MFCC: |
227 *argv_donor = XTRACT_INIT_MFCC; | 231 *argv_donor = XTRACT_INIT_MFCC; |
228 break; | 232 break; |
229 /* argc = 2 */; | 233 /* argc = 2 */; |
230 case XTRACT_ROLLOFF: | 234 case XTRACT_ROLLOFF: |
231 case XTRACT_PEAK_SPECTRUM: | 235 case XTRACT_PEAK_SPECTRUM: |
232 case XTRACT_FLUX: | 236 case XTRACT_FLUX: |
233 case XTRACT_LNORM: | 237 case XTRACT_LNORM: |
234 *argv_donor = XTRACT_ANY; | 238 *argv_donor = XTRACT_ANY; |
235 *(argv_donor + 1) = XTRACT_ANY; | 239 *(argv_donor + 1) = XTRACT_ANY; |
236 break; | 240 break; |
237 case XTRACT_SKEWNESS: | 241 case XTRACT_SKEWNESS: |
238 case XTRACT_KURTOSIS: | 242 case XTRACT_KURTOSIS: |
239 *argv_donor = XTRACT_MEAN; | 243 *argv_donor = XTRACT_MEAN; |
240 *(argv_donor + 1) = XTRACT_STANDARD_DEVIATION; | 244 *(argv_donor + 1) = XTRACT_STANDARD_DEVIATION; |
241 break; | 245 break; |
242 case XTRACT_SPECTRAL_SKEWNESS: | 246 case XTRACT_SPECTRAL_SKEWNESS: |
243 case XTRACT_SPECTRAL_KURTOSIS: | 247 case XTRACT_SPECTRAL_KURTOSIS: |
244 *argv_donor = XTRACT_SPECTRAL_MEAN; | 248 *argv_donor = XTRACT_SPECTRAL_MEAN; |
245 *(argv_donor + 1) = XTRACT_SPECTRAL_STANDARD_DEVIATION; | 249 *(argv_donor + 1) = XTRACT_SPECTRAL_STANDARD_DEVIATION; |
246 break; | 250 break; |
247 case XTRACT_HARMONIC_SPECTRUM: | 251 case XTRACT_HARMONIC_SPECTRUM: |
248 *argv_donor = XTRACT_FAILSAFE_F0; | 252 *argv_donor = XTRACT_FAILSAFE_F0; |
249 *(argv_donor + 1) = XTRACT_ANY; | 253 *(argv_donor + 1) = XTRACT_ANY; |
250 break; | 254 break; |
251 case XTRACT_NOISINESS: | 255 case XTRACT_NOISINESS: |
252 *argv_donor = XTRACT_SUM; | 256 *argv_donor = XTRACT_SUM; |
253 *(argv_donor + 1) = XTRACT_SUM; | 257 *(argv_donor + 1) = XTRACT_SUM; |
254 break; | 258 break; |
255 case XTRACT_CREST: | 259 case XTRACT_CREST: |
256 *argv_donor = XTRACT_HIGHEST_VALUE; | 260 *argv_donor = XTRACT_HIGHEST_VALUE; |
257 *(argv_donor + 1) = XTRACT_MEAN; | 261 *(argv_donor + 1) = XTRACT_MEAN; |
258 break; | 262 break; |
259 /* argc = 4 */ | 263 /* argc = 4 */ |
260 case XTRACT_SPECTRUM: | 264 case XTRACT_SPECTRUM: |
261 *argv_donor = XTRACT_ANY; | 265 *argv_donor = XTRACT_ANY; |
262 *(argv_donor + 1) = XTRACT_ANY; | 266 *(argv_donor + 1) = XTRACT_ANY; |
263 *(argv_donor + 2) = XTRACT_ANY; | 267 *(argv_donor + 2) = XTRACT_ANY; |
264 *(argv_donor + 3) = XTRACT_ANY; | 268 *(argv_donor + 3) = XTRACT_ANY; |
265 break; | 269 break; |
266 case XTRACT_SUBBANDS: | 270 case XTRACT_SUBBANDS: |
267 *argv_donor = XTRACT_ANY; | 271 *argv_donor = XTRACT_ANY; |
268 *(argv_donor + 1) = XTRACT_ANY; | 272 *(argv_donor + 1) = XTRACT_ANY; |
269 *(argv_donor + 2) = XTRACT_ANY; | 273 *(argv_donor + 2) = XTRACT_ANY; |
270 *(argv_donor + 3) = XTRACT_ANY; | 274 *(argv_donor + 3) = XTRACT_ANY; |
271 break; | 275 break; |
272 /* BARK_BANDS */ | 276 /* BARK_BANDS */ |
273 case XTRACT_BARK_COEFFICIENTS: | 277 case XTRACT_BARK_COEFFICIENTS: |
274 *argv_donor = XTRACT_INIT_BARK; | 278 *argv_donor = XTRACT_INIT_BARK; |
275 break; | 279 break; |
276 case XTRACT_WINDOWED: | 280 case XTRACT_WINDOWED: |
277 *argv_donor = XTRACT_INIT_WINDOWED; | 281 *argv_donor = XTRACT_INIT_WINDOWED; |
278 break; | 282 break; |
279 default: | 283 default: |
280 *argv_donor = XTRACT_ANY; | 284 *argv_donor = XTRACT_ANY; |
281 break; | 285 break; |
282 } | 286 } |
283 | 287 |
284 data_format = &d->data.format; | 288 data_format = &d->data.format; |
285 | 289 |
286 switch(f){ | 290 switch(f) |
287 | 291 { |
288 case XTRACT_MEAN: | 292 |
289 case XTRACT_VARIANCE: | 293 case XTRACT_MEAN: |
290 case XTRACT_STANDARD_DEVIATION: | 294 case XTRACT_VARIANCE: |
291 case XTRACT_AVERAGE_DEVIATION: | 295 case XTRACT_STANDARD_DEVIATION: |
292 case XTRACT_SKEWNESS: | 296 case XTRACT_AVERAGE_DEVIATION: |
293 case XTRACT_KURTOSIS: | 297 case XTRACT_SKEWNESS: |
294 case XTRACT_LOWEST_VALUE: | 298 case XTRACT_KURTOSIS: |
295 case XTRACT_HIGHEST_VALUE: | 299 case XTRACT_LOWEST_VALUE: |
296 case XTRACT_SUM: | 300 case XTRACT_HIGHEST_VALUE: |
297 case XTRACT_WINDOWED: | 301 case XTRACT_SUM: |
298 *data_format = XTRACT_ARBITRARY_SERIES; | 302 case XTRACT_WINDOWED: |
299 break; | 303 *data_format = XTRACT_ARBITRARY_SERIES; |
300 case XTRACT_SPECTRAL_MEAN: | 304 break; |
301 case XTRACT_SPECTRAL_VARIANCE: | 305 case XTRACT_SPECTRAL_MEAN: |
302 case XTRACT_SPECTRAL_STANDARD_DEVIATION: | 306 case XTRACT_SPECTRAL_VARIANCE: |
307 case XTRACT_SPECTRAL_STANDARD_DEVIATION: | |
303 /* case XTRACT_SPECTRAL_AVERAGE_DEVIATION: */ | 308 /* case XTRACT_SPECTRAL_AVERAGE_DEVIATION: */ |
304 case XTRACT_SPECTRAL_SKEWNESS: | 309 case XTRACT_SPECTRAL_SKEWNESS: |
305 case XTRACT_SPECTRAL_KURTOSIS: | 310 case XTRACT_SPECTRAL_KURTOSIS: |
306 case XTRACT_SPECTRAL_CENTROID: | 311 case XTRACT_SPECTRAL_CENTROID: |
307 case XTRACT_SPECTRAL_SLOPE: | 312 case XTRACT_SPECTRAL_SLOPE: |
308 *data_format = XTRACT_SPECTRAL; | 313 *data_format = XTRACT_SPECTRAL; |
309 break; | 314 break; |
310 case XTRACT_ROLLOFF: | 315 case XTRACT_ROLLOFF: |
311 case XTRACT_NOISINESS: | 316 case XTRACT_NOISINESS: |
312 case XTRACT_BARK_COEFFICIENTS: | 317 case XTRACT_BARK_COEFFICIENTS: |
313 case XTRACT_CREST: | 318 case XTRACT_CREST: |
314 case XTRACT_IRREGULARITY_K: | 319 case XTRACT_IRREGULARITY_K: |
315 case XTRACT_IRREGULARITY_J: | 320 case XTRACT_IRREGULARITY_J: |
316 case XTRACT_SMOOTHNESS: | 321 case XTRACT_SMOOTHNESS: |
317 case XTRACT_FLATNESS: | 322 case XTRACT_FLATNESS: |
318 case XTRACT_SPREAD: | 323 case XTRACT_SPREAD: |
319 case XTRACT_POWER: | 324 case XTRACT_POWER: |
320 case XTRACT_HPS: | 325 case XTRACT_HPS: |
321 case XTRACT_PEAK_SPECTRUM: | 326 case XTRACT_PEAK_SPECTRUM: |
322 case XTRACT_SUBBANDS: | 327 case XTRACT_SUBBANDS: |
323 case XTRACT_MFCC: | 328 case XTRACT_MFCC: |
324 *data_format = XTRACT_SPECTRAL_MAGNITUDES; | 329 *data_format = XTRACT_SPECTRAL_MAGNITUDES; |
325 break; | 330 break; |
326 case XTRACT_LPC: | 331 case XTRACT_LPC: |
327 *data_format = XTRACT_AUTOCORRELATION_COEFFS; | 332 *data_format = XTRACT_AUTOCORRELATION_COEFFS; |
328 break; | 333 break; |
329 case XTRACT_LPCC: | 334 case XTRACT_LPCC: |
330 *data_format = XTRACT_LPC_COEFFS; | 335 *data_format = XTRACT_LPC_COEFFS; |
331 break; | 336 break; |
332 case XTRACT_SPECTRAL_INHARMONICITY: | 337 case XTRACT_SPECTRAL_INHARMONICITY: |
333 case XTRACT_HARMONIC_SPECTRUM: | 338 case XTRACT_HARMONIC_SPECTRUM: |
334 *data_format = XTRACT_SPECTRAL_PEAKS; | 339 *data_format = XTRACT_SPECTRAL_PEAKS; |
335 break; | 340 break; |
336 case XTRACT_NONZERO_COUNT: | 341 case XTRACT_NONZERO_COUNT: |
337 *data_format = XTRACT_SPECTRAL_PEAKS_MAGNITUDES; | 342 *data_format = XTRACT_SPECTRAL_PEAKS_MAGNITUDES; |
338 break; | 343 break; |
339 case XTRACT_F0: | 344 case XTRACT_F0: |
340 case XTRACT_FAILSAFE_F0: | 345 case XTRACT_FAILSAFE_F0: |
341 case XTRACT_SPECTRUM: | 346 case XTRACT_SPECTRUM: |
342 case XTRACT_AUTOCORRELATION: | 347 case XTRACT_AUTOCORRELATION: |
343 case XTRACT_AUTOCORRELATION_FFT: | 348 case XTRACT_AUTOCORRELATION_FFT: |
344 case XTRACT_DCT: | 349 case XTRACT_DCT: |
345 case XTRACT_AMDF: | 350 case XTRACT_AMDF: |
346 case XTRACT_ASDF: | 351 case XTRACT_ASDF: |
347 case XTRACT_ZCR: | 352 case XTRACT_ZCR: |
348 case XTRACT_RMS_AMPLITUDE: | 353 case XTRACT_RMS_AMPLITUDE: |
349 case XTRACT_FLUX: | 354 case XTRACT_FLUX: |
350 case XTRACT_LNORM: | 355 case XTRACT_LNORM: |
351 *data_format = XTRACT_AUDIO_SAMPLES; | 356 *data_format = XTRACT_AUDIO_SAMPLES; |
352 break; | 357 break; |
353 case XTRACT_TONALITY: | 358 case XTRACT_TONALITY: |
354 case XTRACT_FLATNESS_DB: | 359 case XTRACT_FLATNESS_DB: |
355 *data_format = XTRACT_NO_DATA; | 360 *data_format = XTRACT_NO_DATA; |
356 break; | 361 break; |
357 case XTRACT_TRISTIMULUS_1: | 362 case XTRACT_TRISTIMULUS_1: |
358 case XTRACT_TRISTIMULUS_2: | 363 case XTRACT_TRISTIMULUS_2: |
359 case XTRACT_TRISTIMULUS_3: | 364 case XTRACT_TRISTIMULUS_3: |
360 case XTRACT_ODD_EVEN_RATIO: | 365 case XTRACT_ODD_EVEN_RATIO: |
361 *data_format = XTRACT_SPECTRAL_HARMONICS_MAGNITUDES; | 366 *data_format = XTRACT_SPECTRAL_HARMONICS_MAGNITUDES; |
362 break; | 367 break; |
363 case XTRACT_LOUDNESS: | 368 case XTRACT_LOUDNESS: |
364 case XTRACT_SHARPNESS: | 369 case XTRACT_SHARPNESS: |
365 *data_format = XTRACT_BARK_COEFFS; | 370 *data_format = XTRACT_BARK_COEFFS; |
366 break; | 371 break; |
367 case XTRACT_DIFFERENCE_VECTOR: | 372 case XTRACT_DIFFERENCE_VECTOR: |
368 *data_format = XTRACT_SUBFRAMES; | 373 *data_format = XTRACT_SUBFRAMES; |
369 break; | 374 break; |
370 case XTRACT_ATTACK_TIME: | 375 case XTRACT_ATTACK_TIME: |
371 case XTRACT_DECAY_TIME: | 376 case XTRACT_DECAY_TIME: |
372 default: | 377 default: |
373 *data_format = XTRACT_NO_DATA; | 378 *data_format = XTRACT_NO_DATA; |
374 break; | 379 break; |
375 } | 380 } |
376 | 381 |
377 data_unit = &d->data.unit; | 382 data_unit = &d->data.unit; |
378 | 383 |
379 switch(f){ | 384 switch(f) |
380 | 385 { |
381 case XTRACT_MEAN: | 386 |
382 case XTRACT_VARIANCE: | 387 case XTRACT_MEAN: |
383 case XTRACT_STANDARD_DEVIATION: | 388 case XTRACT_VARIANCE: |
384 case XTRACT_AVERAGE_DEVIATION: | 389 case XTRACT_STANDARD_DEVIATION: |
385 case XTRACT_SKEWNESS: | 390 case XTRACT_AVERAGE_DEVIATION: |
386 case XTRACT_KURTOSIS: | 391 case XTRACT_SKEWNESS: |
387 case XTRACT_LOWEST_VALUE: | 392 case XTRACT_KURTOSIS: |
388 case XTRACT_HIGHEST_VALUE: | 393 case XTRACT_LOWEST_VALUE: |
389 case XTRACT_SUM: | 394 case XTRACT_HIGHEST_VALUE: |
390 case XTRACT_ZCR: | 395 case XTRACT_SUM: |
391 case XTRACT_PEAK_SPECTRUM: | 396 case XTRACT_ZCR: |
392 case XTRACT_TRISTIMULUS_1: | 397 case XTRACT_PEAK_SPECTRUM: |
393 case XTRACT_TRISTIMULUS_2: | 398 case XTRACT_TRISTIMULUS_1: |
394 case XTRACT_TRISTIMULUS_3: | 399 case XTRACT_TRISTIMULUS_2: |
395 case XTRACT_DCT: | 400 case XTRACT_TRISTIMULUS_3: |
396 case XTRACT_AMDF: | 401 case XTRACT_DCT: |
397 case XTRACT_ASDF: | 402 case XTRACT_AMDF: |
398 case XTRACT_IRREGULARITY_K: | 403 case XTRACT_ASDF: |
399 case XTRACT_IRREGULARITY_J: | 404 case XTRACT_IRREGULARITY_K: |
400 case XTRACT_ATTACK_TIME: | 405 case XTRACT_IRREGULARITY_J: |
401 case XTRACT_DECAY_TIME: | 406 case XTRACT_ATTACK_TIME: |
402 case XTRACT_DIFFERENCE_VECTOR: | 407 case XTRACT_DECAY_TIME: |
403 case XTRACT_FLUX: | 408 case XTRACT_DIFFERENCE_VECTOR: |
404 case XTRACT_LNORM: | 409 case XTRACT_FLUX: |
405 case XTRACT_F0: | 410 case XTRACT_LNORM: |
406 case XTRACT_FAILSAFE_F0: | 411 case XTRACT_F0: |
407 case XTRACT_MFCC: | 412 case XTRACT_FAILSAFE_F0: |
408 case XTRACT_AUTOCORRELATION: | 413 case XTRACT_MFCC: |
409 case XTRACT_AUTOCORRELATION_FFT: | 414 case XTRACT_AUTOCORRELATION: |
410 case XTRACT_ROLLOFF: | 415 case XTRACT_AUTOCORRELATION_FFT: |
411 case XTRACT_NOISINESS: | 416 case XTRACT_ROLLOFF: |
412 case XTRACT_CREST: | 417 case XTRACT_NOISINESS: |
413 case XTRACT_FLATNESS: | 418 case XTRACT_CREST: |
414 case XTRACT_FLATNESS_DB: | 419 case XTRACT_FLATNESS: |
415 case XTRACT_POWER: | 420 case XTRACT_FLATNESS_DB: |
416 case XTRACT_BARK_COEFFICIENTS: | 421 case XTRACT_POWER: |
417 case XTRACT_RMS_AMPLITUDE: | 422 case XTRACT_BARK_COEFFICIENTS: |
418 case XTRACT_SMOOTHNESS: | 423 case XTRACT_RMS_AMPLITUDE: |
419 case XTRACT_SPREAD: | 424 case XTRACT_SMOOTHNESS: |
420 case XTRACT_SHARPNESS: | 425 case XTRACT_SPREAD: |
421 case XTRACT_HPS: | 426 case XTRACT_SHARPNESS: |
422 case XTRACT_SPECTRUM: | 427 case XTRACT_HPS: |
423 case XTRACT_TONALITY: | 428 case XTRACT_SPECTRUM: |
424 case XTRACT_LOUDNESS: | 429 case XTRACT_TONALITY: |
425 case XTRACT_NONZERO_COUNT: | 430 case XTRACT_LOUDNESS: |
426 case XTRACT_LPC: | 431 case XTRACT_NONZERO_COUNT: |
427 case XTRACT_LPCC: | 432 case XTRACT_LPC: |
428 case XTRACT_WINDOWED: | 433 case XTRACT_LPCC: |
429 case XTRACT_SUBBANDS: | 434 case XTRACT_WINDOWED: |
430 *data_unit = XTRACT_ANY; | 435 case XTRACT_SUBBANDS: |
431 break; | 436 *data_unit = XTRACT_ANY; |
432 case XTRACT_SPECTRAL_MEAN: | 437 break; |
433 case XTRACT_SPECTRAL_VARIANCE: | 438 case XTRACT_SPECTRAL_MEAN: |
434 case XTRACT_SPECTRAL_STANDARD_DEVIATION: | 439 case XTRACT_SPECTRAL_VARIANCE: |
440 case XTRACT_SPECTRAL_STANDARD_DEVIATION: | |
435 /* case XTRACT_SPECTRAL_AVERAGE_DEVIATION: */ | 441 /* case XTRACT_SPECTRAL_AVERAGE_DEVIATION: */ |
436 case XTRACT_SPECTRAL_SKEWNESS: | 442 case XTRACT_SPECTRAL_SKEWNESS: |
437 case XTRACT_SPECTRAL_KURTOSIS: | 443 case XTRACT_SPECTRAL_KURTOSIS: |
438 case XTRACT_SPECTRAL_CENTROID: | 444 case XTRACT_SPECTRAL_CENTROID: |
439 case XTRACT_SPECTRAL_SLOPE: | 445 case XTRACT_SPECTRAL_SLOPE: |
440 case XTRACT_HARMONIC_SPECTRUM: | 446 case XTRACT_HARMONIC_SPECTRUM: |
441 case XTRACT_SPECTRAL_INHARMONICITY: | 447 case XTRACT_SPECTRAL_INHARMONICITY: |
442 *data_unit = XTRACT_ANY_AMPLITUDE_HERTZ; | 448 *data_unit = XTRACT_ANY_AMPLITUDE_HERTZ; |
443 break; | 449 break; |
444 case XTRACT_ODD_EVEN_RATIO: | 450 case XTRACT_ODD_EVEN_RATIO: |
445 *data_unit = XTRACT_HERTZ; | 451 *data_unit = XTRACT_HERTZ; |
446 break; | 452 break; |
447 } | 453 } |
448 | 454 |
449 name = d->algo.name; | 455 name = d->algo.name; |
450 p_name = d->algo.p_name; | 456 p_name = d->algo.p_name; |
451 desc = d->algo.desc; | 457 desc = d->algo.desc; |
454 year = &d->algo.year; | 460 year = &d->algo.year; |
455 | 461 |
456 strcpy(author, ""); | 462 strcpy(author, ""); |
457 *year = 0; | 463 *year = 0; |
458 | 464 |
459 switch(f){ | 465 switch(f) |
460 case XTRACT_MEAN: | 466 { |
461 strcpy(name, "mean"); | 467 case XTRACT_MEAN: |
462 strcpy(p_name, "Mean"); | 468 strcpy(name, "mean"); |
463 strcpy(desc, "Extract the mean of an input vector"); | 469 strcpy(p_name, "Mean"); |
464 strcpy(p_desc, "Extract the mean of a range of values"); | 470 strcpy(desc, "Extract the mean of an input vector"); |
465 strcpy(author, ""); | 471 strcpy(p_desc, "Extract the mean of a range of values"); |
466 break; | 472 strcpy(author, ""); |
467 case XTRACT_VARIANCE: | 473 break; |
468 strcpy(name, "variance"); | 474 case XTRACT_VARIANCE: |
469 strcpy(p_name, "Variance"); | 475 strcpy(name, "variance"); |
470 strcpy(desc, "Extract the variance of an input vector"); | 476 strcpy(p_name, "Variance"); |
471 strcpy(p_desc, "Extract the variance of a range of values"); | 477 strcpy(desc, "Extract the variance of an input vector"); |
472 strcpy(author, ""); | 478 strcpy(p_desc, "Extract the variance of a range of values"); |
473 break; | 479 strcpy(author, ""); |
474 case XTRACT_STANDARD_DEVIATION: | 480 break; |
475 strcpy(name, "standard_deviation"); | 481 case XTRACT_STANDARD_DEVIATION: |
476 strcpy(p_name, "Standard Deviation"); | 482 strcpy(name, "standard_deviation"); |
477 strcpy(desc, | 483 strcpy(p_name, "Standard Deviation"); |
478 "Extract the standard deviation of an input vector"); | 484 strcpy(desc, |
479 strcpy(p_desc, | 485 "Extract the standard deviation of an input vector"); |
480 "Extract the standard deviation of a range of values"); | 486 strcpy(p_desc, |
481 strcpy(author, ""); | 487 "Extract the standard deviation of a range of values"); |
482 break; | 488 strcpy(author, ""); |
483 case XTRACT_AVERAGE_DEVIATION: | 489 break; |
484 strcpy(name, "average_deviation"); | 490 case XTRACT_AVERAGE_DEVIATION: |
485 strcpy(p_name, "Average Deviation"); | 491 strcpy(name, "average_deviation"); |
486 strcpy(desc, | 492 strcpy(p_name, "Average Deviation"); |
487 "Extract the average deviation of an input vector"); | 493 strcpy(desc, |
488 strcpy(p_desc, | 494 "Extract the average deviation of an input vector"); |
489 "Extract the average deviation of a range of values"); | 495 strcpy(p_desc, |
490 strcpy(author, ""); | 496 "Extract the average deviation of a range of values"); |
491 break; | 497 strcpy(author, ""); |
492 case XTRACT_SKEWNESS: | 498 break; |
493 strcpy(name, "skewness"); | 499 case XTRACT_SKEWNESS: |
494 strcpy(p_name, "Skewness"); | 500 strcpy(name, "skewness"); |
495 strcpy(desc, | 501 strcpy(p_name, "Skewness"); |
496 "Extract the skewness of an input vector"); | 502 strcpy(desc, |
497 strcpy(p_desc, | 503 "Extract the skewness of an input vector"); |
498 "Extract the skewness of a range of values"); | 504 strcpy(p_desc, |
499 strcpy(author, ""); | 505 "Extract the skewness of a range of values"); |
500 break; | 506 strcpy(author, ""); |
501 case XTRACT_KURTOSIS: | 507 break; |
502 strcpy(name, "kurtosis"); | 508 case XTRACT_KURTOSIS: |
503 strcpy(p_name, "Kurtosis"); | 509 strcpy(name, "kurtosis"); |
504 strcpy(desc, | 510 strcpy(p_name, "Kurtosis"); |
505 "Extract the kurtosis of an input vector"); | 511 strcpy(desc, |
506 strcpy(p_desc, | 512 "Extract the kurtosis of an input vector"); |
507 "Extract the kurtosis of a range of values"); | 513 strcpy(p_desc, |
508 strcpy(author, ""); | 514 "Extract the kurtosis of a range of values"); |
509 break; | 515 strcpy(author, ""); |
510 case XTRACT_SPECTRAL_MEAN: | 516 break; |
511 strcpy(name, "spectral_mean"); | 517 case XTRACT_SPECTRAL_MEAN: |
512 strcpy(p_name, "Spectral Mean"); | 518 strcpy(name, "spectral_mean"); |
513 strcpy(desc, "Extract the mean of an input spectrum"); | 519 strcpy(p_name, "Spectral Mean"); |
514 strcpy(p_desc, "Extract the mean of an audio spectrum"); | 520 strcpy(desc, "Extract the mean of an input spectrum"); |
515 strcpy(author, ""); | 521 strcpy(p_desc, "Extract the mean of an audio spectrum"); |
516 break; | 522 strcpy(author, ""); |
517 case XTRACT_SPECTRAL_VARIANCE: | 523 break; |
518 strcpy(name, "spectral_variance"); | 524 case XTRACT_SPECTRAL_VARIANCE: |
519 strcpy(p_name, "Spectral Variance"); | 525 strcpy(name, "spectral_variance"); |
520 strcpy(desc, "Extract the variance of an input spectrum"); | 526 strcpy(p_name, "Spectral Variance"); |
521 strcpy(p_desc, "Extract the variance of an audio spectrum"); | 527 strcpy(desc, "Extract the variance of an input spectrum"); |
522 strcpy(author, ""); | 528 strcpy(p_desc, "Extract the variance of an audio spectrum"); |
523 break; | 529 strcpy(author, ""); |
524 case XTRACT_SPECTRAL_STANDARD_DEVIATION: | 530 break; |
525 strcpy(name, "spectral_standard_deviation"); | 531 case XTRACT_SPECTRAL_STANDARD_DEVIATION: |
526 strcpy(p_name, "Spectral Standard Deviation"); | 532 strcpy(name, "spectral_standard_deviation"); |
527 strcpy(desc, | 533 strcpy(p_name, "Spectral Standard Deviation"); |
528 "Extract the standard deviation of an input spectrum"); | 534 strcpy(desc, |
529 strcpy(p_desc, | 535 "Extract the standard deviation of an input spectrum"); |
530 "Extract the standard deviation of an audio spectrum"); | 536 strcpy(p_desc, |
531 strcpy(author, ""); | 537 "Extract the standard deviation of an audio spectrum"); |
532 break; | 538 strcpy(author, ""); |
539 break; | |
533 /* case XTRACT_SPECTRAL_AVERAGE_DEVIATION: | 540 /* case XTRACT_SPECTRAL_AVERAGE_DEVIATION: |
534 strcpy(name, "spectral_average_deviation"); | 541 strcpy(name, "spectral_average_deviation"); |
535 strcpy(p_name, "Spectral Average Deviation"); | 542 strcpy(p_name, "Spectral Average Deviation"); |
536 strcpy(desc, | 543 strcpy(desc, |
537 "Extract the average deviation of an input spectrum"); | 544 "Extract the average deviation of an input spectrum"); |
538 strcpy(p_desc, | 545 strcpy(p_desc, |
539 "Extract the average deviation of an audio spectrum"); | 546 "Extract the average deviation of an audio spectrum"); |
540 strcpy(author, ""); | 547 strcpy(author, ""); |
541 break; | 548 break; |
542 */ | 549 */ |
543 case XTRACT_ROLLOFF: | 550 case XTRACT_ROLLOFF: |
544 strcpy(name, "rolloff"); | 551 strcpy(name, "rolloff"); |
545 strcpy(p_name, "Spectral Rolloff"); | 552 strcpy(p_name, "Spectral Rolloff"); |
546 strcpy(desc, | 553 strcpy(desc, |
547 "Extract the rolloff point of a spectrum"); | 554 "Extract the rolloff point of a spectrum"); |
548 strcpy(p_desc, | 555 strcpy(p_desc, |
549 "Extract the rolloff point of an audio spectrum"); | 556 "Extract the rolloff point of an audio spectrum"); |
550 strcpy(author, "Bee Suan Ong"); | 557 strcpy(author, "Bee Suan Ong"); |
551 *year = 2005; | 558 *year = 2005; |
552 break; | 559 break; |
553 case XTRACT_SPECTRAL_INHARMONICITY: | 560 case XTRACT_SPECTRAL_INHARMONICITY: |
554 strcpy(name, "spectral_inharmonicity"); | 561 strcpy(name, "spectral_inharmonicity"); |
555 strcpy(p_name, "Inharmonicity"); | 562 strcpy(p_name, "Inharmonicity"); |
556 strcpy(desc, "Extract the inharmonicity of a spectrum"); | 563 strcpy(desc, "Extract the inharmonicity of a spectrum"); |
557 strcpy(p_desc, | 564 strcpy(p_desc, |
558 "Extract the inharmonicity of an audio spectrum"); | 565 "Extract the inharmonicity of an audio spectrum"); |
559 break; | 566 break; |
560 case XTRACT_SPECTRUM: | 567 case XTRACT_SPECTRUM: |
561 strcpy(name, "spectrum"); | 568 strcpy(name, "spectrum"); |
562 strcpy(p_name, "Spectrum"); | 569 strcpy(p_name, "Spectrum"); |
563 strcpy(desc, | 570 strcpy(desc, |
564 "Extract the spectrum of an input vector"); | 571 "Extract the spectrum of an input vector"); |
565 strcpy(p_desc, | 572 strcpy(p_desc, |
566 "Extract the spectrum of an audio signal"); | 573 "Extract the spectrum of an audio signal"); |
567 strcpy(author, ""); | 574 strcpy(author, ""); |
568 break; | 575 break; |
569 case XTRACT_ODD_EVEN_RATIO: | 576 case XTRACT_ODD_EVEN_RATIO: |
570 strcpy(name, "odd_even_ratio"); | 577 strcpy(name, "odd_even_ratio"); |
571 strcpy(p_name, "Odd/even Harmonic Ratio"); | 578 strcpy(p_name, "Odd/even Harmonic Ratio"); |
572 strcpy(desc, | 579 strcpy(desc, |
573 "Extract the odd-to-even harmonic ratio of a spectrum"); | 580 "Extract the odd-to-even harmonic ratio of a spectrum"); |
574 strcpy(p_desc, | 581 strcpy(p_desc, |
575 "Extract the odd-to-even harmonic ratio of an audio spectrum"); | 582 "Extract the odd-to-even harmonic ratio of an audio spectrum"); |
576 strcpy(author, ""); | 583 strcpy(author, ""); |
577 break; | 584 break; |
578 case XTRACT_LOWEST_VALUE: | 585 case XTRACT_LOWEST_VALUE: |
579 strcpy(name, "lowest_value"); | 586 strcpy(name, "lowest_value"); |
580 strcpy(p_name, "Lowest Value"); | 587 strcpy(p_name, "Lowest Value"); |
581 strcpy(desc, "Extract the lowest value from an input vector"); | 588 strcpy(desc, "Extract the lowest value from an input vector"); |
582 strcpy(p_desc, "Extract the lowest value from a given range"); | 589 strcpy(p_desc, "Extract the lowest value from a given range"); |
583 strcpy(author, ""); | 590 strcpy(author, ""); |
584 break; | 591 break; |
585 case XTRACT_F0: | 592 case XTRACT_F0: |
586 strcpy(name, "f0"); | 593 strcpy(name, "f0"); |
587 strcpy(p_name, "Fundamental Frequency"); | 594 strcpy(p_name, "Fundamental Frequency"); |
588 strcpy(desc, "Extract the fundamental frequency of a signal"); | 595 strcpy(desc, "Extract the fundamental frequency of a signal"); |
589 strcpy(p_desc, | 596 strcpy(p_desc, |
590 "Extract the fundamental frequency of an audio signal"); | 597 "Extract the fundamental frequency of an audio signal"); |
591 strcpy(author, "Jamie Bullock"); | 598 strcpy(author, "Jamie Bullock"); |
592 break; | 599 break; |
593 case XTRACT_FAILSAFE_F0: | 600 case XTRACT_FAILSAFE_F0: |
594 strcpy(name, "failsafe_f0"); | 601 strcpy(name, "failsafe_f0"); |
595 strcpy(p_name, "Fundamental Frequency (failsafe)"); | 602 strcpy(p_name, "Fundamental Frequency (failsafe)"); |
596 strcpy(desc, "Extract the fundamental frequency of a signal (failsafe)"); | 603 strcpy(desc, "Extract the fundamental frequency of a signal (failsafe)"); |
597 strcpy(p_desc, | 604 strcpy(p_desc, |
598 "Extract the fundamental frequency of an audio signal (failsafe)"); | 605 "Extract the fundamental frequency of an audio signal (failsafe)"); |
599 strcpy(author, "Jamie Bullock"); | 606 strcpy(author, "Jamie Bullock"); |
600 break; | 607 break; |
601 case XTRACT_TONALITY: | 608 case XTRACT_TONALITY: |
602 strcpy(name, "tonality"); | 609 strcpy(name, "tonality"); |
603 strcpy(p_name, "Tonality"); | 610 strcpy(p_name, "Tonality"); |
604 strcpy(desc, "Extract the tonality of a spectrum"); | 611 strcpy(desc, "Extract the tonality of a spectrum"); |
605 strcpy(p_desc, "Extract the tonality an audio spectrum"); | 612 strcpy(p_desc, "Extract the tonality an audio spectrum"); |
606 strcpy(author, "J. D. Johnston"); | 613 strcpy(author, "J. D. Johnston"); |
607 *year = 1988; | 614 *year = 1988; |
608 break; | 615 break; |
609 case XTRACT_SPECTRAL_SKEWNESS: | 616 case XTRACT_SPECTRAL_SKEWNESS: |
610 strcpy(name, "spectral_skewness"); | 617 strcpy(name, "spectral_skewness"); |
611 strcpy(p_name, "Spectral Skewness"); | 618 strcpy(p_name, "Spectral Skewness"); |
612 strcpy(desc, "Extract the skewness of an input spectrum"); | 619 strcpy(desc, "Extract the skewness of an input spectrum"); |
613 strcpy(p_desc, "Extract the skewness of an audio spectrum"); | 620 strcpy(p_desc, "Extract the skewness of an audio spectrum"); |
614 strcpy(author, ""); | 621 strcpy(author, ""); |
615 break; | 622 break; |
616 case XTRACT_SPECTRAL_KURTOSIS: | 623 case XTRACT_SPECTRAL_KURTOSIS: |
617 strcpy(name, "spectral_kurtosis"); | 624 strcpy(name, "spectral_kurtosis"); |
618 strcpy(p_name, "Spectral Kurtosis"); | 625 strcpy(p_name, "Spectral Kurtosis"); |
619 strcpy(desc, "Extract the kurtosis of an input spectrum"); | 626 strcpy(desc, "Extract the kurtosis of an input spectrum"); |
620 strcpy(p_desc, "Extract the kurtosis of an audio spectrum"); | 627 strcpy(p_desc, "Extract the kurtosis of an audio spectrum"); |
621 strcpy(author, ""); | 628 strcpy(author, ""); |
622 break; | 629 break; |
623 case XTRACT_PEAK_SPECTRUM: | 630 case XTRACT_PEAK_SPECTRUM: |
624 strcpy(name, "peak_spectrum"); | 631 strcpy(name, "peak_spectrum"); |
625 strcpy(p_name, "Peak Spectrum"); | 632 strcpy(p_name, "Peak Spectrum"); |
626 strcpy(desc, "Extract the spectral peaks from of a spectrum"); | 633 strcpy(desc, "Extract the spectral peaks from of a spectrum"); |
627 strcpy(p_desc, | 634 strcpy(p_desc, |
628 "Extract the spectral peaks from an audio spectrum"); | 635 "Extract the spectral peaks from an audio spectrum"); |
629 strcpy(author, ""); | 636 strcpy(author, ""); |
630 break; | 637 break; |
631 case XTRACT_HARMONIC_SPECTRUM: | 638 case XTRACT_HARMONIC_SPECTRUM: |
632 strcpy(name, "harmonic_spectrum"); | 639 strcpy(name, "harmonic_spectrum"); |
633 strcpy(p_name, "Harmonic Spectrum"); | 640 strcpy(p_name, "Harmonic Spectrum"); |
634 strcpy(desc, "Extract the harmonics from a spectrum"); | 641 strcpy(desc, "Extract the harmonics from a spectrum"); |
635 strcpy(p_desc, "Extract the harmonics from an audio spectrum"); | 642 strcpy(p_desc, "Extract the harmonics from an audio spectrum"); |
636 strcpy(author, ""); | 643 strcpy(author, ""); |
637 break; | 644 break; |
638 case XTRACT_NOISINESS: | 645 case XTRACT_NOISINESS: |
639 strcpy(name, "noisiness"); | 646 strcpy(name, "noisiness"); |
640 strcpy(p_name, "Noisiness"); | 647 strcpy(p_name, "Noisiness"); |
641 strcpy(desc, "Extract the noisiness of a spectrum"); | 648 strcpy(desc, "Extract the noisiness of a spectrum"); |
642 strcpy(p_desc, "Extract the noisiness of an audio spectrum"); | 649 strcpy(p_desc, "Extract the noisiness of an audio spectrum"); |
643 strcpy(author, "Tae Hong Park"); | 650 strcpy(author, "Tae Hong Park"); |
644 *year = 2000; | 651 *year = 2000; |
645 break; | 652 break; |
646 case XTRACT_CREST: | 653 case XTRACT_CREST: |
647 strcpy(name, "crest"); | 654 strcpy(name, "crest"); |
648 strcpy(p_name, "Spectral Crest Measure"); | 655 strcpy(p_name, "Spectral Crest Measure"); |
649 strcpy(desc, | 656 strcpy(desc, |
650 "Extract the spectral crest measure of a spectrum"); | 657 "Extract the spectral crest measure of a spectrum"); |
651 strcpy(p_desc, | 658 strcpy(p_desc, |
652 "Extract the spectral crest measure of an audio spectrum"); | 659 "Extract the spectral crest measure of an audio spectrum"); |
653 strcpy(author, "Peeters"); | 660 strcpy(author, "Peeters"); |
654 *year = 2003; | 661 *year = 2003; |
655 break; | 662 break; |
656 case XTRACT_MFCC: | 663 case XTRACT_MFCC: |
657 strcpy(name, "mfcc"); | 664 strcpy(name, "mfcc"); |
658 strcpy(p_name, "Mel-Frequency Cepstral Coefficients"); | 665 strcpy(p_name, "Mel-Frequency Cepstral Coefficients"); |
659 strcpy(desc, "Extract MFCC from a spectrum"); | 666 strcpy(desc, "Extract MFCC from a spectrum"); |
660 strcpy(p_desc, "Extract MFCC from an audio spectrum"); | 667 strcpy(p_desc, "Extract MFCC from an audio spectrum"); |
661 strcpy(author, "Rabiner"); | 668 strcpy(author, "Rabiner"); |
662 break; | 669 break; |
663 case XTRACT_LPC: | 670 case XTRACT_LPC: |
664 strcpy(name, "lpc"); | 671 strcpy(name, "lpc"); |
665 strcpy(p_name, "Linear predictive coding coefficients"); | 672 strcpy(p_name, "Linear predictive coding coefficients"); |
666 strcpy(desc, "Extract LPC from autocorrelation coefficients"); | 673 strcpy(desc, "Extract LPC from autocorrelation coefficients"); |
667 strcpy(p_desc, | 674 strcpy(p_desc, |
668 "Extract LPC from autocorrelation coefficients"); | 675 "Extract LPC from autocorrelation coefficients"); |
669 strcpy(author, | 676 strcpy(author, |
670 "Rabiner and Juang as implemented by Jutta Degener"); | 677 "Rabiner and Juang as implemented by Jutta Degener"); |
671 *year = 1994; | 678 *year = 1994; |
672 break; | 679 break; |
673 case XTRACT_LPCC: | 680 case XTRACT_LPCC: |
674 strcpy(name, "lpcc"); | 681 strcpy(name, "lpcc"); |
675 strcpy(p_name, "Linear predictive coding cepstral coefficients"); | 682 strcpy(p_name, "Linear predictive coding cepstral coefficients"); |
676 strcpy(desc, "Extract LPC cepstrum from LPC coefficients"); | 683 strcpy(desc, "Extract LPC cepstrum from LPC coefficients"); |
677 strcpy(p_desc, | 684 strcpy(p_desc, |
678 "Extract LPC cepstrum from LPC coefficients"); | 685 "Extract LPC cepstrum from LPC coefficients"); |
679 strcpy(author, "Rabiner and Juang"); | 686 strcpy(author, "Rabiner and Juang"); |
680 *year = 1993; | 687 *year = 1993; |
681 break; | 688 break; |
682 case XTRACT_SUBBANDS: | 689 case XTRACT_SUBBANDS: |
683 strcpy(name, "subbands"); | 690 strcpy(name, "subbands"); |
684 strcpy(p_name, "Sub band coefficients"); | 691 strcpy(p_name, "Sub band coefficients"); |
685 strcpy(desc, "Extract subband coefficients from spectral magnitudes"); | 692 strcpy(desc, "Extract subband coefficients from spectral magnitudes"); |
686 strcpy(p_desc, | 693 strcpy(p_desc, |
687 "Extract subband coefficients from spectral magnitudes"); | 694 "Extract subband coefficients from spectral magnitudes"); |
688 strcpy(author, ""); | 695 strcpy(author, ""); |
689 break; | 696 break; |
690 case XTRACT_BARK_COEFFICIENTS: | 697 case XTRACT_BARK_COEFFICIENTS: |
691 strcpy(name, "bark_coefficients"); | 698 strcpy(name, "bark_coefficients"); |
692 strcpy(p_name, "Bark Coefficients"); | 699 strcpy(p_name, "Bark Coefficients"); |
693 strcpy(desc, "Extract bark coefficients from a spectrum"); | 700 strcpy(desc, "Extract bark coefficients from a spectrum"); |
694 strcpy(p_desc, | 701 strcpy(p_desc, |
695 "Extract bark coefficients from an audio spectrum"); | 702 "Extract bark coefficients from an audio spectrum"); |
696 strcpy(author, ""); | 703 strcpy(author, ""); |
697 break; | 704 break; |
698 case XTRACT_SPECTRAL_CENTROID: | 705 case XTRACT_SPECTRAL_CENTROID: |
699 strcpy(name, "spectral_centroid"); | 706 strcpy(name, "spectral_centroid"); |
700 strcpy(p_name, "Spectral Centroid"); | 707 strcpy(p_name, "Spectral Centroid"); |
701 strcpy(desc, "Extract the spectral centroid of a spectrum"); | 708 strcpy(desc, "Extract the spectral centroid of a spectrum"); |
702 strcpy(p_desc, | 709 strcpy(p_desc, |
703 "Extract the spectral centroid of an audio spectrum"); | 710 "Extract the spectral centroid of an audio spectrum"); |
704 strcpy(author, ""); | 711 strcpy(author, ""); |
705 break; | 712 break; |
706 case XTRACT_IRREGULARITY_K: | 713 case XTRACT_IRREGULARITY_K: |
707 strcpy(name, "irregularity_k"); | 714 strcpy(name, "irregularity_k"); |
708 strcpy(p_name, "Irregularity I"); | 715 strcpy(p_name, "Irregularity I"); |
709 strcpy(desc, "Extract the irregularity (type I) of a spectrum"); | 716 strcpy(desc, "Extract the irregularity (type I) of a spectrum"); |
710 strcpy(p_desc, | 717 strcpy(p_desc, |
711 "Extract the irregularity (type I) of an audio spectrum"); | 718 "Extract the irregularity (type I) of an audio spectrum"); |
712 strcpy(author, "Krimphoff"); | 719 strcpy(author, "Krimphoff"); |
713 *year = 1994; | 720 *year = 1994; |
714 break; | 721 break; |
715 case XTRACT_IRREGULARITY_J: | 722 case XTRACT_IRREGULARITY_J: |
716 strcpy(name, "irregularity_j"); | 723 strcpy(name, "irregularity_j"); |
717 strcpy(p_name, "Irregularity II"); | 724 strcpy(p_name, "Irregularity II"); |
718 strcpy(desc, "Extract the irregularity (type II) of a spectrum"); | 725 strcpy(desc, "Extract the irregularity (type II) of a spectrum"); |
719 strcpy(p_desc, | 726 strcpy(p_desc, |
720 "Extract the irregularity (type II) of an audio spectrum"); | 727 "Extract the irregularity (type II) of an audio spectrum"); |
721 strcpy(author, "Jensen"); | 728 strcpy(author, "Jensen"); |
722 *year = 1999; | 729 *year = 1999; |
723 break; | 730 break; |
724 case XTRACT_TRISTIMULUS_1: | 731 case XTRACT_TRISTIMULUS_1: |
725 strcpy(name, "tristimulus_1"); | 732 strcpy(name, "tristimulus_1"); |
726 strcpy(p_name, "Tristimulus I"); | 733 strcpy(p_name, "Tristimulus I"); |
727 strcpy(desc, "Extract the tristimulus (type I) of a spectrum"); | 734 strcpy(desc, "Extract the tristimulus (type I) of a spectrum"); |
728 strcpy(p_desc, | 735 strcpy(p_desc, |
729 "Extract the tristimulus (type I) of an audio spectrum"); | 736 "Extract the tristimulus (type I) of an audio spectrum"); |
730 strcpy(author, "Pollard and Jansson"); | 737 strcpy(author, "Pollard and Jansson"); |
731 *year = 1982; | 738 *year = 1982; |
732 break; | 739 break; |
733 case XTRACT_TRISTIMULUS_2: | 740 case XTRACT_TRISTIMULUS_2: |
734 strcpy(name, "tristimulus_2"); | 741 strcpy(name, "tristimulus_2"); |
735 strcpy(p_name, "Tristimulus II"); | 742 strcpy(p_name, "Tristimulus II"); |
736 strcpy(desc, "Extract the tristimulus (type II) of a spectrum"); | 743 strcpy(desc, "Extract the tristimulus (type II) of a spectrum"); |
737 strcpy(p_desc, | 744 strcpy(p_desc, |
738 "Extract the tristimulus (type II) of an audio spectrum"); | 745 "Extract the tristimulus (type II) of an audio spectrum"); |
739 strcpy(author, "Pollard and Jansson"); | 746 strcpy(author, "Pollard and Jansson"); |
740 *year = 1982; | 747 *year = 1982; |
741 break; | 748 break; |
742 case XTRACT_TRISTIMULUS_3: | 749 case XTRACT_TRISTIMULUS_3: |
743 strcpy(name, "tristimulus_3"); | 750 strcpy(name, "tristimulus_3"); |
744 strcpy(p_name, "Tristimulus III"); | 751 strcpy(p_name, "Tristimulus III"); |
745 strcpy(desc, | 752 strcpy(desc, |
746 "Extract the tristimulus (type III) of a spectrum"); | 753 "Extract the tristimulus (type III) of a spectrum"); |
747 strcpy(p_desc, | 754 strcpy(p_desc, |
748 "Extract the tristimulus (type III) of an audio spectrum"); | 755 "Extract the tristimulus (type III) of an audio spectrum"); |
749 strcpy(author, "Pollard and Jansson"); | 756 strcpy(author, "Pollard and Jansson"); |
750 *year = 1982; | 757 *year = 1982; |
751 break; | 758 break; |
752 case XTRACT_SMOOTHNESS: | 759 case XTRACT_SMOOTHNESS: |
753 strcpy(name, "smoothness"); | 760 strcpy(name, "smoothness"); |
754 strcpy(p_name, "Spectral Smoothness"); | 761 strcpy(p_name, "Spectral Smoothness"); |
755 strcpy(desc, "Extract the spectral smoothness of a spectrum"); | 762 strcpy(desc, "Extract the spectral smoothness of a spectrum"); |
756 strcpy(p_desc, | 763 strcpy(p_desc, |
757 "Extract the spectral smoothness of an audio spectrum"); | 764 "Extract the spectral smoothness of an audio spectrum"); |
758 strcpy(author, "McAdams"); | 765 strcpy(author, "McAdams"); |
759 *year = 1999; | 766 *year = 1999; |
760 break; | 767 break; |
761 case XTRACT_FLATNESS: | 768 case XTRACT_FLATNESS: |
762 strcpy(name, "flatness"); | 769 strcpy(name, "flatness"); |
763 strcpy(p_name, "Spectral Flatness"); | 770 strcpy(p_name, "Spectral Flatness"); |
764 strcpy(desc, "Extract the spectral flatness of a spectrum"); | 771 strcpy(desc, "Extract the spectral flatness of a spectrum"); |
765 strcpy(p_desc, | 772 strcpy(p_desc, |
766 "Extract the spectral flatness of an audio spectrum"); | 773 "Extract the spectral flatness of an audio spectrum"); |
767 strcpy(author, "Tristan Jehan"); | 774 strcpy(author, "Tristan Jehan"); |
768 *year = 2005; | 775 *year = 2005; |
769 break; | 776 break; |
770 case XTRACT_FLATNESS_DB: | 777 case XTRACT_FLATNESS_DB: |
771 strcpy(name, "flatness_db"); | 778 strcpy(name, "flatness_db"); |
772 strcpy(p_name, "Log Spectral Flatness"); | 779 strcpy(p_name, "Log Spectral Flatness"); |
773 strcpy(desc, "Extract the log spectral flatness of a spectrum"); | 780 strcpy(desc, "Extract the log spectral flatness of a spectrum"); |
774 strcpy(p_desc, | 781 strcpy(p_desc, |
775 "Extract the log spectral flatness of an audio spectrum"); | 782 "Extract the log spectral flatness of an audio spectrum"); |
776 strcpy(author, "Peeters"); | 783 strcpy(author, "Peeters"); |
777 *year = 2003; | 784 *year = 2003; |
778 break; | 785 break; |
779 case XTRACT_SPREAD: | 786 case XTRACT_SPREAD: |
780 strcpy(name, "spread"); | 787 strcpy(name, "spread"); |
781 strcpy(p_name, "Spectral Spread"); | 788 strcpy(p_name, "Spectral Spread"); |
782 strcpy(desc, "Extract the spectral spread of a spectrum"); | 789 strcpy(desc, "Extract the spectral spread of a spectrum"); |
783 strcpy(p_desc, | 790 strcpy(p_desc, |
784 "Extract the spectral spread of an audio spectrum"); | 791 "Extract the spectral spread of an audio spectrum"); |
785 strcpy(author, "Norman Casagrande"); | 792 strcpy(author, "Norman Casagrande"); |
786 *year = 2005; | 793 *year = 2005; |
787 break; | 794 break; |
788 case XTRACT_ZCR: | 795 case XTRACT_ZCR: |
789 strcpy(name, "zcr"); | 796 strcpy(name, "zcr"); |
790 strcpy(p_name, "Zero Crossing Rate"); | 797 strcpy(p_name, "Zero Crossing Rate"); |
791 strcpy(desc, "Extract the zero crossing rate of a vector"); | 798 strcpy(desc, "Extract the zero crossing rate of a vector"); |
792 strcpy(p_desc, | 799 strcpy(p_desc, |
793 "Extract the zero crossing rate of an audio signal"); | 800 "Extract the zero crossing rate of an audio signal"); |
794 strcpy(author, ""); | 801 strcpy(author, ""); |
795 break; | 802 break; |
796 case XTRACT_LOUDNESS: | 803 case XTRACT_LOUDNESS: |
797 strcpy(name, "loudness"); | 804 strcpy(name, "loudness"); |
798 strcpy(p_name, "Loudness"); | 805 strcpy(p_name, "Loudness"); |
799 strcpy(desc, | 806 strcpy(desc, |
800 "Extract the loudness of a signal from its spectrum"); | 807 "Extract the loudness of a signal from its spectrum"); |
801 strcpy(p_desc, | 808 strcpy(p_desc, |
802 "Extract the loudness of an audio signal from its spectrum"); | 809 "Extract the loudness of an audio signal from its spectrum"); |
803 strcpy(author, "Moore, Glasberg et al"); | 810 strcpy(author, "Moore, Glasberg et al"); |
804 *year = 2005; | 811 *year = 2005; |
805 break; | 812 break; |
806 case XTRACT_HIGHEST_VALUE: | 813 case XTRACT_HIGHEST_VALUE: |
807 strcpy(name, "highest_value"); | 814 strcpy(name, "highest_value"); |
808 strcpy(p_name, "Highest Value"); | 815 strcpy(p_name, "Highest Value"); |
809 strcpy(desc, "Extract the highest value from an input vector"); | 816 strcpy(desc, "Extract the highest value from an input vector"); |
810 strcpy(p_desc, "Extract the highest value from a given range"); | 817 strcpy(p_desc, "Extract the highest value from a given range"); |
811 strcpy(author, ""); | 818 strcpy(author, ""); |
812 break; | 819 break; |
813 case XTRACT_SUM: | 820 case XTRACT_SUM: |
814 strcpy(name, "sum"); | 821 strcpy(name, "sum"); |
815 strcpy(p_name, "Sum of Values"); | 822 strcpy(p_name, "Sum of Values"); |
816 strcpy(desc, | 823 strcpy(desc, |
817 "Extract the sum of the values in an input vector"); | 824 "Extract the sum of the values in an input vector"); |
818 strcpy(p_desc, | 825 strcpy(p_desc, |
819 "Extract the sum of the values in a given range"); | 826 "Extract the sum of the values in a given range"); |
820 strcpy(author, ""); | 827 strcpy(author, ""); |
821 break; | 828 break; |
822 case XTRACT_RMS_AMPLITUDE: | 829 case XTRACT_RMS_AMPLITUDE: |
823 strcpy(name, "rms_amplitude"); | 830 strcpy(name, "rms_amplitude"); |
824 strcpy(p_name, "RMS Amplitude"); | 831 strcpy(p_name, "RMS Amplitude"); |
825 strcpy(desc, "Extract the RMS amplitude of a signal"); | 832 strcpy(desc, "Extract the RMS amplitude of a signal"); |
826 strcpy(p_desc, "Extract the RMS amplitude of an audio signal"); | 833 strcpy(p_desc, "Extract the RMS amplitude of an audio signal"); |
827 strcpy(author, ""); | 834 strcpy(author, ""); |
828 break; | 835 break; |
829 case XTRACT_POWER: | 836 case XTRACT_POWER: |
830 strcpy(name, "power"); | 837 strcpy(name, "power"); |
831 strcpy(p_name, "Spectral Power"); | 838 strcpy(p_name, "Spectral Power"); |
832 strcpy(desc, "Extract the spectral power of a spectrum"); | 839 strcpy(desc, "Extract the spectral power of a spectrum"); |
833 strcpy(p_desc, | 840 strcpy(p_desc, |
834 "Extract the spectral power of an audio spectrum"); | 841 "Extract the spectral power of an audio spectrum"); |
835 strcpy(author, "Bee Suan Ong"); | 842 strcpy(author, "Bee Suan Ong"); |
836 *year = 2005; | 843 *year = 2005; |
837 break; | 844 break; |
838 case XTRACT_SHARPNESS: | 845 case XTRACT_SHARPNESS: |
839 strcpy(name, "sharpness"); | 846 strcpy(name, "sharpness"); |
840 strcpy(p_name, "Spectral Sharpness"); | 847 strcpy(p_name, "Spectral Sharpness"); |
841 strcpy(desc, "Extract the spectral sharpness of a spectrum"); | 848 strcpy(desc, "Extract the spectral sharpness of a spectrum"); |
842 strcpy(p_desc, | 849 strcpy(p_desc, |
843 "Extract the spectral sharpness of an audio spectrum"); | 850 "Extract the spectral sharpness of an audio spectrum"); |
844 strcpy(author, ""); | 851 strcpy(author, ""); |
845 break; | 852 break; |
846 case XTRACT_SPECTRAL_SLOPE: | 853 case XTRACT_SPECTRAL_SLOPE: |
847 strcpy(name, "spectral_slope"); | 854 strcpy(name, "spectral_slope"); |
848 strcpy(p_name, "Spectral Slope"); | 855 strcpy(p_name, "Spectral Slope"); |
849 strcpy(desc, "Extract the spectral slope of a spectrum"); | 856 strcpy(desc, "Extract the spectral slope of a spectrum"); |
850 strcpy(p_desc, | 857 strcpy(p_desc, |
851 "Extract the spectral slope of an audio spectrum"); | 858 "Extract the spectral slope of an audio spectrum"); |
852 strcpy(author, ""); | 859 strcpy(author, ""); |
853 break; | 860 break; |
854 case XTRACT_HPS: | 861 case XTRACT_HPS: |
855 strcpy(name, "hps"); | 862 strcpy(name, "hps"); |
856 strcpy(p_name, "Harmonic Product Spectrum"); | 863 strcpy(p_name, "Harmonic Product Spectrum"); |
857 strcpy(desc, | 864 strcpy(desc, |
858 "Extract the harmonic product spectrum of a spectrum"); | 865 "Extract the harmonic product spectrum of a spectrum"); |
859 strcpy(p_desc, | 866 strcpy(p_desc, |
860 "Extract the harmonic product spectrum of an audio spectrum"); | 867 "Extract the harmonic product spectrum of an audio spectrum"); |
861 strcpy(author, ""); | 868 strcpy(author, ""); |
862 break; | 869 break; |
863 case XTRACT_FLUX: | 870 case XTRACT_FLUX: |
864 strcpy(name, "flux"); | 871 strcpy(name, "flux"); |
865 strcpy(p_name, "Spectral Flux"); | 872 strcpy(p_name, "Spectral Flux"); |
866 strcpy(desc, "Extract the spectral flux of a spectrum"); | 873 strcpy(desc, "Extract the spectral flux of a spectrum"); |
867 strcpy(p_desc, | 874 strcpy(p_desc, |
868 "Extract the spectral flux of an audio spectrum"); | 875 "Extract the spectral flux of an audio spectrum"); |
869 strcpy(author, ""); | 876 strcpy(author, ""); |
870 break; | 877 break; |
871 case XTRACT_LNORM: | 878 case XTRACT_LNORM: |
872 strcpy(name, "lnorm"); | 879 strcpy(name, "lnorm"); |
873 strcpy(p_name, "L-norm"); | 880 strcpy(p_name, "L-norm"); |
874 strcpy(desc, "Extract the L-norm of a vector"); | 881 strcpy(desc, "Extract the L-norm of a vector"); |
875 strcpy(p_desc, "Extract the L-norm of a vector"); | 882 strcpy(p_desc, "Extract the L-norm of a vector"); |
876 strcpy(author, ""); | 883 strcpy(author, ""); |
877 break; | 884 break; |
878 case XTRACT_ATTACK_TIME: | 885 case XTRACT_ATTACK_TIME: |
879 strcpy(name, "attack_time"); | 886 strcpy(name, "attack_time"); |
880 strcpy(p_name, "Attack Time"); | 887 strcpy(p_name, "Attack Time"); |
881 strcpy(desc, "Extract the attack time of a signal"); | 888 strcpy(desc, "Extract the attack time of a signal"); |
882 strcpy(p_desc, "Extract the attack time of an audio signal"); | 889 strcpy(p_desc, "Extract the attack time of an audio signal"); |
883 strcpy(author, ""); | 890 strcpy(author, ""); |
884 break; | 891 break; |
885 case XTRACT_DECAY_TIME: | 892 case XTRACT_DECAY_TIME: |
886 strcpy(name, "decay_time"); | 893 strcpy(name, "decay_time"); |
887 strcpy(p_name, "Decay Time"); | 894 strcpy(p_name, "Decay Time"); |
888 strcpy(desc, "Extract the decay time of a signal"); | 895 strcpy(desc, "Extract the decay time of a signal"); |
889 strcpy(p_desc, "Extract the decay time of an audio signal"); | 896 strcpy(p_desc, "Extract the decay time of an audio signal"); |
890 strcpy(author, ""); | 897 strcpy(author, ""); |
891 break; | 898 break; |
892 case XTRACT_DIFFERENCE_VECTOR: | 899 case XTRACT_DIFFERENCE_VECTOR: |
893 strcpy(name, "difference_vector"); | 900 strcpy(name, "difference_vector"); |
894 strcpy(p_name, "Difference vector"); | 901 strcpy(p_name, "Difference vector"); |
895 strcpy(desc, "Extract the difference between two vectors"); | 902 strcpy(desc, "Extract the difference between two vectors"); |
896 strcpy(p_desc, "Extract the difference between two vectors"); | 903 strcpy(p_desc, "Extract the difference between two vectors"); |
897 strcpy(author, ""); | 904 strcpy(author, ""); |
898 break; | 905 break; |
899 case XTRACT_AUTOCORRELATION_FFT: | 906 case XTRACT_AUTOCORRELATION_FFT: |
900 strcpy(name, "autocorrelation_fft"); | 907 strcpy(name, "autocorrelation_fft"); |
901 strcpy(p_name, "Autocorrelation (FFT method)"); | 908 strcpy(p_name, "Autocorrelation (FFT method)"); |
902 strcpy(desc, "Extract the autocorrelation of a signal (fft method)"); | 909 strcpy(desc, "Extract the autocorrelation of a signal (fft method)"); |
903 strcpy(p_desc, "Extract the autocorrelation of an audio signal (fft method)"); | 910 strcpy(p_desc, "Extract the autocorrelation of an audio signal (fft method)"); |
904 strcpy(author, ""); | 911 strcpy(author, ""); |
905 break; | 912 break; |
906 case XTRACT_DCT: | 913 case XTRACT_DCT: |
907 strcpy(name, "dct"); | 914 strcpy(name, "dct"); |
908 strcpy(p_name, "Discrete Cosine Transform"); | 915 strcpy(p_name, "Discrete Cosine Transform"); |
909 strcpy(desc, "Extract the DCT of a signal"); | 916 strcpy(desc, "Extract the DCT of a signal"); |
910 strcpy(p_desc, "Extract the DCT of an audio signal"); | 917 strcpy(p_desc, "Extract the DCT of an audio signal"); |
911 strcpy(author, ""); | 918 strcpy(author, ""); |
912 break; | 919 break; |
913 case XTRACT_AUTOCORRELATION: | 920 case XTRACT_AUTOCORRELATION: |
914 strcpy(name, "autocorrelation"); | 921 strcpy(name, "autocorrelation"); |
915 strcpy(p_name, "Autocorrelation"); | 922 strcpy(p_name, "Autocorrelation"); |
916 strcpy(desc, "Extract the autocorrelation of a signal"); | 923 strcpy(desc, "Extract the autocorrelation of a signal"); |
917 strcpy(p_desc, | 924 strcpy(p_desc, |
918 "Extract the autocorrelation of an audio signal"); | 925 "Extract the autocorrelation of an audio signal"); |
919 strcpy(author, ""); | 926 strcpy(author, ""); |
920 break; | 927 break; |
921 case XTRACT_AMDF: | 928 case XTRACT_AMDF: |
922 strcpy(name, "amdf"); | 929 strcpy(name, "amdf"); |
923 strcpy(p_name, "Average Magnitude Difference Function"); | 930 strcpy(p_name, "Average Magnitude Difference Function"); |
924 strcpy(desc, "Extract the AMDF of a signal"); | 931 strcpy(desc, "Extract the AMDF of a signal"); |
925 strcpy(p_desc, "Extract the AMDF of an audio signal"); | 932 strcpy(p_desc, "Extract the AMDF of an audio signal"); |
926 strcpy(author, ""); | 933 strcpy(author, ""); |
927 break; | 934 break; |
928 case XTRACT_ASDF: | 935 case XTRACT_ASDF: |
929 strcpy(name, "asdf"); | 936 strcpy(name, "asdf"); |
930 strcpy(p_name, "Average Squared Difference Function"); | 937 strcpy(p_name, "Average Squared Difference Function"); |
931 strcpy(desc, "Extract the ASDF of a signal"); | 938 strcpy(desc, "Extract the ASDF of a signal"); |
932 strcpy(p_desc, "Extract the ASDF of an audio signal"); | 939 strcpy(p_desc, "Extract the ASDF of an audio signal"); |
933 strcpy(author, ""); | 940 strcpy(author, ""); |
934 break; | 941 break; |
935 case XTRACT_NONZERO_COUNT: | 942 case XTRACT_NONZERO_COUNT: |
936 strcpy(name, "nonzero_count"); | 943 strcpy(name, "nonzero_count"); |
937 strcpy(p_name, "Non-zero count"); | 944 strcpy(p_name, "Non-zero count"); |
938 strcpy(desc, | 945 strcpy(desc, |
939 "Extract the number of non-zero elements in the input vector"); | 946 "Extract the number of non-zero elements in the input vector"); |
940 strcpy(p_desc, | 947 strcpy(p_desc, |
941 "Extract the number of non-zero elements in an input spectrum"); | 948 "Extract the number of non-zero elements in an input spectrum"); |
942 strcpy(author, ""); | 949 strcpy(author, ""); |
943 break; | 950 break; |
944 case XTRACT_WINDOWED: | 951 case XTRACT_WINDOWED: |
945 strcpy(name, "windowed"); | 952 strcpy(name, "windowed"); |
946 strcpy(p_name, "Windowed frame"); | 953 strcpy(p_name, "Windowed frame"); |
947 strcpy(desc, "Apply a window function to a frame of data"); | 954 strcpy(desc, "Apply a window function to a frame of data"); |
948 strcpy(p_desc, "Apply a window function to a frame of data"); | 955 strcpy(p_desc, "Apply a window function to a frame of data"); |
949 strcpy(author, ""); | 956 strcpy(author, ""); |
950 break; | 957 break; |
951 default: | 958 default: |
952 strcpy(name, ""); | 959 strcpy(name, ""); |
953 strcpy(p_name, ""); | 960 strcpy(p_name, ""); |
954 strcpy(desc, ""); | 961 strcpy(desc, ""); |
955 strcpy(p_desc, ""); | 962 strcpy(p_desc, ""); |
956 strcpy(author, ""); | 963 strcpy(author, ""); |
957 break; | 964 break; |
958 } | 965 } |
959 | 966 |
960 switch(f){ | 967 switch(f) |
961 | 968 { |
962 case XTRACT_VARIANCE: | 969 |
963 case XTRACT_STANDARD_DEVIATION: | 970 case XTRACT_VARIANCE: |
964 case XTRACT_AVERAGE_DEVIATION: | 971 case XTRACT_STANDARD_DEVIATION: |
965 case XTRACT_SPECTRAL_VARIANCE: | 972 case XTRACT_AVERAGE_DEVIATION: |
966 case XTRACT_SPECTRAL_STANDARD_DEVIATION: | 973 case XTRACT_SPECTRAL_VARIANCE: |
974 case XTRACT_SPECTRAL_STANDARD_DEVIATION: | |
967 /* case XTRACT_SPECTRAL_AVERAGE_DEVIATION: */ | 975 /* case XTRACT_SPECTRAL_AVERAGE_DEVIATION: */ |
968 case XTRACT_SPECTRAL_INHARMONICITY: | 976 case XTRACT_SPECTRAL_INHARMONICITY: |
969 case XTRACT_LOWEST_VALUE: | 977 case XTRACT_LOWEST_VALUE: |
970 case XTRACT_F0: | 978 case XTRACT_F0: |
971 case XTRACT_FAILSAFE_F0: | 979 case XTRACT_FAILSAFE_F0: |
972 case XTRACT_FLATNESS_DB: | 980 case XTRACT_FLATNESS_DB: |
973 case XTRACT_TONALITY: | 981 case XTRACT_TONALITY: |
974 *argc = 1; | 982 *argc = 1; |
975 *argv_type = XTRACT_FLOAT; | 983 *argv_type = XTRACT_FLOAT; |
976 break; | 984 break; |
977 case XTRACT_SKEWNESS: | 985 case XTRACT_SKEWNESS: |
978 case XTRACT_KURTOSIS: | 986 case XTRACT_KURTOSIS: |
979 case XTRACT_SPECTRAL_SKEWNESS: | 987 case XTRACT_SPECTRAL_SKEWNESS: |
980 case XTRACT_SPECTRAL_KURTOSIS: | 988 case XTRACT_SPECTRAL_KURTOSIS: |
981 case XTRACT_PEAK_SPECTRUM: | 989 case XTRACT_PEAK_SPECTRUM: |
982 case XTRACT_HARMONIC_SPECTRUM: | 990 case XTRACT_HARMONIC_SPECTRUM: |
983 case XTRACT_NOISINESS: | 991 case XTRACT_NOISINESS: |
984 case XTRACT_CREST: | 992 case XTRACT_CREST: |
985 case XTRACT_ROLLOFF: | 993 case XTRACT_ROLLOFF: |
986 case XTRACT_FLUX: | 994 case XTRACT_FLUX: |
987 case XTRACT_LNORM: | 995 case XTRACT_LNORM: |
988 *argc = 2; | 996 *argc = 2; |
989 *argv_type = XTRACT_FLOAT; | 997 *argv_type = XTRACT_FLOAT; |
990 break; | 998 break; |
991 case XTRACT_SPECTRUM: | 999 case XTRACT_SPECTRUM: |
992 *argc = 4; | 1000 *argc = 4; |
993 *argv_type = XTRACT_FLOAT; | 1001 *argv_type = XTRACT_FLOAT; |
994 break; | 1002 break; |
995 case XTRACT_SUBBANDS: | 1003 case XTRACT_SUBBANDS: |
996 *argc = 4; | 1004 *argc = 4; |
997 *argv_type = XTRACT_INT; | 1005 *argv_type = XTRACT_INT; |
998 break; | 1006 break; |
999 case XTRACT_MFCC: | 1007 case XTRACT_MFCC: |
1000 *argc = 1; | 1008 *argc = 1; |
1001 *argv_type = XTRACT_MEL_FILTER; | 1009 *argv_type = XTRACT_MEL_FILTER; |
1002 break; | 1010 break; |
1003 case XTRACT_LPCC: | 1011 case XTRACT_LPCC: |
1004 *argc = 1; | 1012 *argc = 1; |
1005 *argv_type = XTRACT_INT; | 1013 *argv_type = XTRACT_INT; |
1006 break; | 1014 break; |
1007 case XTRACT_BARK_COEFFICIENTS: | 1015 case XTRACT_BARK_COEFFICIENTS: |
1008 *argc = XTRACT_BARK_BANDS; | 1016 *argc = XTRACT_BARK_BANDS; |
1009 *argv_type = XTRACT_INT; | 1017 *argv_type = XTRACT_INT; |
1010 break; | 1018 break; |
1011 case XTRACT_WINDOWED: | 1019 case XTRACT_WINDOWED: |
1012 *argc = XTRACT_WINDOW_SIZE; | 1020 *argc = XTRACT_WINDOW_SIZE; |
1013 *argv_type = XTRACT_FLOAT; | 1021 *argv_type = XTRACT_FLOAT; |
1014 break; | 1022 break; |
1015 case XTRACT_MEAN: | 1023 case XTRACT_MEAN: |
1016 case XTRACT_SPECTRAL_MEAN: | 1024 case XTRACT_SPECTRAL_MEAN: |
1017 case XTRACT_SPECTRAL_CENTROID: | 1025 case XTRACT_SPECTRAL_CENTROID: |
1018 case XTRACT_IRREGULARITY_K: | 1026 case XTRACT_IRREGULARITY_K: |
1019 case XTRACT_IRREGULARITY_J: | 1027 case XTRACT_IRREGULARITY_J: |
1020 case XTRACT_TRISTIMULUS_1: | 1028 case XTRACT_TRISTIMULUS_1: |
1021 case XTRACT_TRISTIMULUS_2: | 1029 case XTRACT_TRISTIMULUS_2: |
1022 case XTRACT_TRISTIMULUS_3: | 1030 case XTRACT_TRISTIMULUS_3: |
1023 case XTRACT_SMOOTHNESS: | 1031 case XTRACT_SMOOTHNESS: |
1024 case XTRACT_FLATNESS: | 1032 case XTRACT_FLATNESS: |
1025 case XTRACT_SPREAD: | 1033 case XTRACT_SPREAD: |
1026 case XTRACT_ZCR: | 1034 case XTRACT_ZCR: |
1027 case XTRACT_LOUDNESS: | 1035 case XTRACT_LOUDNESS: |
1028 case XTRACT_HIGHEST_VALUE: | 1036 case XTRACT_HIGHEST_VALUE: |
1029 case XTRACT_SUM: | 1037 case XTRACT_SUM: |
1030 case XTRACT_RMS_AMPLITUDE: | 1038 case XTRACT_RMS_AMPLITUDE: |
1031 case XTRACT_POWER: | 1039 case XTRACT_POWER: |
1032 case XTRACT_SHARPNESS: | 1040 case XTRACT_SHARPNESS: |
1033 case XTRACT_SPECTRAL_SLOPE: | 1041 case XTRACT_SPECTRAL_SLOPE: |
1034 case XTRACT_HPS: | 1042 case XTRACT_HPS: |
1035 case XTRACT_ATTACK_TIME: | 1043 case XTRACT_ATTACK_TIME: |
1036 case XTRACT_DECAY_TIME: | 1044 case XTRACT_DECAY_TIME: |
1037 case XTRACT_DIFFERENCE_VECTOR: | 1045 case XTRACT_DIFFERENCE_VECTOR: |
1038 case XTRACT_AUTOCORRELATION_FFT: | 1046 case XTRACT_AUTOCORRELATION_FFT: |
1039 case XTRACT_DCT: | 1047 case XTRACT_DCT: |
1040 case XTRACT_AUTOCORRELATION: | 1048 case XTRACT_AUTOCORRELATION: |
1041 case XTRACT_AMDF: | 1049 case XTRACT_AMDF: |
1042 case XTRACT_ASDF: | 1050 case XTRACT_ASDF: |
1043 case XTRACT_NONZERO_COUNT: | 1051 case XTRACT_NONZERO_COUNT: |
1044 case XTRACT_ODD_EVEN_RATIO: | 1052 case XTRACT_ODD_EVEN_RATIO: |
1045 case XTRACT_LPC: | 1053 case XTRACT_LPC: |
1046 default: | 1054 default: |
1047 *argc = 0; | 1055 *argc = 0; |
1048 break; | 1056 break; |
1049 } | 1057 } |
1050 | 1058 |
1051 is_scalar = &d->is_scalar; | 1059 is_scalar = &d->is_scalar; |
1052 | 1060 |
1053 switch(f){ | 1061 switch(f) |
1062 { | |
1063 case XTRACT_MEAN: | |
1064 case XTRACT_VARIANCE: | |
1065 case XTRACT_STANDARD_DEVIATION: | |
1066 case XTRACT_AVERAGE_DEVIATION: | |
1067 case XTRACT_SKEWNESS: | |
1068 case XTRACT_KURTOSIS: | |
1069 case XTRACT_SPECTRAL_MEAN: | |
1070 case XTRACT_SPECTRAL_VARIANCE: | |
1071 case XTRACT_SPECTRAL_STANDARD_DEVIATION: | |
1072 /* case XTRACT_SPECTRAL_AVERAGE_DEVIATION: */ | |
1073 case XTRACT_SPECTRAL_SKEWNESS: | |
1074 case XTRACT_SPECTRAL_KURTOSIS: | |
1075 case XTRACT_SPECTRAL_CENTROID: | |
1076 case XTRACT_IRREGULARITY_K: | |
1077 case XTRACT_IRREGULARITY_J: | |
1078 case XTRACT_TRISTIMULUS_1: | |
1079 case XTRACT_TRISTIMULUS_2: | |
1080 case XTRACT_TRISTIMULUS_3: | |
1081 case XTRACT_SMOOTHNESS: | |
1082 case XTRACT_SPREAD: | |
1083 case XTRACT_ZCR: | |
1084 case XTRACT_ROLLOFF: | |
1085 case XTRACT_LOUDNESS: | |
1086 case XTRACT_FLATNESS: | |
1087 case XTRACT_FLATNESS_DB: | |
1088 case XTRACT_TONALITY: | |
1089 case XTRACT_CREST: | |
1090 case XTRACT_NOISINESS: | |
1091 case XTRACT_RMS_AMPLITUDE: | |
1092 case XTRACT_SPECTRAL_INHARMONICITY: | |
1093 case XTRACT_POWER: | |
1094 case XTRACT_ODD_EVEN_RATIO: | |
1095 case XTRACT_SHARPNESS: | |
1096 case XTRACT_SPECTRAL_SLOPE: | |
1097 case XTRACT_LOWEST_VALUE: | |
1098 case XTRACT_HIGHEST_VALUE: | |
1099 case XTRACT_SUM: | |
1100 case XTRACT_HPS: | |
1101 case XTRACT_F0: | |
1102 case XTRACT_FAILSAFE_F0: | |
1103 case XTRACT_FLUX: | |
1104 case XTRACT_LNORM: | |
1105 case XTRACT_NONZERO_COUNT: | |
1106 *is_scalar = XTRACT_TRUE; | |
1107 break; | |
1108 case XTRACT_AUTOCORRELATION: | |
1109 case XTRACT_AMDF: | |
1110 case XTRACT_ASDF: | |
1111 case XTRACT_BARK_COEFFICIENTS: | |
1112 case XTRACT_PEAK_SPECTRUM: | |
1113 case XTRACT_SPECTRUM: | |
1114 case XTRACT_SUBBANDS: | |
1115 case XTRACT_AUTOCORRELATION_FFT: | |
1116 case XTRACT_MFCC: | |
1117 case XTRACT_LPC: | |
1118 case XTRACT_LPCC: | |
1119 case XTRACT_DCT: | |
1120 case XTRACT_HARMONIC_SPECTRUM: | |
1121 case XTRACT_DIFFERENCE_VECTOR: | |
1122 case XTRACT_WINDOWED: | |
1123 *is_scalar = XTRACT_FALSE; | |
1124 break; | |
1125 default: | |
1126 *is_scalar = XTRACT_TRUE; | |
1127 break; | |
1128 | |
1129 } | |
1130 | |
1131 is_delta = &d->is_delta; | |
1132 | |
1133 switch(f) | |
1134 { | |
1135 case XTRACT_FLUX: | |
1136 case XTRACT_LNORM: | |
1137 case XTRACT_DIFFERENCE_VECTOR: | |
1138 *is_delta = XTRACT_TRUE; | |
1139 break; | |
1140 case XTRACT_MEAN: | |
1141 case XTRACT_VARIANCE: | |
1142 case XTRACT_STANDARD_DEVIATION: | |
1143 case XTRACT_AVERAGE_DEVIATION: | |
1144 case XTRACT_SKEWNESS: | |
1145 case XTRACT_KURTOSIS: | |
1146 case XTRACT_SPECTRAL_MEAN: | |
1147 case XTRACT_SPECTRAL_VARIANCE: | |
1148 case XTRACT_SPECTRAL_STANDARD_DEVIATION: | |
1149 /* case XTRACT_SPECTRAL_AVERAGE_DEVIATION: */ | |
1150 case XTRACT_SPECTRAL_SKEWNESS: | |
1151 case XTRACT_SPECTRAL_KURTOSIS: | |
1152 case XTRACT_SPECTRAL_CENTROID: | |
1153 case XTRACT_IRREGULARITY_K: | |
1154 case XTRACT_IRREGULARITY_J: | |
1155 case XTRACT_TRISTIMULUS_1: | |
1156 case XTRACT_TRISTIMULUS_2: | |
1157 case XTRACT_TRISTIMULUS_3: | |
1158 case XTRACT_SMOOTHNESS: | |
1159 case XTRACT_SPREAD: | |
1160 case XTRACT_ZCR: | |
1161 case XTRACT_ROLLOFF: | |
1162 case XTRACT_LOUDNESS: | |
1163 case XTRACT_FLATNESS: | |
1164 case XTRACT_FLATNESS_DB: | |
1165 case XTRACT_TONALITY: | |
1166 case XTRACT_CREST: | |
1167 case XTRACT_NOISINESS: | |
1168 case XTRACT_RMS_AMPLITUDE: | |
1169 case XTRACT_SPECTRAL_INHARMONICITY: | |
1170 case XTRACT_POWER: | |
1171 case XTRACT_ODD_EVEN_RATIO: | |
1172 case XTRACT_SHARPNESS: | |
1173 case XTRACT_SPECTRAL_SLOPE: | |
1174 case XTRACT_LOWEST_VALUE: | |
1175 case XTRACT_HIGHEST_VALUE: | |
1176 case XTRACT_SUM: | |
1177 case XTRACT_HPS: | |
1178 case XTRACT_F0: | |
1179 case XTRACT_FAILSAFE_F0: | |
1180 case XTRACT_NONZERO_COUNT: | |
1181 case XTRACT_AUTOCORRELATION: | |
1182 case XTRACT_AMDF: | |
1183 case XTRACT_ASDF: | |
1184 case XTRACT_BARK_COEFFICIENTS: | |
1185 case XTRACT_PEAK_SPECTRUM: | |
1186 case XTRACT_SPECTRUM: | |
1187 case XTRACT_SUBBANDS: | |
1188 case XTRACT_AUTOCORRELATION_FFT: | |
1189 case XTRACT_MFCC: | |
1190 case XTRACT_LPC: | |
1191 case XTRACT_LPCC: | |
1192 case XTRACT_DCT: | |
1193 case XTRACT_HARMONIC_SPECTRUM: | |
1194 case XTRACT_WINDOWED: | |
1195 default: | |
1196 *is_delta = XTRACT_FALSE; | |
1197 break; | |
1198 } | |
1199 | |
1200 if(*is_scalar) | |
1201 { | |
1202 | |
1203 result_unit = &d->result.scalar.unit; | |
1204 result_min = &d->result.scalar.min; | |
1205 result_max = &d->result.scalar.max; | |
1206 | |
1207 switch(f) | |
1208 { | |
1054 case XTRACT_MEAN: | 1209 case XTRACT_MEAN: |
1055 case XTRACT_VARIANCE: | 1210 case XTRACT_VARIANCE: |
1056 case XTRACT_STANDARD_DEVIATION: | 1211 case XTRACT_STANDARD_DEVIATION: |
1057 case XTRACT_AVERAGE_DEVIATION: | 1212 case XTRACT_AVERAGE_DEVIATION: |
1058 case XTRACT_SKEWNESS: | 1213 case XTRACT_SKEWNESS: |
1059 case XTRACT_KURTOSIS: | 1214 case XTRACT_KURTOSIS: |
1060 case XTRACT_SPECTRAL_MEAN: | 1215 case XTRACT_RMS_AMPLITUDE: |
1061 case XTRACT_SPECTRAL_VARIANCE: | 1216 case XTRACT_LOWEST_VALUE: |
1062 case XTRACT_SPECTRAL_STANDARD_DEVIATION: | 1217 case XTRACT_HIGHEST_VALUE: |
1063 /* case XTRACT_SPECTRAL_AVERAGE_DEVIATION: */ | 1218 case XTRACT_SUM: |
1219 case XTRACT_FLUX: | |
1220 case XTRACT_LNORM: | |
1221 case XTRACT_NONZERO_COUNT: | |
1222 case XTRACT_WINDOWED: | |
1223 *result_unit = XTRACT_ANY; | |
1224 *result_min = XTRACT_ANY; | |
1225 *result_max = XTRACT_ANY; | |
1226 break; | |
1064 case XTRACT_SPECTRAL_SKEWNESS: | 1227 case XTRACT_SPECTRAL_SKEWNESS: |
1065 case XTRACT_SPECTRAL_KURTOSIS: | 1228 case XTRACT_SPECTRAL_KURTOSIS: |
1066 case XTRACT_SPECTRAL_CENTROID: | |
1067 case XTRACT_IRREGULARITY_K: | 1229 case XTRACT_IRREGULARITY_K: |
1068 case XTRACT_IRREGULARITY_J: | 1230 case XTRACT_IRREGULARITY_J: |
1069 case XTRACT_TRISTIMULUS_1: | 1231 case XTRACT_TRISTIMULUS_1: |
1070 case XTRACT_TRISTIMULUS_2: | 1232 case XTRACT_TRISTIMULUS_2: |
1071 case XTRACT_TRISTIMULUS_3: | 1233 case XTRACT_TRISTIMULUS_3: |
1234 case XTRACT_NOISINESS: | |
1072 case XTRACT_SMOOTHNESS: | 1235 case XTRACT_SMOOTHNESS: |
1073 case XTRACT_SPREAD: | 1236 *result_unit = XTRACT_NONE; |
1074 case XTRACT_ZCR: | 1237 *result_min = XTRACT_ANY; /* FIX: need to check these */ |
1075 case XTRACT_ROLLOFF: | 1238 *result_max = XTRACT_ANY; |
1076 case XTRACT_LOUDNESS: | 1239 break; |
1077 case XTRACT_FLATNESS: | |
1078 case XTRACT_FLATNESS_DB: | |
1079 case XTRACT_TONALITY: | |
1080 case XTRACT_CREST: | |
1081 case XTRACT_NOISINESS: | |
1082 case XTRACT_RMS_AMPLITUDE: | |
1083 case XTRACT_SPECTRAL_INHARMONICITY: | |
1084 case XTRACT_POWER: | |
1085 case XTRACT_ODD_EVEN_RATIO: | |
1086 case XTRACT_SHARPNESS: | |
1087 case XTRACT_SPECTRAL_SLOPE: | |
1088 case XTRACT_LOWEST_VALUE: | |
1089 case XTRACT_HIGHEST_VALUE: | |
1090 case XTRACT_SUM: | |
1091 case XTRACT_HPS: | |
1092 case XTRACT_F0: | |
1093 case XTRACT_FAILSAFE_F0: | |
1094 case XTRACT_FLUX: | |
1095 case XTRACT_LNORM: | |
1096 case XTRACT_NONZERO_COUNT: | |
1097 *is_scalar = XTRACT_TRUE; | |
1098 break; | |
1099 case XTRACT_AUTOCORRELATION: | |
1100 case XTRACT_AMDF: | |
1101 case XTRACT_ASDF: | |
1102 case XTRACT_BARK_COEFFICIENTS: | |
1103 case XTRACT_PEAK_SPECTRUM: | |
1104 case XTRACT_SPECTRUM: | |
1105 case XTRACT_SUBBANDS: | |
1106 case XTRACT_AUTOCORRELATION_FFT: | |
1107 case XTRACT_MFCC: | |
1108 case XTRACT_LPC: | |
1109 case XTRACT_LPCC: | |
1110 case XTRACT_DCT: | |
1111 case XTRACT_HARMONIC_SPECTRUM: | |
1112 case XTRACT_DIFFERENCE_VECTOR: | |
1113 case XTRACT_WINDOWED: | |
1114 *is_scalar = XTRACT_FALSE; | |
1115 break; | |
1116 default: | |
1117 *is_scalar = XTRACT_TRUE; | |
1118 break; | |
1119 | |
1120 } | |
1121 | |
1122 is_delta = &d->is_delta; | |
1123 | |
1124 switch(f){ | |
1125 case XTRACT_FLUX: | |
1126 case XTRACT_LNORM: | |
1127 case XTRACT_DIFFERENCE_VECTOR: | |
1128 *is_delta = XTRACT_TRUE; | |
1129 break; | |
1130 case XTRACT_MEAN: | |
1131 case XTRACT_VARIANCE: | |
1132 case XTRACT_STANDARD_DEVIATION: | |
1133 case XTRACT_AVERAGE_DEVIATION: | |
1134 case XTRACT_SKEWNESS: | |
1135 case XTRACT_KURTOSIS: | |
1136 case XTRACT_SPECTRAL_MEAN: | 1240 case XTRACT_SPECTRAL_MEAN: |
1137 case XTRACT_SPECTRAL_VARIANCE: | 1241 case XTRACT_SPECTRAL_VARIANCE: |
1138 case XTRACT_SPECTRAL_STANDARD_DEVIATION: | 1242 case XTRACT_SPECTRAL_STANDARD_DEVIATION: |
1139 /* case XTRACT_SPECTRAL_AVERAGE_DEVIATION: */ | 1243 /* case XTRACT_SPECTRAL_AVERAGE_DEVIATION: */ |
1140 case XTRACT_SPECTRAL_SKEWNESS: | |
1141 case XTRACT_SPECTRAL_KURTOSIS: | |
1142 case XTRACT_SPECTRAL_CENTROID: | 1244 case XTRACT_SPECTRAL_CENTROID: |
1143 case XTRACT_IRREGULARITY_K: | |
1144 case XTRACT_IRREGULARITY_J: | |
1145 case XTRACT_TRISTIMULUS_1: | |
1146 case XTRACT_TRISTIMULUS_2: | |
1147 case XTRACT_TRISTIMULUS_3: | |
1148 case XTRACT_SMOOTHNESS: | |
1149 case XTRACT_SPREAD: | 1245 case XTRACT_SPREAD: |
1246 case XTRACT_F0: | |
1247 case XTRACT_FAILSAFE_F0: | |
1248 case XTRACT_HPS: | |
1249 case XTRACT_ROLLOFF: | |
1250 *result_unit = XTRACT_HERTZ; | |
1251 *result_min = 0.f; | |
1252 *result_max = XTRACT_SR_UPPER_LIMIT / 2; | |
1253 break; | |
1150 case XTRACT_ZCR: | 1254 case XTRACT_ZCR: |
1151 case XTRACT_ROLLOFF: | 1255 *result_unit = XTRACT_HERTZ; |
1256 *result_min = 0.f; | |
1257 *result_max = XTRACT_ANY; | |
1258 break; | |
1259 case XTRACT_ODD_EVEN_RATIO: | |
1260 *result_unit = XTRACT_NONE; | |
1261 *result_min = 0.f; | |
1262 *result_max = 1.f; | |
1263 break; | |
1264 case XTRACT_FLATNESS_DB: | |
1265 *result_unit = XTRACT_DBFS; | |
1266 *result_min = XTRACT_ANY; /* FIX: check this */ | |
1267 *result_max = XTRACT_ANY; | |
1268 break; | |
1152 case XTRACT_LOUDNESS: | 1269 case XTRACT_LOUDNESS: |
1153 case XTRACT_FLATNESS: | 1270 case XTRACT_FLATNESS: |
1154 case XTRACT_FLATNESS_DB: | |
1155 case XTRACT_TONALITY: | 1271 case XTRACT_TONALITY: |
1156 case XTRACT_CREST: | 1272 case XTRACT_CREST: |
1157 case XTRACT_NOISINESS: | |
1158 case XTRACT_RMS_AMPLITUDE: | |
1159 case XTRACT_SPECTRAL_INHARMONICITY: | 1273 case XTRACT_SPECTRAL_INHARMONICITY: |
1160 case XTRACT_POWER: | 1274 case XTRACT_POWER: |
1161 case XTRACT_ODD_EVEN_RATIO: | |
1162 case XTRACT_SHARPNESS: | 1275 case XTRACT_SHARPNESS: |
1163 case XTRACT_SPECTRAL_SLOPE: | 1276 case XTRACT_SPECTRAL_SLOPE: |
1164 case XTRACT_LOWEST_VALUE: | |
1165 case XTRACT_HIGHEST_VALUE: | |
1166 case XTRACT_SUM: | |
1167 case XTRACT_HPS: | |
1168 case XTRACT_F0: | |
1169 case XTRACT_FAILSAFE_F0: | |
1170 case XTRACT_NONZERO_COUNT: | |
1171 case XTRACT_AUTOCORRELATION: | |
1172 case XTRACT_AMDF: | |
1173 case XTRACT_ASDF: | |
1174 case XTRACT_BARK_COEFFICIENTS: | |
1175 case XTRACT_PEAK_SPECTRUM: | |
1176 case XTRACT_SPECTRUM: | |
1177 case XTRACT_SUBBANDS: | |
1178 case XTRACT_AUTOCORRELATION_FFT: | |
1179 case XTRACT_MFCC: | |
1180 case XTRACT_LPC: | 1277 case XTRACT_LPC: |
1181 case XTRACT_LPCC: | 1278 case XTRACT_LPCC: |
1182 case XTRACT_DCT: | |
1183 case XTRACT_HARMONIC_SPECTRUM: | |
1184 case XTRACT_WINDOWED: | |
1185 default: | 1279 default: |
1186 *is_delta = XTRACT_FALSE; | 1280 *result_unit = XTRACT_UNKNOWN; |
1187 break; | 1281 *result_min = XTRACT_UNKNOWN; |
1188 } | 1282 *result_max = XTRACT_UNKNOWN; |
1189 | 1283 break; |
1190 if(*is_scalar){ | |
1191 | |
1192 result_unit = &d->result.scalar.unit; | |
1193 result_min = &d->result.scalar.min; | |
1194 result_max = &d->result.scalar.max; | |
1195 | |
1196 switch(f){ | |
1197 case XTRACT_MEAN: | |
1198 case XTRACT_VARIANCE: | |
1199 case XTRACT_STANDARD_DEVIATION: | |
1200 case XTRACT_AVERAGE_DEVIATION: | |
1201 case XTRACT_SKEWNESS: | |
1202 case XTRACT_KURTOSIS: | |
1203 case XTRACT_RMS_AMPLITUDE: | |
1204 case XTRACT_LOWEST_VALUE: | |
1205 case XTRACT_HIGHEST_VALUE: | |
1206 case XTRACT_SUM: | |
1207 case XTRACT_FLUX: | |
1208 case XTRACT_LNORM: | |
1209 case XTRACT_NONZERO_COUNT: | |
1210 case XTRACT_WINDOWED: | |
1211 *result_unit = XTRACT_ANY; | |
1212 *result_min = XTRACT_ANY; | |
1213 *result_max = XTRACT_ANY; | |
1214 break; | |
1215 case XTRACT_SPECTRAL_SKEWNESS: | |
1216 case XTRACT_SPECTRAL_KURTOSIS: | |
1217 case XTRACT_IRREGULARITY_K: | |
1218 case XTRACT_IRREGULARITY_J: | |
1219 case XTRACT_TRISTIMULUS_1: | |
1220 case XTRACT_TRISTIMULUS_2: | |
1221 case XTRACT_TRISTIMULUS_3: | |
1222 case XTRACT_NOISINESS: | |
1223 case XTRACT_SMOOTHNESS: | |
1224 *result_unit = XTRACT_NONE; | |
1225 *result_min = XTRACT_ANY; /* FIX: need to check these */ | |
1226 *result_max = XTRACT_ANY; | |
1227 break; | |
1228 case XTRACT_SPECTRAL_MEAN: | |
1229 case XTRACT_SPECTRAL_VARIANCE: | |
1230 case XTRACT_SPECTRAL_STANDARD_DEVIATION: | |
1231 /* case XTRACT_SPECTRAL_AVERAGE_DEVIATION: */ | |
1232 case XTRACT_SPECTRAL_CENTROID: | |
1233 case XTRACT_SPREAD: | |
1234 case XTRACT_F0: | |
1235 case XTRACT_FAILSAFE_F0: | |
1236 case XTRACT_HPS: | |
1237 case XTRACT_ROLLOFF: | |
1238 *result_unit = XTRACT_HERTZ; | |
1239 *result_min = 0.f; | |
1240 *result_max = XTRACT_SR_UPPER_LIMIT / 2; | |
1241 break; | |
1242 case XTRACT_ZCR: | |
1243 *result_unit = XTRACT_HERTZ; | |
1244 *result_min = 0.f; | |
1245 *result_max = XTRACT_ANY; | |
1246 break; | |
1247 case XTRACT_ODD_EVEN_RATIO: | |
1248 *result_unit = XTRACT_NONE; | |
1249 *result_min = 0.f; | |
1250 *result_max = 1.f; | |
1251 break; | |
1252 case XTRACT_FLATNESS_DB: | |
1253 *result_unit = XTRACT_DBFS; | |
1254 *result_min = XTRACT_ANY; /* FIX: check this */ | |
1255 *result_max = XTRACT_ANY; | |
1256 break; | |
1257 case XTRACT_LOUDNESS: | |
1258 case XTRACT_FLATNESS: | |
1259 case XTRACT_TONALITY: | |
1260 case XTRACT_CREST: | |
1261 case XTRACT_SPECTRAL_INHARMONICITY: | |
1262 case XTRACT_POWER: | |
1263 case XTRACT_SHARPNESS: | |
1264 case XTRACT_SPECTRAL_SLOPE: | |
1265 case XTRACT_LPC: | |
1266 case XTRACT_LPCC: | |
1267 default: | |
1268 *result_unit = XTRACT_UNKNOWN; | |
1269 *result_min = XTRACT_UNKNOWN; | |
1270 *result_max = XTRACT_UNKNOWN; | |
1271 break; | |
1272 } | 1284 } |
1273 } | 1285 } |
1274 else { | 1286 else |
1287 { | |
1275 | 1288 |
1276 result_min = NULL; | 1289 result_min = NULL; |
1277 result_max = NULL; | 1290 result_max = NULL; |
1278 result_unit = &d->result.vector.unit; | 1291 result_unit = &d->result.vector.unit; |
1279 result_format = &d->result.vector.format; | 1292 result_format = &d->result.vector.format; |
1280 | 1293 |
1281 switch(f) { | 1294 switch(f) |
1282 case XTRACT_AUTOCORRELATION: | 1295 { |
1283 case XTRACT_AMDF: | 1296 case XTRACT_AUTOCORRELATION: |
1284 case XTRACT_ASDF: | 1297 case XTRACT_AMDF: |
1285 case XTRACT_DCT: | 1298 case XTRACT_ASDF: |
1286 case XTRACT_SUBBANDS: | 1299 case XTRACT_DCT: |
1287 case XTRACT_WINDOWED: | 1300 case XTRACT_SUBBANDS: |
1288 *result_format = XTRACT_ARBITRARY_SERIES; | 1301 case XTRACT_WINDOWED: |
1289 *result_unit = XTRACT_ANY; | 1302 *result_format = XTRACT_ARBITRARY_SERIES; |
1290 break; | 1303 *result_unit = XTRACT_ANY; |
1291 case XTRACT_BARK_COEFFICIENTS: | 1304 break; |
1292 *result_format = XTRACT_BARK_COEFFS; | 1305 case XTRACT_BARK_COEFFICIENTS: |
1293 *result_unit = XTRACT_UNKNOWN; /* FIX: check */ | 1306 *result_format = XTRACT_BARK_COEFFS; |
1294 break; | 1307 *result_unit = XTRACT_UNKNOWN; /* FIX: check */ |
1295 case XTRACT_PEAK_SPECTRUM: | 1308 break; |
1296 case XTRACT_SPECTRUM: | 1309 case XTRACT_PEAK_SPECTRUM: |
1297 case XTRACT_HARMONIC_SPECTRUM: | 1310 case XTRACT_SPECTRUM: |
1298 *result_format = XTRACT_SPECTRAL; | 1311 case XTRACT_HARMONIC_SPECTRUM: |
1299 *result_unit = XTRACT_ANY_AMPLITUDE_HERTZ; | 1312 *result_format = XTRACT_SPECTRAL; |
1300 break; | 1313 *result_unit = XTRACT_ANY_AMPLITUDE_HERTZ; |
1301 case XTRACT_AUTOCORRELATION_FFT: | 1314 break; |
1302 break; | 1315 case XTRACT_AUTOCORRELATION_FFT: |
1303 case XTRACT_MFCC: | 1316 break; |
1304 *result_format = XTRACT_MEL_COEFFS; | 1317 case XTRACT_MFCC: |
1305 *result_unit = XTRACT_UNKNOWN; /* FIX: check */ | 1318 *result_format = XTRACT_MEL_COEFFS; |
1306 break; | 1319 *result_unit = XTRACT_UNKNOWN; /* FIX: check */ |
1307 case XTRACT_LPC: | 1320 break; |
1308 *result_format = XTRACT_LPC_COEFFS; | 1321 case XTRACT_LPC: |
1309 *result_unit = XTRACT_UNKNOWN; | 1322 *result_format = XTRACT_LPC_COEFFS; |
1310 break; | 1323 *result_unit = XTRACT_UNKNOWN; |
1311 case XTRACT_LPCC: | 1324 break; |
1312 *result_format = XTRACT_LPCC_COEFFS; | 1325 case XTRACT_LPCC: |
1313 *result_unit = XTRACT_UNKNOWN; | 1326 *result_format = XTRACT_LPCC_COEFFS; |
1314 break; | 1327 *result_unit = XTRACT_UNKNOWN; |
1315 default: | 1328 break; |
1316 break; | 1329 default: |
1330 break; | |
1317 } | 1331 } |
1318 } | 1332 } |
1319 } | 1333 } |
1320 | 1334 |
1321 return fd; | 1335 return fd; |
1322 } | 1336 } |
1323 | 1337 |
1324 int xtract_free_descriptors(xtract_function_descriptor_t *fd){ | 1338 int xtract_free_descriptors(xtract_function_descriptor_t *fd) |
1325 | 1339 { |
1326 if (fd != NULL) { | 1340 |
1341 if (fd != NULL) | |
1342 { | |
1327 free(fd); | 1343 free(fd); |
1328 } | 1344 } |
1329 | 1345 |
1330 return XTRACT_SUCCESS; | 1346 return XTRACT_SUCCESS; |
1331 } | 1347 } |