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