lpg_common.hpp (1325B)
1 #pragma once 2 3 #include "slew_common.hpp" 4 5 struct LPGEnvBaseModule : BGModule { 6 int _gateToTriggerParamID; 7 int _timeScaleParamID; 8 float _longTimeScale; 9 bool _gateToTrigger = true; 10 float _timeScale = 1.0f; 11 RiseFallShapedSlewLimiter::ShapeCVMode _riseShapeMode = RiseFallShapedSlewLimiter::INVERTED_SCVM; 12 RiseFallShapedSlewLimiter::ShapeCVMode _fallShapeMode = RiseFallShapedSlewLimiter::ON_SCVM; 13 14 LPGEnvBaseModule(int gateToTriggerParamID = -1, int timeScaleParamID = -1, float longTimeScale = 10.0f) 15 : _gateToTriggerParamID(gateToTriggerParamID) 16 , _timeScaleParamID(timeScaleParamID) 17 , _longTimeScale(longTimeScale) 18 {} 19 20 json_t* saveToJson(json_t* root) override; 21 void loadFromJson(json_t* root) override; 22 void modulate() override; 23 }; 24 25 struct LPGEnvBaseWidget : BGModuleWidget { 26 void contextMenu(Menu* menu) override; 27 }; 28 29 template <int SCALE> 30 struct TimeParamQuantity : ScaledSquaringParamQuantity<SCALE> { 31 typedef ScaledSquaringParamQuantity<SCALE> Base; 32 33 float getDisplayValue() override { 34 auto m = dynamic_cast<LPGEnvBaseModule*>(Base::module); 35 assert(m); 36 return m->_timeScale * Base::getDisplayValue(); 37 } 38 39 void setDisplayValue(float displayValue) override { 40 auto m = dynamic_cast<LPGEnvBaseModule*>(Base::module); 41 assert(m); 42 return Base::setDisplayValue(displayValue / m->_timeScale); 43 } 44 };