CVD.hpp (1337B)
1 #pragma once 2 3 #include "bogaudio.hpp" 4 #include "dsp/signal.hpp" 5 6 using namespace bogaudio::dsp; 7 8 extern Model* modelCVD; 9 10 namespace bogaudio { 11 12 struct CVD : BGModule { 13 enum ParamsIds { 14 TIME_PARAM, 15 TIME_SCALE_PARAM, 16 MIX_PARAM, 17 NUM_PARAMS 18 }; 19 20 enum InputsIds { 21 TIME_INPUT, 22 MIX_INPUT, 23 IN_INPUT, 24 NUM_INPUTS 25 }; 26 27 enum OutputsIds { 28 OUT_OUTPUT, 29 NUM_OUTPUTS 30 }; 31 32 struct Engine { 33 DelayLine delay; 34 CrossFader mix; 35 36 Engine() : delay(1000.0f, 10000.0f) {} 37 38 void sampleRateChange(); 39 }; 40 Engine* _engines[maxChannels] {}; 41 42 CVD() { 43 config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS); 44 configParam(TIME_PARAM, 0.0f, 1.0f, 0.5f, "Time base", " s"); 45 configParam(TIME_SCALE_PARAM, 0.0f, 2.0f, 1.0f, "Time scale", "", 10.0f, 0.1f); 46 paramQuantities[TIME_SCALE_PARAM]->snapEnabled = true; 47 configParam(MIX_PARAM, -1.0f, 1.0f, 0.0f, "Dry wet mix", "%", 0.0f, 100.0f); 48 configBypass(IN_INPUT, OUT_OUTPUT); 49 50 configInput(TIME_INPUT, "Time CV"); 51 configInput(MIX_INPUT, "Dry/wet CV"); 52 configInput(IN_INPUT, "Signal"); 53 54 configOutput(OUT_OUTPUT, "Signal"); 55 } 56 57 void sampleRateChange() override; 58 int channels() override; 59 void addChannel(int c) override; 60 void removeChannel(int c) override; 61 void modulateChannel(int c) override; 62 void processChannel(const ProcessArgs& args, int c) override; 63 }; 64 65 } // namespace bogaudio