BogaudioModules

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

slew_common.hpp (841B)


      1 #pragma once
      2 
      3 #include "bogaudio.hpp"
      4 #include "dsp/signal.hpp"
      5 
      6 using namespace bogaudio::dsp;
      7 
      8 struct RiseFallShapedSlewLimiter {
      9 	enum ShapeCVMode {
     10 		OFF_SCVM,
     11 		ON_SCVM,
     12 		INVERTED_SCVM
     13 	};
     14 
     15 	bool _rising = true;
     16 	float _last = 0.0f;
     17 	ShapedSlewLimiter _rise;
     18 	ShapedSlewLimiter _fall;
     19 
     20 	float timeMS(int c, Param& param, Input* input, float maxMS);
     21 	float shape(int c, Param& param, bool invert = false, Input* cv = NULL, ShapeCVMode mode = OFF_SCVM);
     22 	void modulate(
     23 		float sampleRate,
     24 		Param& riseParam,
     25 		Input* riseInput,
     26 		float riseMaxMS,
     27 		Param& riseShapeParam,
     28 		Param& fallParam,
     29 		Input* fallInput,
     30 		float fallMaxMS,
     31 		Param& fallShapeParam,
     32 		int c,
     33 		bool invertRiseShape = false,
     34 		Input* shapeCV = NULL,
     35 		ShapeCVMode riseShapeMode = OFF_SCVM,
     36 		ShapeCVMode fallShapeMode = OFF_SCVM
     37 	);
     38 	float next(float sample);
     39 };