int decode_frequency( pbs_attribute *patr, const char *name, /* pbs_attribute name */ const char *rescn, /* resource name, unused here */ const char *val, /* pbs_attribute value */ int perm) /* only used for resources */ { patr->at_val.at_frequency.frequency_type = Invalid; patr->at_val.at_frequency.mhz = 0; if ((val != NULL) && (val[0] != '\0')) { if (to_frequency(val, &patr->at_val.at_frequency) != 0) { return(PBSE_BADATVAL); } patr->at_flags |= ATR_VFLAG_SET | ATR_VFLAG_MODIFY; } else { patr->at_flags = (patr->at_flags & ~ATR_VFLAG_SET) | ATR_VFLAG_MODIFY; } return(0); }
#include "music_utils.hpp" float to_frequency(int note) { note -= 10; return 440.0 * pow(2.0, (double)note / 12.0); } std::unordered_map<int, double> scale { { 1, to_frequency(1) }, { 2, to_frequency(3) }, { 3, to_frequency(5) }, { 4, to_frequency(6) }, { 5, to_frequency(8) }, { 6, to_frequency(10) }, { 7, to_frequency(12) }, };