OneEight.hpp (1897B)
1 #pragma once 2 3 #include "bogaudio.hpp" 4 #include "addressable_sequence.hpp" 5 #include "dsp/signal.hpp" 6 7 using namespace bogaudio::dsp; 8 9 extern Model* modelOneEight; 10 11 namespace bogaudio { 12 13 struct OneEight : AddressableSequenceModule { 14 enum ParamsIds { 15 STEPS_PARAM, 16 DIRECTION_PARAM, 17 SELECT_PARAM, 18 NUM_PARAMS 19 }; 20 21 enum InputsIds { 22 CLOCK_INPUT, 23 RESET_INPUT, 24 SELECT_INPUT, 25 IN_INPUT, 26 NUM_INPUTS 27 }; 28 29 enum OutputsIds { 30 OUT1_OUTPUT, 31 OUT2_OUTPUT, 32 OUT3_OUTPUT, 33 OUT4_OUTPUT, 34 OUT5_OUTPUT, 35 OUT6_OUTPUT, 36 OUT7_OUTPUT, 37 OUT8_OUTPUT, 38 NUM_OUTPUTS 39 }; 40 41 enum LightsIds { 42 OUT1_LIGHT, 43 OUT2_LIGHT, 44 OUT3_LIGHT, 45 OUT4_LIGHT, 46 OUT5_LIGHT, 47 OUT6_LIGHT, 48 OUT7_LIGHT, 49 OUT8_LIGHT, 50 NUM_LIGHTS 51 }; 52 53 float _lightSums[8] {}; 54 55 OneEight() { 56 config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); 57 configParam(STEPS_PARAM, 1.0f, 8.0f, 8.0f, "Steps"); 58 paramQuantities[STEPS_PARAM]->snapEnabled = true; 59 configSwitch(DIRECTION_PARAM, 0.0f, 1.0f, 1.0f, "Direction", {"Reverse", "Forward"}); 60 configParam(SELECT_PARAM, 0.0f, 7.0f, 0.0f, "Select step"); 61 paramQuantities[SELECT_PARAM]->snapEnabled = true; 62 setInputIDs(CLOCK_INPUT, SELECT_INPUT); 63 configBypass(IN_INPUT, OUT1_OUTPUT); 64 65 configInput(CLOCK_INPUT, "Clock"); 66 configInput(RESET_INPUT, "Reset"); 67 configInput(SELECT_INPUT, "Select CV"); 68 configInput(IN_INPUT, "Signal"); 69 70 configOutput(OUT1_OUTPUT, "Signal 1"); 71 configOutput(OUT2_OUTPUT, "Signal 2"); 72 configOutput(OUT3_OUTPUT, "Signal 3"); 73 configOutput(OUT4_OUTPUT, "Signal 4"); 74 configOutput(OUT5_OUTPUT, "Signal 5"); 75 configOutput(OUT6_OUTPUT, "Signal 6"); 76 configOutput(OUT7_OUTPUT, "Signal 7"); 77 configOutput(OUT8_OUTPUT, "Signal 8"); 78 } 79 80 void processAlways(const ProcessArgs& args) override; 81 void processChannel(const ProcessArgs& args, int c) override; 82 void postProcessAlways(const ProcessArgs& args) override; 83 }; 84 85 } // namespace bogaudio