aboutsummaryrefslogtreecommitdiff
path: root/src/descriptors.c
diff options
context:
space:
mode:
authorJamie Bullock <jamie@jamiebullock.com>2014-03-11 18:14:45 +0000
committerJamie Bullock <jamie@jamiebullock.com>2014-03-11 18:14:45 +0000
commitc7e8efcbea13ca27f1b6f5619f05e1f79d36ba55 (patch)
tree71f8135a795027a386f4e91f4c773346a0d09d5c /src/descriptors.c
parent14c4d07be16ce3ba36d28eeef507afdc1afed8f6 (diff)
downloadLibXtract-c7e8efcbea13ca27f1b6f5619f05e1f79d36ba55.tar.gz
LibXtract-c7e8efcbea13ca27f1b6f5619f05e1f79d36ba55.tar.bz2
LibXtract-c7e8efcbea13ca27f1b6f5619f05e1f79d36ba55.zip
Add xtract_midicent() convenience function to convert from frequency to MIDI cent
Diffstat (limited to 'src/descriptors.c')
-rw-r--r--src/descriptors.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/descriptors.c b/src/descriptors.c
index 044f3d4..efcf02d 100644
--- a/src/descriptors.c
+++ b/src/descriptors.c
@@ -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;
@@ -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;
@@ -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:
@@ -1270,6 +1283,10 @@ 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;