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 };