aboutsummaryrefslogtreecommitdiff
path: root/src/descriptors.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/descriptors.c')
-rw-r--r--src/descriptors.c59
1 files changed, 38 insertions, 21 deletions
diff --git a/src/descriptors.c b/src/descriptors.c
index 044f3d4..2bfdd35 100644
--- a/src/descriptors.c
+++ b/src/descriptors.c
@@ -42,7 +42,7 @@ xtract_function_descriptor_t *xtract_make_descriptors(void)
f = F = XTRACT_FEATURES;
- fd = malloc(XTRACT_FEATURES * sizeof(xtract_function_descriptor_t));
+ fd = (xtract_function_descriptor_t*)malloc(XTRACT_FEATURES * sizeof(xtract_function_descriptor_t));
/* FIX - this file probably needs a rewrite for readability */
@@ -88,6 +88,7 @@ xtract_function_descriptor_t *xtract_make_descriptors(void)
case XTRACT_F0:
case XTRACT_FAILSAFE_F0:
case XTRACT_WAVELET_F0:
+ case XTRACT_MIDICENT:
*argv_min = XTRACT_SR_LOWER_LIMIT;
*argv_max = XTRACT_SR_UPPER_LIMIT;
*argv_def = XTRACT_SR_DEFAULT;
@@ -128,7 +129,7 @@ xtract_function_descriptor_t *xtract_make_descriptors(void)
*(argv_min + 1) = 0.0;
*(argv_max + 1) = 1.0 ;
*(argv_def + 1) = .1 ;
- *(argv_unit + 1) = XTRACT_NONE;
+ *(argv_unit + 1) = (xtract_unit_t)XTRACT_NONE;
break;
case XTRACT_NOISINESS:
case XTRACT_SKEWNESS:
@@ -139,11 +140,11 @@ xtract_function_descriptor_t *xtract_make_descriptors(void)
*argv_min = XTRACT_NONE;
*argv_max = XTRACT_NONE;
*argv_def = XTRACT_NONE;
- *argv_unit = XTRACT_NONE;
+ *argv_unit = (xtract_unit_t)XTRACT_NONE;
*(argv_min + 1) = XTRACT_NONE;
*(argv_max + 1) = XTRACT_NONE;
*(argv_def + 1) = XTRACT_NONE;
- *(argv_unit + 1) = XTRACT_NONE;
+ *(argv_unit + 1) = (xtract_unit_t)XTRACT_NONE;
break;
/* argc = 4 */
case XTRACT_SPECTRUM:
@@ -154,29 +155,29 @@ xtract_function_descriptor_t *xtract_make_descriptors(void)
*(argv_min + 1) = 0;
*(argv_max + 1) = 3 ;
*(argv_def + 1) = 0;
- *(argv_unit + 1) = XTRACT_NONE;
+ *(argv_unit + 1) = (xtract_unit_t)XTRACT_NONE;
*(argv_min + 2) = 0;
*(argv_max + 2) = 1;
*(argv_def + 2) = 0;
- *(argv_unit + 2) = XTRACT_NONE;
+ *(argv_unit + 2) = (xtract_unit_t)XTRACT_NONE;
*(argv_min + 3) = 0;
*(argv_max + 3) = 1;
*(argv_def + 3) = 0;
- *(argv_unit + 3) = XTRACT_NONE;
+ *(argv_unit + 3) = (xtract_unit_t)XTRACT_NONE;
break;
case XTRACT_SUBBANDS:
*argv_min = XTRACT_ANY;
*argv_max = XTRACT_ANY;
*argv_def = XTRACT_MEAN;
- *argv_unit = XTRACT_NONE;
+ *argv_unit = (xtract_unit_t)XTRACT_NONE;
*(argv_min + 1) = 1;
*(argv_max + 1) = 16384;
*(argv_def + 1) = 4;
- *(argv_unit + 1) = XTRACT_NONE;
+ *(argv_unit + 1) = (xtract_unit_t)XTRACT_NONE;
*(argv_min + 2) = 0;
*(argv_max + 2) = 32;
*(argv_def + 2) = 0;
- *(argv_unit + 2) = XTRACT_NONE;
+ *(argv_unit + 2) = (xtract_unit_t)XTRACT_NONE;
*(argv_min + 3) = 0;
*(argv_max + 3) = XTRACT_ANY;
*(argv_def + 3) = 0;
@@ -190,7 +191,7 @@ xtract_function_descriptor_t *xtract_make_descriptors(void)
*argv_min = XTRACT_NONE;
*argv_max = XTRACT_NONE;
*argv_def = XTRACT_NONE;
- *argv_unit = XTRACT_NONE;
+ *argv_unit = (xtract_unit_t)XTRACT_NONE;
break;
}
@@ -230,6 +231,7 @@ xtract_function_descriptor_t *xtract_make_descriptors(void)
case XTRACT_F0:
case XTRACT_FAILSAFE_F0:
case XTRACT_WAVELET_F0:
+ case XTRACT_MIDICENT:
*argv_donor = XTRACT_ANY;
break;
case XTRACT_MFCC:
@@ -380,6 +382,7 @@ xtract_function_descriptor_t *xtract_make_descriptors(void)
break;
case XTRACT_ATTACK_TIME:
case XTRACT_DECAY_TIME:
+ case XTRACT_MIDICENT:
default:
*data_format = XTRACT_NO_DATA;
break;
@@ -440,7 +443,7 @@ xtract_function_descriptor_t *xtract_make_descriptors(void)
case XTRACT_LPCC:
case XTRACT_WINDOWED:
case XTRACT_SUBBANDS:
- *data_unit = XTRACT_ANY;
+ *data_unit = (xtract_unit_t)XTRACT_ANY;
break;
case XTRACT_SPECTRAL_MEAN:
case XTRACT_SPECTRAL_VARIANCE:
@@ -620,6 +623,13 @@ xtract_function_descriptor_t *xtract_make_descriptors(void)
"Extract the fundamental frequency of an audio signal (wavelet method)");
strcpy(author, "Antoine Schmitt");
break;
+ case XTRACT_MIDICENT:
+ strcpy(name, "midicent");
+ strcpy(p_name, "Frequency to MIDI Cent conversion");
+ strcpy(desc, "Convert frequency in Hertz to Pitch in MIDI cents");
+ strcpy(p_desc, "Convert frequency in Hertz to Pitch in MIDI cents");
+ strcpy(author, "Jamie Bullock");
+ break;
case XTRACT_TONALITY:
strcpy(name, "tonality");
strcpy(p_name, "Tonality");
@@ -993,6 +1003,7 @@ xtract_function_descriptor_t *xtract_make_descriptors(void)
case XTRACT_F0:
case XTRACT_FAILSAFE_F0:
case XTRACT_WAVELET_F0:
+ case XTRACT_MIDICENT:
case XTRACT_FLATNESS_DB:
case XTRACT_TONALITY:
*argc = 1;
@@ -1117,6 +1128,7 @@ xtract_function_descriptor_t *xtract_make_descriptors(void)
case XTRACT_F0:
case XTRACT_FAILSAFE_F0:
case XTRACT_WAVELET_F0:
+ case XTRACT_MIDICENT:
case XTRACT_FLUX:
case XTRACT_LNORM:
case XTRACT_NONZERO_COUNT:
@@ -1195,6 +1207,7 @@ xtract_function_descriptor_t *xtract_make_descriptors(void)
case XTRACT_F0:
case XTRACT_FAILSAFE_F0:
case XTRACT_WAVELET_F0:
+ case XTRACT_MIDICENT:
case XTRACT_NONZERO_COUNT:
case XTRACT_AUTOCORRELATION:
case XTRACT_AMDF:
@@ -1238,7 +1251,7 @@ xtract_function_descriptor_t *xtract_make_descriptors(void)
case XTRACT_LNORM:
case XTRACT_NONZERO_COUNT:
case XTRACT_WINDOWED:
- *result_unit = XTRACT_ANY;
+ *result_unit = (xtract_unit_t)XTRACT_ANY;
*result_min = XTRACT_ANY;
*result_max = XTRACT_ANY;
break;
@@ -1251,7 +1264,7 @@ xtract_function_descriptor_t *xtract_make_descriptors(void)
case XTRACT_TRISTIMULUS_3:
case XTRACT_NOISINESS:
case XTRACT_SMOOTHNESS:
- *result_unit = XTRACT_NONE;
+ *result_unit = (xtract_unit_t)XTRACT_NONE;
*result_min = XTRACT_ANY; /* FIX: need to check these */
*result_max = XTRACT_ANY;
break;
@@ -1270,13 +1283,17 @@ xtract_function_descriptor_t *xtract_make_descriptors(void)
*result_min = 0.0;
*result_max = XTRACT_SR_UPPER_LIMIT / 2.0;
break;
+ case XTRACT_MIDICENT:
+ *result_unit = XTRACT_MIDI_CENT;
+ *result_min = 0.0;
+ *result_max = 12700;
case XTRACT_ZCR:
*result_unit = XTRACT_HERTZ;
*result_min = 0.0;
*result_max = XTRACT_ANY;
break;
case XTRACT_ODD_EVEN_RATIO:
- *result_unit = XTRACT_NONE;
+ *result_unit = (xtract_unit_t)XTRACT_NONE;
*result_min = 0.0;
*result_max = 1.0;
break;
@@ -1296,7 +1313,7 @@ xtract_function_descriptor_t *xtract_make_descriptors(void)
case XTRACT_LPC:
case XTRACT_LPCC:
default:
- *result_unit = XTRACT_UNKNOWN;
+ *result_unit = (xtract_unit_t)XTRACT_UNKNOWN;
*result_min = XTRACT_UNKNOWN;
*result_max = XTRACT_UNKNOWN;
break;
@@ -1319,11 +1336,11 @@ xtract_function_descriptor_t *xtract_make_descriptors(void)
case XTRACT_SUBBANDS:
case XTRACT_WINDOWED:
*result_format = XTRACT_ARBITRARY_SERIES;
- *result_unit = XTRACT_ANY;
+ *result_unit = (xtract_unit_t)XTRACT_ANY;
break;
case XTRACT_BARK_COEFFICIENTS:
*result_format = XTRACT_BARK_COEFFS;
- *result_unit = XTRACT_UNKNOWN; /* FIX: check */
+ *result_unit = (xtract_unit_t)XTRACT_UNKNOWN; /* FIX: check */
break;
case XTRACT_PEAK_SPECTRUM:
case XTRACT_SPECTRUM:
@@ -1335,15 +1352,15 @@ xtract_function_descriptor_t *xtract_make_descriptors(void)
break;
case XTRACT_MFCC:
*result_format = XTRACT_MEL_COEFFS;
- *result_unit = XTRACT_UNKNOWN; /* FIX: check */
+ *result_unit = (xtract_unit_t)XTRACT_UNKNOWN; /* FIX: check */
break;
case XTRACT_LPC:
*result_format = XTRACT_LPC_COEFFS;
- *result_unit = XTRACT_UNKNOWN;
+ *result_unit = (xtract_unit_t)XTRACT_UNKNOWN;
break;
case XTRACT_LPCC:
*result_format = XTRACT_LPCC_COEFFS;
- *result_unit = XTRACT_UNKNOWN;
+ *result_unit = (xtract_unit_t)XTRACT_UNKNOWN;
break;
default:
break;