BogaudioModules

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

AddrSeqX.hpp (2116B)


      1 #pragma once
      2 
      3 #include "AddrSeq_shared.hpp"
      4 
      5 namespace bogaudio {
      6 
      7 typedef ChainableExpanderModule<AddrSeqExpanderMessage, AddrSeqStep, 8, BGModule> AddrSeqXBase;
      8 
      9 struct AddrSeqX : AddrSeqXBase, OutputRange {
     10 	enum ParamsIds {
     11 		OUT1_PARAM,
     12 		OUT2_PARAM,
     13 		OUT3_PARAM,
     14 		OUT4_PARAM,
     15 		OUT5_PARAM,
     16 		OUT6_PARAM,
     17 		OUT7_PARAM,
     18 		OUT8_PARAM,
     19 		NUM_PARAMS
     20 	};
     21 
     22 	enum InputsIds {
     23 		NUM_INPUTS
     24 	};
     25 
     26 	enum OutputsIds {
     27 		NUM_OUTPUTS
     28 	};
     29 
     30 	enum LightsIds {
     31 		OUT1_LIGHT,
     32 		OUT2_LIGHT,
     33 		OUT3_LIGHT,
     34 		OUT4_LIGHT,
     35 		OUT5_LIGHT,
     36 		OUT6_LIGHT,
     37 		OUT7_LIGHT,
     38 		OUT8_LIGHT,
     39 		NUM_LIGHTS
     40 	};
     41 
     42 	AddrSeqX() {
     43 		config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS);
     44 		configParam<OutputRangeParamQuantity>(OUT1_PARAM, -1.0f, 1.0f, 0.0f, "Step 1", " V");
     45 		configParam<OutputRangeParamQuantity>(OUT2_PARAM, -1.0f, 1.0f, 0.0f, "Step 2", " V");
     46 		configParam<OutputRangeParamQuantity>(OUT3_PARAM, -1.0f, 1.0f, 0.0f, "Step 3", " V");
     47 		configParam<OutputRangeParamQuantity>(OUT4_PARAM, -1.0f, 1.0f, 0.0f, "Step 4", " V");
     48 		configParam<OutputRangeParamQuantity>(OUT5_PARAM, -1.0f, 1.0f, 0.0f, "Step 5", " V");
     49 		configParam<OutputRangeParamQuantity>(OUT6_PARAM, -1.0f, 1.0f, 0.0f, "Step 6", " V");
     50 		configParam<OutputRangeParamQuantity>(OUT7_PARAM, -1.0f, 1.0f, 0.0f, "Step 7", " V");
     51 		configParam<OutputRangeParamQuantity>(OUT8_PARAM, -1.0f, 1.0f, 0.0f, "Step 8", " V");
     52 
     53 		setLocalElements({
     54 			new AddrSeqStep(params[OUT1_PARAM], lights[OUT1_LIGHT]),
     55 			new AddrSeqStep(params[OUT2_PARAM], lights[OUT2_LIGHT]),
     56 			new AddrSeqStep(params[OUT3_PARAM], lights[OUT3_LIGHT]),
     57 			new AddrSeqStep(params[OUT4_PARAM], lights[OUT4_LIGHT]),
     58 			new AddrSeqStep(params[OUT5_PARAM], lights[OUT5_LIGHT]),
     59 			new AddrSeqStep(params[OUT6_PARAM], lights[OUT6_LIGHT]),
     60 			new AddrSeqStep(params[OUT7_PARAM], lights[OUT7_LIGHT]),
     61 			new AddrSeqStep(params[OUT8_PARAM], lights[OUT8_LIGHT])
     62 		});
     63 		setBaseModelPredicate([](Model* m) { return m == modelAddrSeq || m == modelAddrSeqX; });
     64 		setExpanderModelPredicate([](Model* m) { return m == modelAddrSeqX; });
     65 	}
     66 
     67 	void processAlways(const ProcessArgs& args) override;
     68 };
     69 
     70 } // namespace bogaudio