diff --git a/src/Muxlicer.cpp b/src/Muxlicer.cpp index 7a9b838..43d76cc 100644 --- a/src/Muxlicer.cpp +++ b/src/Muxlicer.cpp @@ -178,11 +178,9 @@ struct MultDivClock { } }; -static std::vector getClockOptions() { - return std::vector {-16, -8, -4, -3, -2, 1, 2, 3, 4, 8, 16}; -} +static const std::vector clockOptions = {-16, -8, -4, -3, -2, 1, 2, 3, 4, 8, 16}; -std::string getClockOptionString(const int clockOption) { +inline std::string getClockOptionString(const int clockOption) { return (clockOption < 0) ? ("x 1/" + std::to_string(-clockOption)) : ("x " + std::to_string(clockOption)); } @@ -282,7 +280,7 @@ struct Muxlicer : Module { struct TapTempoKnobParamQuantity : ParamQuantity { std::string getDisplayValueString() override { if (module != nullptr) { - const std::vector clockOptions = getClockOptions(); + const int clockOptionIndex = clamp(int(ParamQuantity::getValue()), 0, clockOptions.size()); return getClockOptionString(clockOptions[clockOptionIndex]); } @@ -297,7 +295,7 @@ struct Muxlicer : Module { configParam(Muxlicer::PLAY_PARAM, STATE_PLAY_ONCE, STATE_PLAY, STATE_STOPPED, "Play switch"); configParam(Muxlicer::ADDRESS_PARAM, -1.f, 7.f, -1.f, "Address"); configParam(Muxlicer::GATE_MODE_PARAM, -1.f, 8.f, 0.f, "Gate mode"); - const int numClockOptions = getClockOptions().size(); + const int numClockOptions = clockOptions.size(); configParam(Muxlicer::TAP_TEMPO_PARAM, 0, numClockOptions - 1, numClockOptions / 2, "Main clock mult/div"); for (int i = 0; i < SEQUENCE_LENGTH; ++i) { @@ -328,8 +326,7 @@ struct Muxlicer : Module { externalClockPulseReceived = true; tapped = false; } - - const std::vector clockOptions = getClockOptions(); + const int clockOptionFromDial = clockOptions[int(params[TAP_TEMPO_PARAM].getValue())]; mainClockMultDiv.multDiv = clockOptionFromDial; @@ -745,7 +742,7 @@ struct MuxlicerWidget : ModuleWidget { Menu* createChildMenu() override { Menu* menu = new Menu; - for (int clockOption : getClockOptions()) { + for (int clockOption : clockOptions) { std::string optionString = getClockOptionString(clockOption); OutputClockScalingChildItem* clockItem = createMenuItem(optionString, CHECKMARK(module->outputClockMultDiv.multDiv == clockOption)); @@ -775,7 +772,7 @@ struct MuxlicerWidget : ModuleWidget { Menu* menu = new Menu; int i = 0; - for (int clockOption : getClockOptions()) { + for (int clockOption : clockOptions) { std::string optionString = getClockOptionString(clockOption); MainClockScalingChildItem* clockItem = createMenuItem(optionString, CHECKMARK(module->mainClockMultDiv.multDiv == clockOption));