PgmrX.hpp (3948B)
1 #pragma once 2 3 #include "Pgmr_shared.hpp" 4 5 namespace bogaudio { 6 7 typedef ChainableExpanderModule<PgmrExpanderMessage, PgmrStep, 4, BGModule> PgmrXBase; 8 9 struct PgmrX : PgmrXBase, OutputRange { 10 enum ParamsIds { 11 CVA1_PARAM, 12 CVB1_PARAM, 13 CVC1_PARAM, 14 CVD1_PARAM, 15 SELECT1_PARAM, 16 CVA2_PARAM, 17 CVB2_PARAM, 18 CVC2_PARAM, 19 CVD2_PARAM, 20 SELECT2_PARAM, 21 CVA3_PARAM, 22 CVB3_PARAM, 23 CVC3_PARAM, 24 CVD3_PARAM, 25 SELECT3_PARAM, 26 CVA4_PARAM, 27 CVB4_PARAM, 28 CVC4_PARAM, 29 CVD4_PARAM, 30 SELECT4_PARAM, 31 NUM_PARAMS 32 }; 33 34 enum InputsIds { 35 SELECT1_INPUT, 36 SELECT2_INPUT, 37 SELECT3_INPUT, 38 SELECT4_INPUT, 39 NUM_INPUTS 40 }; 41 42 enum OutputsIds { 43 SELECT1_OUTPUT, 44 SELECT2_OUTPUT, 45 SELECT3_OUTPUT, 46 SELECT4_OUTPUT, 47 NUM_OUTPUTS 48 }; 49 50 enum LightsIds { 51 SELECT1_LIGHT, 52 SELECT2_LIGHT, 53 SELECT3_LIGHT, 54 SELECT4_LIGHT, 55 NUM_LIGHTS 56 }; 57 58 PgmrX() { 59 config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); 60 configParam<OutputRangeParamQuantity>(CVA1_PARAM, -1.0f, 1.0f, 0.0f, "Step 1A", " V"); 61 configParam<OutputRangeParamQuantity>(CVB1_PARAM, -1.0f, 1.0f, 0.0f, "Step 1B", " V"); 62 configParam<OutputRangeParamQuantity>(CVC1_PARAM, -1.0f, 1.0f, 0.0f, "Step 1C", " V"); 63 configParam<OutputRangeParamQuantity>(CVD1_PARAM, -1.0f, 1.0f, 0.0f, "Step 1D", " V"); 64 configButton(SELECT1_PARAM, "Select 1"); 65 configParam<OutputRangeParamQuantity>(CVA2_PARAM, -1.0f, 1.0f, 0.0f, "Step 2A", " V"); 66 configParam<OutputRangeParamQuantity>(CVB2_PARAM, -1.0f, 1.0f, 0.0f, "Step 2B", " V"); 67 configParam<OutputRangeParamQuantity>(CVC2_PARAM, -1.0f, 1.0f, 0.0f, "Step 2C", " V"); 68 configParam<OutputRangeParamQuantity>(CVD2_PARAM, -1.0f, 1.0f, 0.0f, "Step 2D", " V"); 69 configButton(SELECT2_PARAM, "Select 2"); 70 configParam<OutputRangeParamQuantity>(CVA3_PARAM, -1.0f, 1.0f, 0.0f, "Step 3A", " V"); 71 configParam<OutputRangeParamQuantity>(CVB3_PARAM, -1.0f, 1.0f, 0.0f, "Step 3B", " V"); 72 configParam<OutputRangeParamQuantity>(CVC3_PARAM, -1.0f, 1.0f, 0.0f, "Step 3C", " V"); 73 configParam<OutputRangeParamQuantity>(CVD3_PARAM, -1.0f, 1.0f, 0.0f, "Step 3D", " V"); 74 configButton(SELECT3_PARAM, "Select 3"); 75 configParam<OutputRangeParamQuantity>(CVA4_PARAM, -1.0f, 1.0f, 0.0f, "Step 4A", " V"); 76 configParam<OutputRangeParamQuantity>(CVB4_PARAM, -1.0f, 1.0f, 0.0f, "Step 4B", " V"); 77 configParam<OutputRangeParamQuantity>(CVC4_PARAM, -1.0f, 1.0f, 0.0f, "Step 4C", " V"); 78 configParam<OutputRangeParamQuantity>(CVD4_PARAM, -1.0f, 1.0f, 0.0f, "Step 4D", " V"); 79 configButton(SELECT4_PARAM, "Select 4"); 80 81 configInput(SELECT1_INPUT, "Select 1 trigger"); 82 configInput(SELECT2_INPUT, "Select 2 trigger"); 83 configInput(SELECT3_INPUT, "Select 3 trigger"); 84 configInput(SELECT4_INPUT, "Select 4 trigger"); 85 86 configOutput(SELECT1_OUTPUT, "Select 1 trigger"); 87 configOutput(SELECT2_OUTPUT, "Select 2 trigger"); 88 configOutput(SELECT3_OUTPUT, "Select 3 trigger"); 89 configOutput(SELECT4_OUTPUT, "Select 4 trigger"); 90 91 setLocalElements({ 92 new PgmrStep(params[CVA1_PARAM], params[CVB1_PARAM], params[CVC1_PARAM], params[CVD1_PARAM], lights[SELECT1_LIGHT], params[SELECT1_PARAM], inputs[SELECT1_INPUT], outputs[SELECT1_OUTPUT]), 93 new PgmrStep(params[CVA2_PARAM], params[CVB2_PARAM], params[CVC2_PARAM], params[CVD2_PARAM], lights[SELECT2_LIGHT], params[SELECT2_PARAM], inputs[SELECT2_INPUT], outputs[SELECT2_OUTPUT]), 94 new PgmrStep(params[CVA3_PARAM], params[CVB3_PARAM], params[CVC3_PARAM], params[CVD3_PARAM], lights[SELECT3_LIGHT], params[SELECT3_PARAM], inputs[SELECT3_INPUT], outputs[SELECT3_OUTPUT]), 95 new PgmrStep(params[CVA4_PARAM], params[CVB4_PARAM], params[CVC4_PARAM], params[CVD4_PARAM], lights[SELECT4_LIGHT], params[SELECT4_PARAM], inputs[SELECT4_INPUT], outputs[SELECT4_OUTPUT]) 96 }); 97 setBaseModelPredicate([](Model* m) { return m == modelPgmr || m == modelPgmrX; }); 98 setExpanderModelPredicate([](Model* m) { return m == modelPgmrX; }); 99 } 100 101 void processAlways(const ProcessArgs& args) override; 102 }; 103 104 } // namespace bogaudio