Manual.hpp (1476B)
1 #pragma once 2 3 #include "bogaudio.hpp" 4 #include "trigger_on_load.hpp" 5 #include "dsp/signal.hpp" 6 7 extern Model* modelManual; 8 9 namespace bogaudio { 10 11 struct Manual : TriggerOnLoadModule { 12 enum ParamsIds { 13 TRIGGER_PARAM, 14 NUM_PARAMS 15 }; 16 17 enum InputsIds { 18 NUM_INPUTS 19 }; 20 21 enum OutputsIds { 22 OUT1_OUTPUT, 23 OUT2_OUTPUT, 24 OUT3_OUTPUT, 25 OUT4_OUTPUT, 26 OUT5_OUTPUT, 27 OUT6_OUTPUT, 28 OUT7_OUTPUT, 29 OUT8_OUTPUT, 30 NUM_OUTPUTS 31 }; 32 33 Trigger _trigger; 34 rack::dsp::PulseGenerator _pulse; 35 float _sampleTime; 36 bogaudio::dsp::Timer* _initialDelay = NULL; 37 float _outputScale = 1.0f; 38 39 Manual() { 40 config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS); 41 configButton(TRIGGER_PARAM, "Trigger"); 42 43 configOutput(OUT1_OUTPUT, "Trigger"); 44 configOutput(OUT2_OUTPUT, "Trigger"); 45 configOutput(OUT3_OUTPUT, "Trigger"); 46 configOutput(OUT4_OUTPUT, "Trigger"); 47 configOutput(OUT5_OUTPUT, "Trigger"); 48 configOutput(OUT6_OUTPUT, "Trigger"); 49 configOutput(OUT7_OUTPUT, "Trigger"); 50 configOutput(OUT8_OUTPUT, "Trigger"); 51 52 _triggerOnLoad = false; 53 _initialDelay = new bogaudio::dsp::Timer(APP->engine->getSampleRate(), 0.01f); 54 } 55 virtual ~Manual() { 56 if (_initialDelay) { 57 delete _initialDelay; 58 } 59 } 60 61 void reset() override; 62 void sampleRateChange() override; 63 json_t* saveToJson(json_t* root) override; 64 void loadFromJson(json_t* root) override; 65 void processAll(const ProcessArgs& args) override; 66 bool shouldTriggerOnNextLoad() override { 67 return true; 68 } 69 }; 70 71 } // namespace bogaudio