#include "XRSequenceInstrumentTrackProgram.h" #include #include void SequenceInstrumentTrackProgram::toggleState() { switch (this->state) { case (unsigned int) InstrumentTrackProgramState::REST : this->state = (unsigned int) InstrumentTrackProgramState::ACTIVE; break; case (unsigned int) InstrumentTrackProgramState::ACTIVE : this->state = (unsigned int) InstrumentTrackProgramState::REST; break; } } void SequenceInstrumentTrackProgram::undoChanges() { unsigned int &bn = this->bankNumber; unsigned int &pn = this->programNumber; unsigned int &bl = this->barLength; unsigned int &s = this->state; unsigned int &ls = this->lastStep; unsigned int &oBn = this->oldBankNumber; unsigned int &oPn = this->oldProgramNumber; unsigned int &oBl = this->oldBarLength; unsigned int &oS = this->oldState; unsigned int &oLs = this->oldLastStep; bn = oBn; pn = oPn; bl = oBl; s = oS; ls = oLs; } void SequenceInstrumentTrackProgram::setConfigProp(unsigned int prop, unsigned int val) { unsigned int &bn = this->bankNumber; unsigned int &pn = this->programNumber; unsigned int &bl = this->barLength; unsigned int &s = this->state; unsigned int &ls = this->lastStep; switch (prop) { case (int)ConfigPropSettingsType::BANK_NUMBER : bn = val; break; case (int)ConfigPropSettingsType::PROGRAM_NUMBER : pn = val; break; case (int)ConfigPropSettingsType::BAR_LENGTH : bl = val; break; case (int)ConfigPropSettingsType::STATE : s = val; break; case (int)ConfigPropSettingsType::LAST_STEP : ls = val; break; default: break; } } /** * USE ONLY WITH STRING VECTOR OPTIONS * @param unsigned int propIdx * @param unsigned int opt * @return */ std::string SequenceInstrumentTrackProgram::getConfigPropSettingOption(unsigned int propIdx, unsigned int opt) const { ConfigPropSettingsTemplate propOpts = this->configPropOptions; // bank num or state prop if (propIdx == (int)ConfigPropSettingsType::BANK_NUMBER || propIdx == (int)ConfigPropSettingsType::STATE) { std::vector opts = propIdx == (int)ConfigPropSettingsType::BANK_NUMBER ? propOpts.bankNumberOpts : propOpts.stateOpts; // are there any prop options ? safe to parse ? if (!opts.empty() && opts.size() >= opt) { std::string cOpt = opts.at(opt); return cOpt; } } return "N/A"; } unsigned int SequenceInstrumentTrackProgram::getConfigPropSettingMax(unsigned int prop) const { ConfigPropSettingsTemplate propOpts = this->configPropOptions; unsigned int max = 128; // default max (for 8-bit values for things like program num, etc) if (prop == (int)ConfigPropSettingsType::BANK_NUMBER || prop == (int)ConfigPropSettingsType::STATE) { std::vector opts = prop == (int)ConfigPropSettingsType::BANK_NUMBER ? propOpts.bankNumberOpts : propOpts.stateOpts; max = opts.size(); } else if (prop == (int)ConfigPropSettingsType::BAR_LENGTH) { max = 99; } else if (prop == (int)ConfigPropSettingsType::LAST_STEP) { max = 16; } return max; } unsigned int SequenceInstrumentTrackProgram::getConfigPropCount() { return SequenceInstrumentTrackProgram::configPropCount; } std::string SequenceInstrumentTrackProgram::getConfigPropSettingValue(unsigned int prop) const { std::string numStr; std::ostringstream numStrTmp; switch (prop) { case (int)ConfigPropSettingsType::BANK_NUMBER : return this->getConfigPropSettingOption(prop, this->bankNumber); case (int)ConfigPropSettingsType::PROGRAM_NUMBER : numStrTmp << this->programNumber; numStr = numStrTmp.str(); return numStr; case (int)ConfigPropSettingsType::BAR_LENGTH : numStrTmp << this->barLength; numStr = numStrTmp.str(); return numStr; case (int)ConfigPropSettingsType::STATE : return this->getConfigPropSettingOption(prop, this->state); case (int)ConfigPropSettingsType::LAST_STEP : numStrTmp << this->lastStep; numStr = numStrTmp.str(); return numStr; default: return "N/A"; } } const char* SequenceInstrumentTrackProgram::getConfigPropName(unsigned int prop) { return this->configPropNames[prop]; } const char* SequenceInstrumentTrackProgram::getConfigPropNameShort(unsigned int prop) { return this->configPropNamesShort[prop]; }