Detune.hpp (1312B)
1 #pragma once 2 3 #include "bogaudio.hpp" 4 #include "dsp/pitch.hpp" 5 6 using namespace bogaudio::dsp; 7 8 extern Model* modelDetune; 9 10 namespace bogaudio { 11 12 struct Detune : BGModule { 13 enum ParamsIds { 14 CENTS_PARAM, 15 NUM_PARAMS 16 }; 17 18 enum InputsIds { 19 CV_INPUT, 20 IN_INPUT, 21 NUM_INPUTS 22 }; 23 24 enum OutputsIds { 25 THRU_OUTPUT, 26 OUT_PLUS_OUTPUT, 27 OUT_MINUS_OUTPUT, 28 NUM_OUTPUTS 29 }; 30 31 float _cents[maxChannels] {}; 32 float _lastCents[maxChannels]; 33 float _lastInCV[maxChannels]; 34 float _plusCV[maxChannels] {}; 35 float _minusCV[maxChannels] {}; 36 37 Detune() { 38 config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS); 39 configParam(CENTS_PARAM, 0.0f, 50.0f, 0.0f, "Cents"); 40 paramQuantities[CENTS_PARAM]->snapEnabled = true; 41 42 configInput(CV_INPUT, "Detune CV"); 43 configInput(IN_INPUT, "Pitch (1V/octave)"); 44 45 configOutput(THRU_OUTPUT, "Pitch through (1V/octave)"); 46 configOutput(OUT_PLUS_OUTPUT, "Raised pitch (1V/octave)"); 47 configOutput(OUT_MINUS_OUTPUT, "Lowered pitch (1V/octave)"); 48 49 for (int i = 0; i < maxChannels; ++i) { 50 _lastCents[i] = -1.0f; 51 _lastInCV[i] = -1000.0f; 52 } 53 } 54 55 bool active() override; 56 int channels() override; 57 void modulateChannel(int c) override; 58 void processChannel(const ProcessArgs& args, int c) override; 59 void processBypass(const ProcessArgs& args) override; 60 }; 61 62 } // namespace bogaudio