diff options
author | Jamie Bullock <jamie@postlude.co.uk> | 2007-12-27 17:51:07 +0000 |
---|---|---|
committer | Jamie Bullock <jamie@postlude.co.uk> | 2007-12-27 17:51:07 +0000 |
commit | 24f2b43e28e755423cc0c319aafcf74e7db5b61b (patch) | |
tree | 7bb9ae8a66c9961fded7572bf2aeb650c55a370d /src/descriptors.c | |
parent | 6abcb447777c3ab48bdbe720fc3d84d3e8841317 (diff) | |
download | LibXtract-24f2b43e28e755423cc0c319aafcf74e7db5b61b.tar.gz LibXtract-24f2b43e28e755423cc0c319aafcf74e7db5b61b.tar.bz2 LibXtract-24f2b43e28e755423cc0c319aafcf74e7db5b61b.zip |
- Added extra argument to xtract_spectrum to give the option of normalising the magnitude/power coeffificients
- Removed duplicate code block (argc assignment) from descriptors.c
- Added some extra documentation to libxtract.h
Diffstat (limited to 'src/descriptors.c')
-rw-r--r-- | src/descriptors.c | 102 |
1 files changed, 23 insertions, 79 deletions
diff --git a/src/descriptors.c b/src/descriptors.c index 3c43775..4584899 100644 --- a/src/descriptors.c +++ b/src/descriptors.c @@ -48,79 +48,6 @@ void *xtract_make_descriptors(){ argc = &d->argc; argv_type = &d->argv.type; - switch(f){ - - case XTRACT_VARIANCE: - case XTRACT_STANDARD_DEVIATION: - case XTRACT_AVERAGE_DEVIATION: - case XTRACT_SPECTRAL_VARIANCE: - case XTRACT_SPECTRAL_STANDARD_DEVIATION: - case XTRACT_SPECTRAL_AVERAGE_DEVIATION: - case XTRACT_SPECTRAL_INHARMONICITY: - case XTRACT_LOWEST_VALUE: - case XTRACT_F0: - case XTRACT_FAILSAFE_F0: - case XTRACT_TONALITY: - *argc = 1; - *argv_type = XTRACT_FLOAT; - break; - case XTRACT_SKEWNESS: - case XTRACT_KURTOSIS: - case XTRACT_SPECTRAL_SKEWNESS: - case XTRACT_SPECTRAL_KURTOSIS: - case XTRACT_SPECTRUM: - case XTRACT_PEAK_SPECTRUM: - case XTRACT_HARMONIC_SPECTRUM: - case XTRACT_NOISINESS: - case XTRACT_CREST: - case XTRACT_ROLLOFF: - *argc = 2; - *argv_type = XTRACT_FLOAT; - break; - case XTRACT_MFCC: - *argc = 1; - *argv_type = XTRACT_MEL_FILTER; - break; - case XTRACT_BARK_COEFFICIENTS: - *argc = XTRACT_BARK_BANDS; - *argv_type = XTRACT_INT; - break; - case XTRACT_MEAN: - case XTRACT_SPECTRAL_MEAN: - case XTRACT_SPECTRAL_CENTROID: - case XTRACT_IRREGULARITY_K: - case XTRACT_IRREGULARITY_J: - case XTRACT_TRISTIMULUS_1: - case XTRACT_TRISTIMULUS_2: - case XTRACT_TRISTIMULUS_3: - case XTRACT_SMOOTHNESS: - case XTRACT_FLATNESS: - case XTRACT_SPREAD: - case XTRACT_ZCR: - case XTRACT_LOUDNESS: - case XTRACT_HIGHEST_VALUE: - case XTRACT_SUM: - case XTRACT_RMS_AMPLITUDE: - case XTRACT_POWER: - case XTRACT_SHARPNESS: - case XTRACT_SPECTRAL_SLOPE: - case XTRACT_HPS: - case XTRACT_FLUX: - case XTRACT_ATTACK_TIME: - case XTRACT_DECAY_TIME: - case XTRACT_DELTA_FEATURE: - case XTRACT_AUTOCORRELATION_FFT: - case XTRACT_DCT: - case XTRACT_AUTOCORRELATION: - case XTRACT_AMDF: - case XTRACT_ASDF: - case XTRACT_NONZERO_COUNT: - case XTRACT_ODD_EVEN_RATIO: - default: - *argc = 0; - break; - } - argv_min = &d->argv.min[0]; argv_max = &d->argv.max[0]; argv_def = &d->argv.def[0]; @@ -169,14 +96,22 @@ void *xtract_make_descriptors(){ *(argv_unit + 1) = XTRACT_PERCENT; break; case XTRACT_SPECTRUM: - *argv_min = XTRACT_SR_LOWER_LIMIT / 2; - *argv_max = XTRACT_SR_UPPER_LIMIT / 2; - *argv_def = XTRACT_SR_DEFAULT / 2; + *argv_min = XTRACT_SR_LOWER_LIMIT / XTRACT_FFT_BANDS_MIN; + *argv_max = XTRACT_SR_UPPER_LIMIT / XTRACT_FFT_BANDS_MAX; + *argv_def = XTRACT_SR_DEFAULT / XTRACT_FFT_BANDS_DEF; *argv_unit = XTRACT_HERTZ; *(argv_min + 1) = 0; *(argv_max + 1) = 3 ; *(argv_def + 1) = 0; *(argv_unit + 1) = XTRACT_NONE; + *(argv_min + 2) = 0; + *(argv_max + 2) = 1; + *(argv_def + 2) = 0; + *(argv_unit + 2) = XTRACT_NONE; + *(argv_min + 3) = 0; + *(argv_max + 3) = 1; + *(argv_def + 3) = 0; + *(argv_unit + 3) = XTRACT_NONE; break; case XTRACT_PEAK_SPECTRUM: *argv_min = XTRACT_SR_LOWER_LIMIT / 2; @@ -260,7 +195,6 @@ void *xtract_make_descriptors(){ *argv_donor = XTRACT_INIT_MFCC; break; /* argc = 2 */; - case XTRACT_SPECTRUM: case XTRACT_ROLLOFF: case XTRACT_PEAK_SPECTRUM: *argv_donor = XTRACT_ANY; @@ -288,7 +222,14 @@ void *xtract_make_descriptors(){ *argv_donor = XTRACT_HIGHEST_VALUE; *(argv_donor + 1) = XTRACT_MEAN; break; - /* argc = BARK_BANDS */ + /* argc = 4 */ + case XTRACT_SPECTRUM: + *argv_donor = XTRACT_ANY; + *(argv_donor + 1) = XTRACT_ANY; + *(argv_donor + 2) = XTRACT_ANY; + *(argv_donor + 3) = XTRACT_ANY; + break; + /* BARK_BANDS */ case XTRACT_BARK_COEFFICIENTS: *argv_donor = XTRACT_INIT_BARK; break; @@ -951,7 +892,6 @@ void *xtract_make_descriptors(){ case XTRACT_KURTOSIS: case XTRACT_SPECTRAL_SKEWNESS: case XTRACT_SPECTRAL_KURTOSIS: - case XTRACT_SPECTRUM: case XTRACT_PEAK_SPECTRUM: case XTRACT_HARMONIC_SPECTRUM: case XTRACT_NOISINESS: @@ -960,6 +900,10 @@ void *xtract_make_descriptors(){ *argc = 2; *argv_type = XTRACT_FLOAT; break; + case XTRACT_SPECTRUM: + *argc = 4; + *argv_type = XTRACT_FLOAT; + break; case XTRACT_MFCC: *argc = 1; *argv_type = XTRACT_MEL_FILTER; |