BogaudioModules

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

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