BogaudioModules

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

Matrix88Cv.hpp (4452B)


      1 #pragma once
      2 
      3 #include "Matrix88_shared.hpp"
      4 
      5 namespace bogaudio {
      6 
      7 typedef ChainableExpanderModule<Matrix88ExpanderMessage, Matrix88Element, 1, BGModule> Matrix88CvBase;
      8 
      9 struct Matrix88Cv : Matrix88CvBase {
     10 	enum ParamsIds {
     11 		NUM_PARAMS
     12 	};
     13 
     14 	enum InputsIds {
     15 		CV11_INPUT,
     16 		CV21_INPUT,
     17 		CV31_INPUT,
     18 		CV41_INPUT,
     19 		CV51_INPUT,
     20 		CV61_INPUT,
     21 		CV71_INPUT,
     22 		CV81_INPUT,
     23 		CV12_INPUT,
     24 		CV22_INPUT,
     25 		CV32_INPUT,
     26 		CV42_INPUT,
     27 		CV52_INPUT,
     28 		CV62_INPUT,
     29 		CV72_INPUT,
     30 		CV82_INPUT,
     31 		CV13_INPUT,
     32 		CV23_INPUT,
     33 		CV33_INPUT,
     34 		CV43_INPUT,
     35 		CV53_INPUT,
     36 		CV63_INPUT,
     37 		CV73_INPUT,
     38 		CV83_INPUT,
     39 		CV14_INPUT,
     40 		CV24_INPUT,
     41 		CV34_INPUT,
     42 		CV44_INPUT,
     43 		CV54_INPUT,
     44 		CV64_INPUT,
     45 		CV74_INPUT,
     46 		CV84_INPUT,
     47 		CV15_INPUT,
     48 		CV25_INPUT,
     49 		CV35_INPUT,
     50 		CV45_INPUT,
     51 		CV55_INPUT,
     52 		CV65_INPUT,
     53 		CV75_INPUT,
     54 		CV85_INPUT,
     55 		CV16_INPUT,
     56 		CV26_INPUT,
     57 		CV36_INPUT,
     58 		CV46_INPUT,
     59 		CV56_INPUT,
     60 		CV66_INPUT,
     61 		CV76_INPUT,
     62 		CV86_INPUT,
     63 		CV17_INPUT,
     64 		CV27_INPUT,
     65 		CV37_INPUT,
     66 		CV47_INPUT,
     67 		CV57_INPUT,
     68 		CV67_INPUT,
     69 		CV77_INPUT,
     70 		CV87_INPUT,
     71 		CV18_INPUT,
     72 		CV28_INPUT,
     73 		CV38_INPUT,
     74 		CV48_INPUT,
     75 		CV58_INPUT,
     76 		CV68_INPUT,
     77 		CV78_INPUT,
     78 		CV88_INPUT,
     79 		NUM_INPUTS
     80 	};
     81 
     82 	enum OutputsIds {
     83 		NUM_OUTPUTS
     84 	};
     85 
     86 	Input** _cvs = NULL;
     87 
     88 	Matrix88Cv() {
     89 		config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS);
     90 
     91 		configInput(CV11_INPUT, "Level 1A CV");
     92 		configInput(CV21_INPUT, "Level 2A CV");
     93 		configInput(CV31_INPUT, "Level 3A CV");
     94 		configInput(CV41_INPUT, "Level 4A CV");
     95 		configInput(CV51_INPUT, "Level 5A CV");
     96 		configInput(CV61_INPUT, "Level 6A CV");
     97 		configInput(CV71_INPUT, "Level 7A CV");
     98 		configInput(CV81_INPUT, "Level 8A CV");
     99 		configInput(CV12_INPUT, "Level 1B CV");
    100 		configInput(CV22_INPUT, "Level 2B CV");
    101 		configInput(CV32_INPUT, "Level 3B CV");
    102 		configInput(CV42_INPUT, "Level 4B CV");
    103 		configInput(CV52_INPUT, "Level 5B CV");
    104 		configInput(CV62_INPUT, "Level 6B CV");
    105 		configInput(CV72_INPUT, "Level 7B CV");
    106 		configInput(CV82_INPUT, "Level 8B CV");
    107 		configInput(CV13_INPUT, "Level 1C CV");
    108 		configInput(CV23_INPUT, "Level 2C CV");
    109 		configInput(CV33_INPUT, "Level 3C CV");
    110 		configInput(CV43_INPUT, "Level 4C CV");
    111 		configInput(CV53_INPUT, "Level 5C CV");
    112 		configInput(CV63_INPUT, "Level 6C CV");
    113 		configInput(CV73_INPUT, "Level 7C CV");
    114 		configInput(CV83_INPUT, "Level 8C CV");
    115 		configInput(CV14_INPUT, "Level 1D CV");
    116 		configInput(CV24_INPUT, "Level 2D CV");
    117 		configInput(CV34_INPUT, "Level 3D CV");
    118 		configInput(CV44_INPUT, "Level 4D CV");
    119 		configInput(CV54_INPUT, "Level 5D CV");
    120 		configInput(CV64_INPUT, "Level 6D CV");
    121 		configInput(CV74_INPUT, "Level 7D CV");
    122 		configInput(CV84_INPUT, "Level 8D CV");
    123 		configInput(CV15_INPUT, "Level 1E CV");
    124 		configInput(CV25_INPUT, "Level 2E CV");
    125 		configInput(CV35_INPUT, "Level 3E CV");
    126 		configInput(CV45_INPUT, "Level 4E CV");
    127 		configInput(CV55_INPUT, "Level 5E CV");
    128 		configInput(CV65_INPUT, "Level 6E CV");
    129 		configInput(CV75_INPUT, "Level 7E CV");
    130 		configInput(CV85_INPUT, "Level 8E CV");
    131 		configInput(CV16_INPUT, "Level 1F CV");
    132 		configInput(CV26_INPUT, "Level 2F CV");
    133 		configInput(CV36_INPUT, "Level 3F CV");
    134 		configInput(CV46_INPUT, "Level 4F CV");
    135 		configInput(CV56_INPUT, "Level 5F CV");
    136 		configInput(CV66_INPUT, "Level 6F CV");
    137 		configInput(CV76_INPUT, "Level 7F CV");
    138 		configInput(CV86_INPUT, "Level 8F CV");
    139 		configInput(CV17_INPUT, "Level 1G CV");
    140 		configInput(CV27_INPUT, "Level 2G CV");
    141 		configInput(CV37_INPUT, "Level 3G CV");
    142 		configInput(CV47_INPUT, "Level 4G CV");
    143 		configInput(CV57_INPUT, "Level 5G CV");
    144 		configInput(CV67_INPUT, "Level 6G CV");
    145 		configInput(CV77_INPUT, "Level 7G CV");
    146 		configInput(CV87_INPUT, "Level 8G CV");
    147 		configInput(CV18_INPUT, "Level 1H CV");
    148 		configInput(CV28_INPUT, "Level 2H CV");
    149 		configInput(CV38_INPUT, "Level 3H CV");
    150 		configInput(CV48_INPUT, "Level 4H CV");
    151 		configInput(CV58_INPUT, "Level 5H CV");
    152 		configInput(CV68_INPUT, "Level 6H CV");
    153 		configInput(CV78_INPUT, "Level 7H CV");
    154 		configInput(CV88_INPUT, "Level 8H CV");
    155 
    156 		_cvs = new Input*[64];
    157 		for (int i = 0; i < 64; ++i) {
    158 			_cvs[i] = &inputs[CV11_INPUT + i];
    159 		}
    160 		setLocalElements({new Matrix88Element(NULL, _cvs, NULL)});
    161 		setBaseModelPredicate([](Model* m) { return m == modelMatrix88 || m == modelMatrix88M; });
    162 		setExpanderModelPredicate([](Model* m) { return m == modelMatrix88M; });
    163 	}
    164 	virtual ~Matrix88Cv() {
    165 		delete[] _cvs;
    166 	}
    167 
    168 	void processAlways(const ProcessArgs& args) override;
    169 };
    170 
    171 } // namespace bogaudio