annotate src/descriptors.c @ 115:6c5ece9cba3a

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