BogaudioModules

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

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