BogaudioModules

BogaudioModules for VCV Rack
Log | Files | Refs | README | LICENSE

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