jamie@50
|
1 /* libxtract feature extraction library
|
jamie@50
|
2 *
|
jamie@50
|
3 * Copyright (C) 2006 Jamie Bullock
|
jamie@50
|
4 *
|
jamie@50
|
5 * This program is free software; you can redistribute it and/or modify
|
jamie@50
|
6 * it under the terms of the GNU General Public License as published by
|
jamie@50
|
7 * the Free Software Foundation; either version 2 of the License, or
|
jamie@50
|
8 * (at your option) any later version.
|
jamie@50
|
9 *
|
jamie@50
|
10 * This program is distributed in the hope that it will be useful,
|
jamie@50
|
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
jamie@50
|
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
jamie@50
|
13 * GNU General Public License for more details.
|
jamie@50
|
14 *
|
jamie@50
|
15 * You should have received a copy of the GNU General Public License
|
jamie@50
|
16 * along with this program; if not, write to the Free Software
|
jamie@50
|
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
jamie@50
|
18 * USA.
|
jamie@50
|
19 */
|
jamie@50
|
20
|
jamie@50
|
21 #include "xtract/libxtract.h"
|
jamie@50
|
22 #include <stdlib.h>
|
jamie@50
|
23 #include <string.h>
|
jamie@50
|
24 #define XTRACT
|
jamie@50
|
25
|
jamie@50
|
26 void *xtract_make_descriptors(){
|
jamie@50
|
27
|
jamie@50
|
28 t_function_descriptor *fd, *d;
|
jamie@51
|
29 t_type *type;
|
jamie@50
|
30 int f , F;
|
jamie@51
|
31 char *name, *p_name, *desc, *p_desc, *author;
|
jamie@51
|
32 int *argc, *year;
|
jamie@50
|
33
|
jamie@50
|
34 f = F = XTRACT_FEATURES;
|
jamie@50
|
35
|
jamie@50
|
36 fd = malloc(XTRACT_FEATURES * sizeof(t_function_descriptor));
|
jamie@50
|
37
|
jamie@51
|
38
|
jamie@50
|
39 while(f--){
|
jamie@51
|
40
|
jamie@50
|
41 d = &fd[f];
|
jamie@51
|
42 argc = &d->argc;
|
jamie@51
|
43 type = &d->argv.type;
|
jamie@51
|
44
|
jamie@50
|
45 switch(f){
|
jamie@50
|
46 case MEAN:
|
jamie@50
|
47 case VARIANCE:
|
jamie@50
|
48 case STANDARD_DEVIATION:
|
jamie@50
|
49 case AVERAGE_DEVIATION:
|
jamie@50
|
50 case ROLLOFF:
|
jamie@50
|
51 case INHARMONICITY:
|
jamie@50
|
52 case MAGNITUDE_SPECTRUM:
|
jamie@50
|
53 case ODD_EVEN_RATIO:
|
jamie@50
|
54 case LOWEST_VALUE:
|
jamie@50
|
55 case F0:
|
jamie@50
|
56 case FAILSAFE_F0:
|
jamie@50
|
57 case TONALITY:
|
jamie@51
|
58 *argc = 1;
|
jamie@50
|
59 d->argv.type = FLOAT;
|
jamie@50
|
60 break;
|
jamie@50
|
61 case SKEWNESS:
|
jamie@50
|
62 case KURTOSIS:
|
jamie@50
|
63 case PEAKS:
|
jamie@50
|
64 case HARMONICS:
|
jamie@50
|
65 case NOISINESS:
|
jamie@50
|
66 case CREST:
|
jamie@51
|
67 *argc = 2;
|
jamie@50
|
68 d->argv.type = FLOAT;
|
jamie@50
|
69 break;
|
jamie@50
|
70 case MFCC:
|
jamie@51
|
71 *argc = 1;
|
jamie@50
|
72 d->argv.type = MEL_FILTER;
|
jamie@50
|
73 break;
|
jamie@50
|
74 case BARK_COEFFICIENTS:
|
jamie@51
|
75 *argc = BARK_BANDS;
|
jamie@50
|
76 d->argv.type = INT;
|
jamie@50
|
77 break;
|
jamie@50
|
78 case CENTROID:
|
jamie@50
|
79 case IRREGULARITY_K:
|
jamie@50
|
80 case IRREGULARITY_J:
|
jamie@50
|
81 case TRISTIMULUS_1:
|
jamie@50
|
82 case TRISTIMULUS_2:
|
jamie@50
|
83 case TRISTIMULUS_3:
|
jamie@50
|
84 case SMOOTHNESS:
|
jamie@50
|
85 case FLATNESS:
|
jamie@50
|
86 case SPREAD:
|
jamie@50
|
87 case ZCR:
|
jamie@50
|
88 case LOUDNESS:
|
jamie@50
|
89 case HIGHEST_VALUE:
|
jamie@50
|
90 case SUM:
|
jamie@50
|
91 case RMS_AMPLITUDE:
|
jamie@50
|
92 case POWER:
|
jamie@50
|
93 case SHARPNESS:
|
jamie@50
|
94 case SLOPE:
|
jamie@50
|
95 case HPS:
|
jamie@50
|
96 case FLUX:
|
jamie@50
|
97 case ATTACK_TIME:
|
jamie@50
|
98 case DECAY_TIME:
|
jamie@50
|
99 case DELTA_FEATURE:
|
jamie@50
|
100 case AUTOCORRELATION_FFT:
|
jamie@50
|
101 case DCT:
|
jamie@50
|
102 case AUTOCORRELATION:
|
jamie@50
|
103 case AMDF:
|
jamie@50
|
104 case ASDF:
|
jamie@51
|
105 *argc = 0;
|
jamie@50
|
106 break;
|
jamie@50
|
107 default:
|
jamie@51
|
108 *argc = 0;
|
jamie@50
|
109 break;
|
jamie@50
|
110 }
|
jamie@51
|
111
|
jamie@50
|
112 name = d->algo.name;
|
jamie@51
|
113 p_name = d->algo.p_name;
|
jamie@51
|
114 desc = d->algo.desc;
|
jamie@51
|
115 p_desc = d->algo.p_desc;
|
jamie@51
|
116 author = d->algo.author;
|
jamie@51
|
117 year = &d->algo.year;
|
jamie@51
|
118
|
jamie@51
|
119 *year = 0;
|
jamie@51
|
120
|
jamie@50
|
121 switch(f){
|
jamie@50
|
122 case MEAN:
|
jamie@50
|
123 strcpy(name, "mean");
|
jamie@51
|
124 strcpy(p_name, "Spectral Mean");
|
jamie@51
|
125 strcpy(desc, "Extract the mean of an input vector");
|
jamie@51
|
126 strcpy(p_desc, "Extract the mean of a audio spectrum");
|
jamie@51
|
127 strcpy(author, "");
|
jamie@50
|
128 break;
|
jamie@50
|
129 case VARIANCE:
|
jamie@50
|
130 strcpy(name, "variance");
|
jamie@51
|
131 strcpy(p_name, "Variance");
|
jamie@51
|
132 strcpy(desc, "Extract the variance of an input vector");
|
jamie@51
|
133 strcpy(p_desc, "Extract the variance of an audio spectrum");
|
jamie@51
|
134 strcpy(author, "");
|
jamie@50
|
135 break;
|
jamie@50
|
136 case STANDARD_DEVIATION:
|
jamie@50
|
137 strcpy(name, "standard_deviation");
|
jamie@51
|
138 strcpy(p_name, "Standard Deviation");
|
jamie@51
|
139 strcpy(desc, "Extract the standard deviation of an input \
|
jamie@51
|
140 vector");
|
jamie@51
|
141 strcpy(p_desc, "Extract the standard deviation of an audio \
|
jamie@51
|
142 spectrum");
|
jamie@51
|
143 strcpy(author, "");
|
jamie@50
|
144 break;
|
jamie@50
|
145 case AVERAGE_DEVIATION:
|
jamie@50
|
146 strcpy(name, "average_deviation");
|
jamie@51
|
147 strcpy(p_name, "Average Deviation");
|
jamie@51
|
148 strcpy(desc, "Extract the average deviation of an input vector");
|
jamie@51
|
149 strcpy(p_desc, "Extract the average deviation of an audio \
|
jamie@51
|
150 spectrum");
|
jamie@51
|
151 strcpy(author, "");
|
jamie@50
|
152 break;
|
jamie@50
|
153 case ROLLOFF:
|
jamie@50
|
154 strcpy(name, "rolloff");
|
jamie@51
|
155 strcpy(p_name, "Spectral Rolloff");
|
jamie@51
|
156 strcpy(desc, "Extract the rolloff point of a spectrum");
|
jamie@51
|
157 strcpy(p_desc, "Extract the rolloff point of an audio \
|
jamie@51
|
158 spectrum");
|
jamie@51
|
159 strcpy(author, "");
|
jamie@50
|
160 break;
|
jamie@50
|
161 case INHARMONICITY:
|
jamie@50
|
162 strcpy(name, "inharmonicity");
|
jamie@51
|
163 strcpy(p_name, "Inharmonicity");
|
jamie@51
|
164 strcpy(desc, "Extract the inharmonicity of a spectrum");
|
jamie@51
|
165 strcpy(p_desc, "Extract the inharmonicity of an audio \
|
jamie@51
|
166 spectrum");
|
jamie@51
|
167 strcpy(author, "");
|
jamie@50
|
168 break;
|
jamie@50
|
169 case MAGNITUDE_SPECTRUM:
|
jamie@50
|
170 strcpy(name, "magnitude_spectrum");
|
jamie@51
|
171 strcpy(p_name, "Magnitude Spectrum");
|
jamie@51
|
172 strcpy(desc, "Extract the magnitude spectrum of an input \
|
jamie@51
|
173 vector");
|
jamie@51
|
174 strcpy(p_desc, "Extract the magnitude spectrum of an \
|
jamie@51
|
175 audio signal");
|
jamie@51
|
176 strcpy(author, "");
|
jamie@50
|
177 break;
|
jamie@50
|
178 case ODD_EVEN_RATIO:
|
jamie@50
|
179 strcpy(name, "odd_even_ratio");
|
jamie@51
|
180 strcpy(p_name, "Odd/Even Harmonic Ratio");
|
jamie@51
|
181 strcpy(desc, "Extract the odd-to-even harmonic ratio of a \
|
jamie@51
|
182 spectrum");
|
jamie@51
|
183 strcpy(p_desc, "Extract the odd-to-even harmonic ratio of an \
|
jamie@51
|
184 audio spectrum");
|
jamie@51
|
185 strcpy(author, "");
|
jamie@50
|
186 break;
|
jamie@50
|
187 case LOWEST_VALUE:
|
jamie@50
|
188 strcpy(name, "lowest_value");
|
jamie@51
|
189 strcpy(p_name, "Lowest Value");
|
jamie@51
|
190 strcpy(desc, "Extract the lowest value from an input vector");
|
jamie@51
|
191 strcpy(p_desc, "Extract the lowest value from a given range");
|
jamie@51
|
192 strcpy(author, "");
|
jamie@50
|
193 break;
|
jamie@50
|
194 case F0:
|
jamie@50
|
195 strcpy(name, "f0");
|
jamie@51
|
196 strcpy(p_name, "Fundamental Frequency");
|
jamie@51
|
197 strcpy(desc, "Extract the fundamental frequency of a signal");
|
jamie@51
|
198 strcpy(p_desc, "Extract the fundamental frequency of an audio \
|
jamie@51
|
199 signal");
|
jamie@51
|
200 strcpy(author, "");
|
jamie@50
|
201 break;
|
jamie@50
|
202 case FAILSAFE_F0:
|
jamie@50
|
203 strcpy(name, "failsafe_f0");
|
jamie@51
|
204 strcpy(p_name, "Fundamental Frequency (failsafe)");
|
jamie@51
|
205 strcpy(desc, "Extract the fundamental frequency of a signal");
|
jamie@51
|
206 strcpy(p_desc, "Extract the fundamental frequency of an audio \
|
jamie@51
|
207 signal");
|
jamie@51
|
208 strcpy(author, "");
|
jamie@50
|
209 break;
|
jamie@50
|
210 case TONALITY:
|
jamie@50
|
211 strcpy(name, "tonality");
|
jamie@51
|
212 strcpy(p_name, "Tonality");
|
jamie@51
|
213 strcpy(desc, "Extract the tonality of a spectrum");
|
jamie@51
|
214 strcpy(p_desc, "Extract the tonality an audio spectrum");
|
jamie@51
|
215 strcpy(author, "");
|
jamie@50
|
216 break;
|
jamie@50
|
217 case SKEWNESS:
|
jamie@50
|
218 strcpy(name, "skewness");
|
jamie@51
|
219 strcpy(p_name, "Spectral Skewness");
|
jamie@51
|
220 strcpy(desc, "Extract the skewness of an input vector");
|
jamie@51
|
221 strcpy(p_desc, "Extract the skewness of an audio spectrum");
|
jamie@51
|
222 strcpy(author, "");
|
jamie@50
|
223 break;
|
jamie@50
|
224 case KURTOSIS:
|
jamie@50
|
225 strcpy(name, "kurtosis");
|
jamie@51
|
226 strcpy(p_name, "Spectral Kurtosis");
|
jamie@51
|
227 strcpy(desc, "Extract the kurtosis of an input vector");
|
jamie@51
|
228 strcpy(p_desc, "Extract the kurtosis of an audio spectrum");
|
jamie@51
|
229 strcpy(author, "");
|
jamie@50
|
230 break;
|
jamie@50
|
231 case PEAKS:
|
jamie@50
|
232 strcpy(name, "peaks");
|
jamie@51
|
233 strcpy(p_name, "Spectral Peaks");
|
jamie@51
|
234 strcpy(desc, "Extract the spectral peaks from of a spectrum");
|
jamie@51
|
235 strcpy(p_desc, "Extract the spectral peaks from an audio \
|
jamie@51
|
236 spectrum");
|
jamie@51
|
237 strcpy(author, "");
|
jamie@50
|
238 break;
|
jamie@50
|
239 case HARMONICS:
|
jamie@50
|
240 strcpy(name, "harmonics");
|
jamie@51
|
241 strcpy(p_name, "Spectral Harmonics");
|
jamie@51
|
242 strcpy(desc, "Extract the harmonics from a spectrum");
|
jamie@51
|
243 strcpy(p_desc, "Extract the harmonics from an audio spectrum");
|
jamie@51
|
244 strcpy(author, "");
|
jamie@50
|
245 break;
|
jamie@50
|
246 case NOISINESS:
|
jamie@50
|
247 strcpy(name, "noisiness");
|
jamie@51
|
248 strcpy(p_name, "Noisiness");
|
jamie@51
|
249 strcpy(desc, "Extract the noisiness of a spectrum");
|
jamie@51
|
250 strcpy(p_desc, "Extract the noisiness of an audio spectrum");
|
jamie@51
|
251 strcpy(author, "");
|
jamie@50
|
252 break;
|
jamie@50
|
253 case CREST:
|
jamie@50
|
254 strcpy(name, "crest");
|
jamie@51
|
255 strcpy(p_name, "Spectral Crest Measure");
|
jamie@51
|
256 strcpy(desc, "Extract the spectral crest measure of a \
|
jamie@51
|
257 spectrum");
|
jamie@51
|
258 strcpy(p_desc, "Extract the spectral crest measure of a \
|
jamie@51
|
259 audio spectrum");
|
jamie@51
|
260 strcpy(author, "");
|
jamie@50
|
261 break;
|
jamie@50
|
262 case MFCC:
|
jamie@50
|
263 strcpy(name, "mfcc");
|
jamie@51
|
264 strcpy(p_name, "Mel Frequency Cepstral Coefficients");
|
jamie@51
|
265 strcpy(desc, "Extract MFCC from a spectrum");
|
jamie@51
|
266 strcpy(p_desc, "Extract MFCC from an audio spectrum");
|
jamie@51
|
267 strcpy(author, "");
|
jamie@50
|
268 break;
|
jamie@50
|
269 case BARK_COEFFICIENTS:
|
jamie@50
|
270 strcpy(name, "bark_coefficients");
|
jamie@51
|
271 strcpy(p_name, "Bark Coefficients");
|
jamie@51
|
272 strcpy(desc, "Extract bark coefficients from a spectrum");
|
jamie@51
|
273 strcpy(p_desc, "Extract bark coefficients from an audio \
|
jamie@51
|
274 spectrum");
|
jamie@51
|
275 strcpy(author, "");
|
jamie@50
|
276 break;
|
jamie@50
|
277 case CENTROID:
|
jamie@50
|
278 strcpy(name, "centroid");
|
jamie@51
|
279 strcpy(p_name, "Spectral Centroid");
|
jamie@51
|
280 strcpy(desc, "Extract the spectral centroid of a spectrum");
|
jamie@51
|
281 strcpy(p_desc, "Extract the spectral centroid of an audio \
|
jamie@51
|
282 spectrum");
|
jamie@51
|
283 strcpy(author, "");
|
jamie@50
|
284 break;
|
jamie@50
|
285 case IRREGULARITY_K:
|
jamie@50
|
286 strcpy(name, "irregularity_k");
|
jamie@51
|
287 strcpy(p_name, "Irregularity I");
|
jamie@51
|
288 strcpy(desc, "Extract the irregularity of a spectrum");
|
jamie@51
|
289 strcpy(p_desc, "Extract the irregularity of an audio \
|
jamie@51
|
290 spectrum");
|
jamie@51
|
291 strcpy(author, "");
|
jamie@50
|
292 break;
|
jamie@50
|
293 case IRREGULARITY_J:
|
jamie@50
|
294 strcpy(name, "irregularity_j");
|
jamie@51
|
295 strcpy(p_name, "Irregularity II");
|
jamie@51
|
296 strcpy(desc, "Extract the irregularity of a spectrum");
|
jamie@51
|
297 strcpy(p_desc, "Extract the irregularity of an audio \
|
jamie@51
|
298 spectrum");
|
jamie@51
|
299 strcpy(author, "");
|
jamie@50
|
300 break;
|
jamie@50
|
301 case TRISTIMULUS_1:
|
jamie@50
|
302 strcpy(name, "tristimulus_1");
|
jamie@51
|
303 strcpy(p_name, "Tristimulus I");
|
jamie@51
|
304 strcpy(desc, "Extract the tristimulus (type I) of a spectrum");
|
jamie@51
|
305 strcpy(p_desc, "Extract the tristimulus (type I) of an audio \
|
jamie@51
|
306 spectrum");
|
jamie@51
|
307 strcpy(author, "");
|
jamie@50
|
308 break;
|
jamie@50
|
309 case TRISTIMULUS_2:
|
jamie@50
|
310 strcpy(name, "tristimulus_2");
|
jamie@51
|
311 strcpy(p_name, "Tristimulus II");
|
jamie@51
|
312 strcpy(desc, "Extract the tristimulus (type II) of a spectrum");
|
jamie@51
|
313 strcpy(p_desc, "Extract the tristimulus (type II) of an audio \
|
jamie@51
|
314 spectrum");
|
jamie@51
|
315 strcpy(author, "");
|
jamie@50
|
316 break;
|
jamie@50
|
317 case TRISTIMULUS_3:
|
jamie@50
|
318 strcpy(name, "tristimulus_3");
|
jamie@51
|
319 strcpy(p_name, "Tristimulus III");
|
jamie@51
|
320 strcpy(desc, "Extract the tristimulus (type III) of a spectrum");
|
jamie@51
|
321 strcpy(p_desc, "Extract the tristimulus (type III) of an audio \
|
jamie@51
|
322 spectrum");
|
jamie@51
|
323 strcpy(author, "");
|
jamie@50
|
324 break;
|
jamie@50
|
325 case SMOOTHNESS:
|
jamie@50
|
326 strcpy(name, "smoothness");
|
jamie@51
|
327 strcpy(p_name, "Spectral Smoothness");
|
jamie@51
|
328 strcpy(desc, "Extract the spectral smoothness of a spectrum");
|
jamie@51
|
329 strcpy(p_desc, "Extract the spectral smoothness of an audio \
|
jamie@51
|
330 spectrum");
|
jamie@51
|
331 strcpy(author, "");
|
jamie@50
|
332 break;
|
jamie@50
|
333 case FLATNESS:
|
jamie@50
|
334 strcpy(name, "flatness");
|
jamie@51
|
335 strcpy(p_name, "Spectral Flatness");
|
jamie@51
|
336 strcpy(desc, "Extract the spectral flatness of a spectrum");
|
jamie@51
|
337 strcpy(p_desc, "Extract the spectral flatness of an audio \
|
jamie@51
|
338 spectrum");
|
jamie@51
|
339 strcpy(author, "");
|
jamie@50
|
340 break;
|
jamie@50
|
341 case SPREAD:
|
jamie@50
|
342 strcpy(name, "spread");
|
jamie@51
|
343 strcpy(p_name, "Spectral Spread");
|
jamie@51
|
344 strcpy(desc, "Extract the spectral spread of a spectrum");
|
jamie@51
|
345 strcpy(p_desc, "Extract the spectral spread of an audio \
|
jamie@51
|
346 spectrum");
|
jamie@51
|
347 strcpy(author, "");
|
jamie@50
|
348 break;
|
jamie@50
|
349 case ZCR:
|
jamie@50
|
350 strcpy(name, "zcr");
|
jamie@51
|
351 strcpy(p_name, "Zero Crossing Rate");
|
jamie@51
|
352 strcpy(desc, "Extract the zero crossing rate of a vector");
|
jamie@51
|
353 strcpy(p_desc, "Extract the zero crossing rate of an audio \
|
jamie@51
|
354 signal");
|
jamie@51
|
355 strcpy(author, "");
|
jamie@50
|
356 break;
|
jamie@50
|
357 case LOUDNESS:
|
jamie@50
|
358 strcpy(name, "loudness");
|
jamie@51
|
359 strcpy(p_name, "Loudness");
|
jamie@51
|
360 strcpy(desc, "Extract the loudness of a signal from its \
|
jamie@51
|
361 spectrum");
|
jamie@51
|
362 strcpy(p_desc, "Extract the loudness of an audio signal from \
|
jamie@51
|
363 its spectrum");
|
jamie@51
|
364 strcpy(author, "");
|
jamie@50
|
365 break;
|
jamie@50
|
366 case HIGHEST_VALUE:
|
jamie@50
|
367 strcpy(name, "highest_value");
|
jamie@51
|
368 strcpy(p_name, "Highest Value");
|
jamie@51
|
369 strcpy(desc, "Extract the highest value from an input vector");
|
jamie@51
|
370 strcpy(p_desc, "Extract the highest value from a given range");
|
jamie@51
|
371 strcpy(author, "");
|
jamie@50
|
372 break;
|
jamie@50
|
373 case SUM:
|
jamie@50
|
374 strcpy(name, "sum");
|
jamie@51
|
375 strcpy(p_name, "Sum of Values");
|
jamie@51
|
376 strcpy(desc, "Extract the sum of the values in an input \
|
jamie@51
|
377 vector");
|
jamie@51
|
378 strcpy(p_desc, "Extract the sum of the values in a given \
|
jamie@51
|
379 range");
|
jamie@51
|
380 strcpy(author, "");
|
jamie@50
|
381 break;
|
jamie@50
|
382 case RMS_AMPLITUDE:
|
jamie@50
|
383 strcpy(name, "rms_amplitude");
|
jamie@51
|
384 strcpy(p_name, "RMS Amplitude");
|
jamie@51
|
385 strcpy(desc, "Extract the RMS amplitude of a signal");
|
jamie@51
|
386 strcpy(p_desc, "Extract the RMS amplitude of an audio signal");
|
jamie@51
|
387 strcpy(author, "");
|
jamie@50
|
388 break;
|
jamie@50
|
389 case POWER:
|
jamie@50
|
390 strcpy(name, "power");
|
jamie@51
|
391 strcpy(p_name, "Spectral Power");
|
jamie@51
|
392 strcpy(desc, "Extract the spectral power of a spectrum");
|
jamie@51
|
393 strcpy(p_desc, "Extract the spectral power of an audio \
|
jamie@51
|
394 spectrum");
|
jamie@51
|
395 strcpy(author, "");
|
jamie@50
|
396 break;
|
jamie@50
|
397 case SHARPNESS:
|
jamie@50
|
398 strcpy(name, "sharpness");
|
jamie@51
|
399 strcpy(p_name, "Spectral Sharpness");
|
jamie@51
|
400 strcpy(desc, "Extract the spectral sharpness of a spectrum");
|
jamie@51
|
401 strcpy(p_desc, "Extract the spectral sharpness of an audio \
|
jamie@51
|
402 spectrum");
|
jamie@51
|
403 strcpy(author, "");
|
jamie@50
|
404 break;
|
jamie@50
|
405 case SLOPE:
|
jamie@50
|
406 strcpy(name, "slope");
|
jamie@51
|
407 strcpy(p_name, "Spectral Slope");
|
jamie@51
|
408 strcpy(desc, "Extract the spectral slope of a spectrum");
|
jamie@51
|
409 strcpy(p_desc, "Extract the spectral slope of an audio \
|
jamie@51
|
410 spectrum");
|
jamie@51
|
411 strcpy(author, "");
|
jamie@50
|
412 break;
|
jamie@50
|
413 case HPS:
|
jamie@50
|
414 strcpy(name, "hps");
|
jamie@51
|
415 strcpy(p_name, "Harmonic Product Spectrum");
|
jamie@51
|
416 strcpy(desc, "Extract the harmonic product spectrum of a \
|
jamie@51
|
417 spectrum");
|
jamie@51
|
418 strcpy(p_desc, "Extract the harmonic product spectrum of an \
|
jamie@51
|
419 audio spectrum");
|
jamie@51
|
420 strcpy(author, "");
|
jamie@50
|
421 break;
|
jamie@50
|
422 case FLUX:
|
jamie@50
|
423 strcpy(name, "flux");
|
jamie@51
|
424 strcpy(p_name, "Spectral Flux");
|
jamie@51
|
425 strcpy(desc, "Extract the spectral flux of a spectrum");
|
jamie@51
|
426 strcpy(p_desc, "Extract the spectral flux of an audio \
|
jamie@51
|
427 spectrum");
|
jamie@51
|
428 strcpy(author, "");
|
jamie@50
|
429 break;
|
jamie@50
|
430 case ATTACK_TIME:
|
jamie@50
|
431 strcpy(name, "attack_time");
|
jamie@51
|
432 strcpy(p_name, "Attack Time");
|
jamie@51
|
433 strcpy(desc, "Extract the attack time of a signal");
|
jamie@51
|
434 strcpy(p_desc, "Extract the attack time of an audio signal");
|
jamie@51
|
435 strcpy(author, "");
|
jamie@50
|
436 break;
|
jamie@50
|
437 case DECAY_TIME:
|
jamie@50
|
438 strcpy(name, "decay_time");
|
jamie@51
|
439 strcpy(p_name, "Decay Time");
|
jamie@51
|
440 strcpy(desc, "Extract the decay time of a signal");
|
jamie@51
|
441 strcpy(p_desc, "Extract the decay time of an audio signal");
|
jamie@51
|
442 strcpy(author, "");
|
jamie@50
|
443 break;
|
jamie@50
|
444 case DELTA_FEATURE:
|
jamie@50
|
445 strcpy(name, "delta_feature");
|
jamie@51
|
446 strcpy(p_name, "Delta Feature");
|
jamie@51
|
447 strcpy(desc, "Extract the time derivative of a feature");
|
jamie@51
|
448 strcpy(p_desc, "Extract the time derivative of a feature");
|
jamie@51
|
449 strcpy(author, "");
|
jamie@50
|
450 break;
|
jamie@50
|
451 case AUTOCORRELATION_FFT:
|
jamie@50
|
452 strcpy(name, "autocorrelation_fft");
|
jamie@51
|
453 strcpy(p_name, "Autocorrelation (FFT method)");
|
jamie@51
|
454 strcpy(desc, "Extract the autocorrelation of a signal");
|
jamie@51
|
455 strcpy(p_desc, "Extract the autocorrelation of an audio signal");
|
jamie@51
|
456 strcpy(author, "");
|
jamie@50
|
457 break;
|
jamie@50
|
458 case DCT:
|
jamie@50
|
459 strcpy(name, "dct");
|
jamie@51
|
460 strcpy(p_name, "Discrete Cosine Transform");
|
jamie@51
|
461 strcpy(desc, "Extract the DCT of a signal");
|
jamie@51
|
462 strcpy(p_desc, "Extract the DCT of an audio signal");
|
jamie@51
|
463 strcpy(author, "");
|
jamie@50
|
464 break;
|
jamie@50
|
465 case AUTOCORRELATION:
|
jamie@50
|
466 strcpy(name, "autocorrelation");
|
jamie@51
|
467 strcpy(p_name, "Autocorrelation");
|
jamie@51
|
468 strcpy(desc, "Extract the autocorrelation of a signal");
|
jamie@51
|
469 strcpy(p_desc, "Extract the autocorrelation of an audio signal");
|
jamie@51
|
470 strcpy(author, "");
|
jamie@50
|
471 break;
|
jamie@50
|
472 case AMDF:
|
jamie@50
|
473 strcpy(name, "amdf");
|
jamie@51
|
474 strcpy(p_name, "Average Magnitude Difference Function");
|
jamie@51
|
475 strcpy(desc, "Extract the AMDF of a signal");
|
jamie@51
|
476 strcpy(p_desc, "Extract the AMDF of an audio signal");
|
jamie@51
|
477 strcpy(author, "");
|
jamie@50
|
478 break;
|
jamie@50
|
479 case ASDF:
|
jamie@50
|
480 strcpy(name, "asdf");
|
jamie@51
|
481 strcpy(p_name, "Average Squared Difference Function");
|
jamie@51
|
482 strcpy(desc, "Extract the ASDF of a signal");
|
jamie@51
|
483 strcpy(p_desc, "Extract the ASDF of an audio signal");
|
jamie@51
|
484 strcpy(author, "");
|
jamie@50
|
485 break;
|
jamie@50
|
486 default:
|
jamie@51
|
487 strcpy(name, "");
|
jamie@51
|
488 strcpy(desc, "");
|
jamie@51
|
489 strcpy(p_desc, "");
|
jamie@51
|
490 strcpy(author, "");
|
jamie@50
|
491 break;
|
jamie@50
|
492 }
|
jamie@50
|
493 }
|
jamie@50
|
494
|
jamie@50
|
495 return fd;
|
jamie@50
|
496 }
|
jamie@50
|
497
|
jamie@50
|
498 int xtract_free_descriptors(void *fd){
|
jamie@50
|
499
|
jamie@50
|
500 if (fd != NULL) {
|
jamie@50
|
501 free(fd);
|
jamie@50
|
502 }
|
jamie@50
|
503
|
jamie@50
|
504 return SUCCESS;
|
jamie@50
|
505 }
|
jamie@50
|
506
|
jamie@50
|
507
|
jamie@50
|
508
|
jamie@50
|
509
|
jamie@50
|
510
|