Assign.hpp (1416B)
1 #pragma once 2 3 #include "bogaudio.hpp" 4 5 extern Model* modelAssign; 6 7 namespace bogaudio { 8 9 struct Assign : BGModule { 10 enum ParamsIds { 11 CHANNELS_PARAM, 12 NUM_PARAMS 13 }; 14 15 enum InputsIds { 16 PITCH_INPUT, 17 GATE_INPUT, 18 RESET_INPUT, 19 NUM_INPUTS 20 }; 21 22 enum OutputsIds { 23 PITCH_OUTPUT, 24 GATE_OUTPUT, 25 NUM_OUTPUTS 26 }; 27 28 int _channelsOut; 29 Trigger _resetTrigger; 30 Trigger _gateTrigger[maxChannels]; 31 bool _gateHigh[maxChannels] {}; 32 int _pitchInAssignment[maxChannels] {}; 33 int _gateInAssignment[maxChannels] {}; 34 int _pitchOutAssignment[maxChannels] {}; 35 int _gateOutAssignment[maxChannels] {}; 36 float _lastPitchOut[maxChannels] {}; 37 unsigned long _assignedAtStep[maxChannels] {}; 38 int _nextAssign = 0; 39 unsigned long _step = 0; 40 41 Assign() { 42 config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS); 43 configParam(CHANNELS_PARAM, 1.0f, 16.0f, 0.0f, "Channels"); 44 paramQuantities[CHANNELS_PARAM]->snapEnabled = true; 45 46 configInput(PITCH_INPUT, "Pitch (1V/octave)"); 47 configInput(GATE_INPUT, "Gate"); 48 configInput(RESET_INPUT, "Reset"); 49 50 configOutput(PITCH_OUTPUT, "Pitch (1V/octave)"); 51 configOutput(GATE_OUTPUT, "Gate"); 52 } 53 54 void reset() override; 55 int channels() override; 56 void addChannel(int c) override; 57 void removeChannel(int c) override; 58 void modulate() override; 59 void processChannel(const ProcessArgs& args, int c) override {}; 60 void postProcess(const ProcessArgs& args) override; 61 }; 62 63 } // namespace bogaudio