FlipFlop.hpp (1318B)
1 #pragma once 2 3 #include "bogaudio.hpp" 4 #include "dsp/signal.hpp" 5 6 using namespace bogaudio::dsp; 7 8 extern Model* modelFlipFlop; 9 10 namespace bogaudio { 11 12 struct FlipFlop : BGModule { 13 enum ParamsIds { 14 NUM_PARAMS 15 }; 16 17 enum InputsIds { 18 IN1_INPUT, 19 RESET1_INPUT, 20 IN2_INPUT, 21 RESET2_INPUT, 22 NUM_INPUTS 23 }; 24 25 enum OutputsIds { 26 A1_OUTPUT, 27 B1_OUTPUT, 28 A2_OUTPUT, 29 B2_OUTPUT, 30 NUM_OUTPUTS 31 }; 32 33 bool _flipped1[maxChannels] {}; 34 bool _flipped2[maxChannels] {}; 35 PositiveZeroCrossing _trigger1[maxChannels]; 36 Trigger _resetTrigger1[maxChannels]; 37 PositiveZeroCrossing _trigger2[maxChannels]; 38 Trigger _resetTrigger2[maxChannels]; 39 40 FlipFlop() { 41 config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS); 42 43 configInput(IN1_INPUT, "Trigger 1"); 44 configInput(RESET1_INPUT, "Reset 1"); 45 configInput(IN2_INPUT, "Trigger 2"); 46 configInput(RESET2_INPUT, "Reset 2"); 47 48 configOutput(A1_OUTPUT, "A1 gate"); 49 configOutput(B1_OUTPUT, "B1 gate"); 50 configOutput(A2_OUTPUT, "A2 gate"); 51 configOutput(B2_OUTPUT, "B2 gate"); 52 } 53 54 void reset() override; 55 void processAll(const ProcessArgs& args) override; 56 void channelStep( 57 int c, 58 int channels, 59 Input& triggerInput, 60 Input& resetInput, 61 Output& aOutput, 62 Output& bOutput, 63 PositiveZeroCrossing* trigger, 64 Trigger* resetTrigger, 65 bool* flipped 66 ); 67 }; 68 69 } // namespace bogaudio