Unison.hpp (986B)
1 #pragma once 2 3 #include "bogaudio.hpp" 4 5 extern Model* modelUnison; 6 7 namespace bogaudio { 8 9 struct Unison : BGModule { 10 enum ParamsIds { 11 CHANNELS_PARAM, 12 DETUNE_PARAM, 13 NUM_PARAMS 14 }; 15 16 enum InputsIds { 17 DETUNE_INPUT, 18 PITCH_INPUT, 19 GATE_INPUT, 20 NUM_INPUTS 21 }; 22 23 enum OutputsIds { 24 PITCH_OUTPUT, 25 GATE_OUTPUT, 26 NUM_OUTPUTS 27 }; 28 29 const float maxDetuneCents = 50.0f; 30 int _channels = 0; 31 float _cents = 0.0f; 32 33 Unison() { 34 config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS); 35 configParam(CHANNELS_PARAM, 1.0f, 16.0f, 1.0f, "Channels"); 36 paramQuantities[CHANNELS_PARAM]->snapEnabled = true; 37 configParam(DETUNE_PARAM, 0.0f, maxDetuneCents, 0.0f, "Detune"); 38 39 configInput(DETUNE_INPUT, "Detune CV"); 40 configInput(PITCH_INPUT, "Pitch (1V/octave)"); 41 configInput(GATE_INPUT, "Gate"); 42 43 configOutput(PITCH_OUTPUT, "Pitch (1V/octave)"); 44 configOutput(GATE_OUTPUT, "Gate"); 45 } 46 47 void modulate() override; 48 void processAll(const ProcessArgs& args) override; 49 }; 50 51 } // namespace bogaudio