BogaudioModules

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

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