BogaudioModules

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

Pulse.hpp (1315B)


      1 #pragma once
      2 
      3 #include "bogaudio.hpp"
      4 #include "vco_base.hpp"
      5 
      6 extern Model* modelPulse;
      7 
      8 namespace bogaudio {
      9 
     10 struct Pulse : VCOBase {
     11 	enum ParamsIds {
     12 		FREQUENCY_PARAM,
     13 		SLOW_PARAM,
     14 		PW_PARAM,
     15 		PWM_PARAM,
     16 		NUM_PARAMS
     17 	};
     18 
     19 	enum InputsIds {
     20 		PITCH_INPUT,
     21 		PWM_INPUT,
     22 		SYNC_INPUT,
     23 		NUM_INPUTS
     24 	};
     25 
     26 	enum OutputsIds {
     27 		OUT_OUTPUT,
     28 		NUM_OUTPUTS
     29 	};
     30 
     31 	Pulse()
     32 	: VCOBase(
     33 		FREQUENCY_PARAM,
     34 		-1,
     35 		PITCH_INPUT,
     36 		SYNC_INPUT,
     37 		-1
     38 	)
     39 	{
     40 		config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS);
     41 		configParam<VCOFrequencyParamQuantity>(FREQUENCY_PARAM, -3.0f, 6.0f, 0.0f, "Frequency", " Hz");
     42 		configButton(SLOW_PARAM, "Slow mode");
     43 		configParam(PW_PARAM, -1.0f, 1.0f, 0.0f, "Pulse width", "%", 0.0f, 100.0f*0.5f*(1.0f - 2.0f * SquareOscillator::minPulseWidth), 50.0f);
     44 		configParam(PWM_PARAM, -1.0f, 1.0f, 0.0f, "Pulse width CV amount");
     45 
     46 		configInput(PITCH_INPUT, "Pitch (1V/octave)");
     47 		configInput(PWM_INPUT, "Pulse width CV");
     48 		configInput(SYNC_INPUT, "Sync");
     49 
     50 		configOutput(OUT_OUTPUT, "Pulse");
     51 	}
     52 
     53 	json_t* saveToJson(json_t* root) override;
     54 	void loadFromJson(json_t* root) override;
     55 	bool active() override;
     56 	void addChannel(int c) override;
     57 	void modulate() override;
     58 	void modulateChannel(int c) override;
     59 	void processChannel(const ProcessArgs& args, int c) override;
     60 };
     61 
     62 } // namespace bogaudio