BogaudioModules

BogaudioModules for VCV Rack
Log | Files | Refs | README | LICENSE

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