diff options
author | Damien Zammit <damien@zamaudio.com> | 2016-04-19 18:38:04 +1000 |
---|---|---|
committer | Damien Zammit <damien@zamaudio.com> | 2016-04-19 18:38:04 +1000 |
commit | fa60d65bd5c0c5523ebc83de20c8ae8d140139d5 (patch) | |
tree | bee1cc6bf8efdedc1410f20a28fd36716b2d44eb /plugins/ZamGate | |
parent | b18d78cbda458dec2fa906a8bde6ba40a77874db (diff) |
Add max gate close knob to ZamGate*
Signed-off-by: Damien Zammit <damien@zamaudio.com>
Diffstat (limited to 'plugins/ZamGate')
-rw-r--r-- | plugins/ZamGate/ZamGatePlugin.cpp | 21 | ||||
-rw-r--r-- | plugins/ZamGate/ZamGatePlugin.hpp | 5 | ||||
-rw-r--r-- | plugins/ZamGate/ZamGateUI.cpp | 12 | ||||
-rw-r--r-- | plugins/ZamGate/ZamGateUI.hpp | 2 |
4 files changed, 35 insertions, 5 deletions
diff --git a/plugins/ZamGate/ZamGatePlugin.cpp b/plugins/ZamGate/ZamGatePlugin.cpp index 5afeb3a..08000c5 100644 --- a/plugins/ZamGate/ZamGatePlugin.cpp +++ b/plugins/ZamGate/ZamGatePlugin.cpp @@ -91,6 +91,15 @@ void ZamGatePlugin::initParameter(uint32_t index, Parameter& parameter) parameter.ranges.min = 0.0f; parameter.ranges.max = 1.0f; break; + case paramGateclose: + parameter.hints = kParameterIsAutomable; + parameter.name = "Max gate close"; + parameter.symbol = "close"; + parameter.unit = "dB"; + parameter.ranges.def = -50.0f; + parameter.ranges.min = -50.0f; + parameter.ranges.max = 0.0f; + break; case paramGainR: parameter.hints = kParameterIsOutput; parameter.name = "Gain Reduction"; @@ -145,6 +154,9 @@ float ZamGatePlugin::getParameterValue(uint32_t index) const case paramSidechain: return sidechain; break; + case paramGateclose: + return gateclose; + break; case paramGainR: return gainr; break; @@ -175,6 +187,9 @@ void ZamGatePlugin::setParameterValue(uint32_t index, float value) case paramSidechain: sidechain = value; break; + case paramGateclose: + gateclose = value; + break; case paramGainR: gainr = value; break; @@ -192,6 +207,7 @@ void ZamGatePlugin::loadProgram(uint32_t index) gainr = 0.0; makeup = 0.0; sidechain = 0.0; + gateclose = -50.f; outlevel = -45.0; activate(); } @@ -246,6 +262,7 @@ void ZamGatePlugin::run(const float** inputs, float** outputs, uint32_t frames) float in0; float side; float max = 0.f; + float mingate = (gateclose == -50.f) ? 0.f : from_dB(gateclose); for(i = 0; i < frames; i++) { in0 = inputs[0][i]; @@ -258,8 +275,8 @@ void ZamGatePlugin::run(const float** inputs, float** outputs, uint32_t frames) absample = averageabs(samplesl); if (absample < from_dB(thresdb)) { gl -= rel; - if (gl < 0.f) - gl = 0.f; + if (gl < mingate) + gl = mingate; } else { gl += att; if (gl > 1.f) diff --git a/plugins/ZamGate/ZamGatePlugin.hpp b/plugins/ZamGate/ZamGatePlugin.hpp index d49ef90..402f3c5 100644 --- a/plugins/ZamGate/ZamGatePlugin.hpp +++ b/plugins/ZamGate/ZamGatePlugin.hpp @@ -37,6 +37,7 @@ public: paramThresh, paramMakeup, paramSidechain, + paramGateclose, paramOutputLevel, paramGainR, paramCount @@ -75,7 +76,7 @@ protected: uint32_t getVersion() const noexcept override { - return d_version(3, 6, 1); + return d_version(3, 6, 2); } int64_t getUniqueId() const noexcept override @@ -119,7 +120,7 @@ protected: } // ------------------------------------------------------------------- - float attack,release,thresdb,makeup,sidechain,gainr,outlevel; //parameters + float attack,release,thresdb,makeup,sidechain,gateclose,gainr,outlevel; //parameters void pushsamplel(float samples[], float sample); float averageabs(float samples[]); diff --git a/plugins/ZamGate/ZamGateUI.cpp b/plugins/ZamGate/ZamGateUI.cpp index 97682ca..0cc1842 100644 --- a/plugins/ZamGate/ZamGateUI.cpp +++ b/plugins/ZamGate/ZamGateUI.cpp @@ -78,6 +78,14 @@ ZamGateUI::ZamGateUI() fKnobMakeup->setRotationAngle(240); fKnobMakeup->setCallback(this); + fKnobGateclose = new ImageKnob(this, knobImage); + fKnobGateclose->setAbsolutePos(480, 62); + fKnobGateclose->setId(ZamGatePlugin::paramGateclose); + fKnobGateclose->setRange(-50.0f, 0.0f); + fKnobGateclose->setDefault(-50.0f); + fKnobGateclose->setRotationAngle(240); + fKnobGateclose->setCallback(this); + fToggleSidechain = new ImageSwitch(this, fTogOff, fTogOn); fToggleSidechain->setAbsolutePos(350, 61); fToggleSidechain->setId(ZamGatePlugin::paramSidechain); @@ -106,6 +114,9 @@ void ZamGateUI::parameterChanged(uint32_t index, float value) case ZamGatePlugin::paramMakeup: fKnobMakeup->setValue(value); break; + case ZamGatePlugin::paramGateclose: + fKnobGateclose->setValue(value); + break; case ZamGatePlugin::paramSidechain: fToggleSidechain->setDown(value > 0.5); break; @@ -133,6 +144,7 @@ void ZamGateUI::programLoaded(uint32_t index) fKnobRelease->setValue(100.0f); fKnobThresh->setValue(-60.0f); fKnobMakeup->setValue(0.0f); + fKnobGateclose->setValue(-50.0f); fToggleSidechain->setDown(false); } diff --git a/plugins/ZamGate/ZamGateUI.hpp b/plugins/ZamGate/ZamGateUI.hpp index 3dfb7d2..1a0e35f 100644 --- a/plugins/ZamGate/ZamGateUI.hpp +++ b/plugins/ZamGate/ZamGateUI.hpp @@ -56,7 +56,7 @@ protected: private: Image fImgBackground; ScopedPointer<ImageKnob> fKnobAttack, fKnobRelease, fKnobThresh; - ScopedPointer<ImageKnob> fKnobMakeup; + ScopedPointer<ImageKnob> fKnobMakeup, fKnobGateclose; ScopedPointer<ImageSwitch> fToggleSidechain; Image fLedRedImg; |