diff options
author | Jamie Bullock <jamie@postlude.co.uk> | 2008-02-16 20:13:05 +0000 |
---|---|---|
committer | Jamie Bullock <jamie@postlude.co.uk> | 2008-02-16 20:13:05 +0000 |
commit | 398afce1d37bad97d50a20aa5406a4dc6327912d (patch) | |
tree | 6b4bbeeaadc14e1e4ef3567565aae7023a6c2161 /src/descriptors.c | |
parent | 26fa6beab516a699ead017f4a2d68b1d861b9561 (diff) | |
download | LibXtract-398afce1d37bad97d50a20aa5406a4dc6327912d.tar.gz LibXtract-398afce1d37bad97d50a20aa5406a4dc6327912d.tar.bz2 LibXtract-398afce1d37bad97d50a20aa5406a4dc6327912d.zip |
- 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
Diffstat (limited to 'src/descriptors.c')
-rw-r--r-- | src/descriptors.c | 60 |
1 files changed, 55 insertions, 5 deletions
diff --git a/src/descriptors.c b/src/descriptors.c index e96f467..444256d 100644 --- a/src/descriptors.c +++ b/src/descriptors.c @@ -71,7 +71,7 @@ xtract_function_descriptor_t *xtract_make_descriptors(void){ *argv_min = XTRACT_ANY; *argv_max = XTRACT_ANY; *argv_def = XTRACT_ANY; - *argv_unit = XTRACT_ANY; + *argv_unit = XTRACT_DBFS; break; case XTRACT_SPECTRAL_INHARMONICITY: *argv_min = 0.f; @@ -86,6 +86,12 @@ xtract_function_descriptor_t *xtract_make_descriptors(void){ *argv_def = XTRACT_SR_DEFAULT; *argv_unit = XTRACT_HERTZ; break; + case XTRACT_FLATNESS_DB: + *argv_min = 0; + *argv_max = 1.0; + *argv_def = XTRACT_ANY; + *argv_unit = XTRACT_DBFS; + break; /* argc = 2 */; case XTRACT_ROLLOFF: *argv_min = XTRACT_FFT_BANDS_MIN; @@ -165,9 +171,9 @@ xtract_function_descriptor_t *xtract_make_descriptors(void){ *(argv_def + 2) = 0; *(argv_unit + 2) = XTRACT_NONE; *(argv_min + 3) = 0; - *(argv_max + 3) = 1; + *(argv_max + 3) = XTRACT_ANY; *(argv_def + 3) = 0; - *(argv_unit + 3) = XTRACT_NONE; + *(argv_unit + 3) = XTRACT_BINS; break; case XTRACT_BARK_COEFFICIENTS: /* BARK_COEFFICIENTS is special because argc = BARK_BANDS */ @@ -206,9 +212,12 @@ xtract_function_descriptor_t *xtract_make_descriptors(void){ case XTRACT_SPECTRAL_INHARMONICITY: *argv_donor = XTRACT_FAILSAFE_F0; break; - case XTRACT_TONALITY: + case XTRACT_FLATNESS_DB: *argv_donor = XTRACT_FLATNESS; break; + case XTRACT_TONALITY: + *argv_donor = XTRACT_FLATNESS_DB; + break; case XTRACT_LOWEST_VALUE: case XTRACT_F0: case XTRACT_FAILSAFE_F0: @@ -254,6 +263,12 @@ xtract_function_descriptor_t *xtract_make_descriptors(void){ *(argv_donor + 2) = XTRACT_ANY; *(argv_donor + 3) = XTRACT_ANY; break; + case XTRACT_SUBBANDS: + *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; @@ -304,6 +319,7 @@ xtract_function_descriptor_t *xtract_make_descriptors(void){ case XTRACT_POWER: case XTRACT_HPS: case XTRACT_PEAK_SPECTRUM: + case XTRACT_SUBBANDS: case XTRACT_MFCC: *data_format = XTRACT_SPECTRAL_MAGNITUDES; break; @@ -335,6 +351,7 @@ xtract_function_descriptor_t *xtract_make_descriptors(void){ *data_format = XTRACT_AUDIO_SAMPLES; break; case XTRACT_TONALITY: + case XTRACT_FLATNESS_DB: *data_format = XTRACT_NO_DATA; break; case XTRACT_TRISTIMULUS_1: @@ -394,6 +411,7 @@ xtract_function_descriptor_t *xtract_make_descriptors(void){ case XTRACT_NOISINESS: case XTRACT_CREST: case XTRACT_FLATNESS: + case XTRACT_FLATNESS_DB: case XTRACT_POWER: case XTRACT_BARK_COEFFICIENTS: case XTRACT_RMS_AMPLITUDE: @@ -408,6 +426,7 @@ xtract_function_descriptor_t *xtract_make_descriptors(void){ case XTRACT_LPC: case XTRACT_LPCC: case XTRACT_WINDOWED: + case XTRACT_SUBBANDS: *data_unit = XTRACT_ANY; break; case XTRACT_SPECTRAL_MEAN: @@ -444,7 +463,6 @@ xtract_function_descriptor_t *xtract_make_descriptors(void){ strcpy(desc, "Extract the mean of an input vector"); strcpy(p_desc, "Extract the mean of a range of values"); strcpy(author, ""); - d->argv.type = XTRACT_NONE; break; case XTRACT_VARIANCE: strcpy(name, "variance"); @@ -660,6 +678,14 @@ xtract_function_descriptor_t *xtract_make_descriptors(void){ strcpy(author, "Rabiner and Juang"); *year = 1993; break; + case XTRACT_SUBBANDS: + strcpy(name, "subbands"); + strcpy(p_name, "Sub band coefficients"); + strcpy(desc, "Extract subband coefficients from spectral magnitudes"); + strcpy(p_desc, + "Extract subband coefficients from spectral magnitudes"); + strcpy(author, ""); + break; case XTRACT_BARK_COEFFICIENTS: strcpy(name, "bark_coefficients"); strcpy(p_name, "Bark Coefficients"); @@ -740,6 +766,15 @@ xtract_function_descriptor_t *xtract_make_descriptors(void){ strcpy(author, "Tristan Jehan"); *year = 2005; break; + case XTRACT_FLATNESS_DB: + strcpy(name, "flatness_db"); + strcpy(p_name, "Log Spectral Flatness"); + strcpy(desc, "Extract the log spectral flatness of a spectrum"); + strcpy(p_desc, + "Extract the log spectral flatness of an audio spectrum"); + strcpy(author, "Peeters"); + *year = 2003; + break; case XTRACT_SPREAD: strcpy(name, "spread"); strcpy(p_name, "Spectral Spread"); @@ -933,6 +968,7 @@ xtract_function_descriptor_t *xtract_make_descriptors(void){ case XTRACT_LOWEST_VALUE: case XTRACT_F0: case XTRACT_FAILSAFE_F0: + case XTRACT_FLATNESS_DB: case XTRACT_TONALITY: *argc = 1; *argv_type = XTRACT_FLOAT; @@ -955,6 +991,10 @@ xtract_function_descriptor_t *xtract_make_descriptors(void){ *argc = 4; *argv_type = XTRACT_FLOAT; break; + case XTRACT_SUBBANDS: + *argc = 4; + *argv_type = XTRACT_INT; + break; case XTRACT_MFCC: *argc = 1; *argv_type = XTRACT_MEL_FILTER; @@ -1034,6 +1074,7 @@ xtract_function_descriptor_t *xtract_make_descriptors(void){ case XTRACT_ROLLOFF: case XTRACT_LOUDNESS: case XTRACT_FLATNESS: + case XTRACT_FLATNESS_DB: case XTRACT_TONALITY: case XTRACT_CREST: case XTRACT_NOISINESS: @@ -1060,6 +1101,7 @@ xtract_function_descriptor_t *xtract_make_descriptors(void){ case XTRACT_BARK_COEFFICIENTS: case XTRACT_PEAK_SPECTRUM: case XTRACT_SPECTRUM: + case XTRACT_SUBBANDS: case XTRACT_AUTOCORRELATION_FFT: case XTRACT_MFCC: case XTRACT_LPC: @@ -1108,6 +1150,7 @@ xtract_function_descriptor_t *xtract_make_descriptors(void){ case XTRACT_ROLLOFF: case XTRACT_LOUDNESS: case XTRACT_FLATNESS: + case XTRACT_FLATNESS_DB: case XTRACT_TONALITY: case XTRACT_CREST: case XTRACT_NOISINESS: @@ -1130,6 +1173,7 @@ xtract_function_descriptor_t *xtract_make_descriptors(void){ case XTRACT_BARK_COEFFICIENTS: case XTRACT_PEAK_SPECTRUM: case XTRACT_SPECTRUM: + case XTRACT_SUBBANDS: case XTRACT_AUTOCORRELATION_FFT: case XTRACT_MFCC: case XTRACT_LPC: @@ -1204,6 +1248,11 @@ xtract_function_descriptor_t *xtract_make_descriptors(void){ *result_min = 0.f; *result_max = 1.f; break; + case XTRACT_FLATNESS_DB: + *result_unit = XTRACT_DBFS; + *result_min = XTRACT_ANY; /* FIX: check this */ + *result_max = XTRACT_ANY; + break; case XTRACT_LOUDNESS: case XTRACT_FLATNESS: case XTRACT_TONALITY: @@ -1233,6 +1282,7 @@ xtract_function_descriptor_t *xtract_make_descriptors(void){ case XTRACT_AMDF: case XTRACT_ASDF: case XTRACT_DCT: + case XTRACT_SUBBANDS: case XTRACT_WINDOWED: *result_format = XTRACT_ARBITRARY_SERIES; *result_unit = XTRACT_ANY; |