Walk.hpp (1571B)
1 #pragma once 2 3 #include "bogaudio.hpp" 4 #include "dsp/noise.hpp" 5 #include "dsp/signal.hpp" 6 7 using namespace bogaudio::dsp; 8 9 extern Model* modelWalk; 10 11 namespace bogaudio { 12 13 struct Walk : BGModule { 14 enum ParamsIds { 15 RATE_PARAM, 16 OFFSET_PARAM, 17 SCALE_PARAM, 18 NUM_PARAMS 19 }; 20 21 enum InputsIds { 22 RATE_INPUT, 23 OFFSET_INPUT, 24 SCALE_INPUT, 25 JUMP_INPUT, 26 NUM_INPUTS 27 }; 28 29 enum OutputsIds { 30 OUT_OUTPUT, 31 NUM_OUTPUTS 32 }; 33 34 enum JumpMode { 35 JUMP_JUMPMODE, 36 TRACKHOLD_JUMPMODE, 37 SAMPLEHOLD_JUMPMODE 38 }; 39 40 float _offset[maxChannels] {}; 41 float _scale[maxChannels] {}; 42 Trigger _jumpTrigger[maxChannels]; 43 RandomWalk _walk[maxChannels]; 44 bogaudio::dsp::SlewLimiter _slew[maxChannels]; 45 float _lastOut[maxChannels] {}; 46 int _polyInputID = RATE_INPUT; 47 JumpMode _jumpMode = JUMP_JUMPMODE; 48 49 Walk() { 50 config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS); 51 configParam(RATE_PARAM, 0.0f, 1.0f, 0.1f, "Rate", "%", 0.0f, 100.0f); 52 configParam(OFFSET_PARAM, -1.0f, 1.0f, 0.0f, "Offset", " V", 0.0f, 5.0f); 53 configParam(SCALE_PARAM, 0.0f, 1.0f, 1.0f, "Scale", "%", 0.0f, 100.0f); 54 55 configInput(RATE_INPUT, "Rate CV"); 56 configInput(OFFSET_INPUT, "Offset CV"); 57 configInput(SCALE_INPUT, "Scale CV"); 58 configInput(JUMP_INPUT, "Trigger"); 59 60 configOutput(OUT_OUTPUT, "Signal"); 61 } 62 63 void reset() override; 64 void sampleRateChange() override; 65 json_t* saveToJson(json_t* root) override; 66 void loadFromJson(json_t* root) override; 67 int channels() override; 68 void modulateChannel(int c) override; 69 void processChannel(const ProcessArgs& args, int c) override; 70 }; 71 72 } // namespace bogaudio