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 | |
parent | b18d78cbda458dec2fa906a8bde6ba40a77874db (diff) |
Add max gate close knob to ZamGate*
Signed-off-by: Damien Zammit <damien@zamaudio.com>
Diffstat (limited to 'plugins')
-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 | ||||
-rw-r--r-- | plugins/ZamGateX2/ZamGateX2Plugin.cpp | 21 | ||||
-rw-r--r-- | plugins/ZamGateX2/ZamGateX2Plugin.hpp | 5 | ||||
-rw-r--r-- | plugins/ZamGateX2/ZamGateX2UI.cpp | 12 | ||||
-rw-r--r-- | plugins/ZamGateX2/ZamGateX2UI.hpp | 2 |
8 files changed, 70 insertions, 10 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; diff --git a/plugins/ZamGateX2/ZamGateX2Plugin.cpp b/plugins/ZamGateX2/ZamGateX2Plugin.cpp index 9bc58f9..8d09f52 100644 --- a/plugins/ZamGateX2/ZamGateX2Plugin.cpp +++ b/plugins/ZamGateX2/ZamGateX2Plugin.cpp @@ -82,6 +82,15 @@ void ZamGateX2Plugin::initParameter(uint32_t index, Parameter& parameter) parameter.ranges.min = -30.0f; parameter.ranges.max = 30.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 paramSidechain: parameter.hints = kParameterIsAutomable | kParameterIsBoolean; parameter.name = "Sidechain"; @@ -142,6 +151,9 @@ float ZamGateX2Plugin::getParameterValue(uint32_t index) const case paramMakeup: return makeup; break; + case paramGateclose: + return gateclose; + break; case paramSidechain: return sidechain; break; @@ -172,6 +184,9 @@ void ZamGateX2Plugin::setParameterValue(uint32_t index, float value) case paramMakeup: makeup = value; break; + case paramGateclose: + gateclose = value; + break; case paramSidechain: sidechain = value; break; @@ -192,6 +207,7 @@ void ZamGateX2Plugin::loadProgram(uint32_t index) gainr = 0.0; makeup = 0.0; outlevel = -45.0; + gateclose = -50.0; sidechain = 0.0; activate(); @@ -258,6 +274,7 @@ void ZamGateX2Plugin::run(const float** inputs, float** outputs, uint32_t frames att = 1000.f / (attack * fs); rel = 1000.f / (release * fs); bool usesidechain = (sidechain < 0.5) ? false : true; + float mingate = (gateclose == -50.f) ? 0.f : from_dB(gateclose); max = 0.f; for(i = 0; i < frames; i++) { @@ -276,8 +293,8 @@ void ZamGateX2Plugin::run(const float** inputs, float** outputs, uint32_t frames } if (absample < from_dB(thresdb)) { g -= rel; - if (g < 0.f) - g = 0.f; + if (g < mingate) + g = mingate; } else { g += att; if (g > 1.f) diff --git a/plugins/ZamGateX2/ZamGateX2Plugin.hpp b/plugins/ZamGateX2/ZamGateX2Plugin.hpp index 6a0977f..df62ceb 100644 --- a/plugins/ZamGateX2/ZamGateX2Plugin.hpp +++ b/plugins/ZamGateX2/ZamGateX2Plugin.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,gateclose,sidechain,gainr,outlevel; //parameters void pushsamplel(float samples[], float sample); void pushsampler(float samples[], float sample); diff --git a/plugins/ZamGateX2/ZamGateX2UI.cpp b/plugins/ZamGateX2/ZamGateX2UI.cpp index fe3fa87..c70f809 100644 --- a/plugins/ZamGateX2/ZamGateX2UI.cpp +++ b/plugins/ZamGateX2/ZamGateX2UI.cpp @@ -78,6 +78,14 @@ ZamGateX2UI::ZamGateX2UI() fKnobMakeup->setRotationAngle(240); fKnobMakeup->setCallback(this); + fKnobGateclose = new ImageKnob(this, knobImage); + fKnobGateclose->setAbsolutePos(480, 61); + fKnobGateclose->setId(ZamGateX2Plugin::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(ZamGateX2Plugin::paramSidechain); @@ -106,6 +114,9 @@ void ZamGateX2UI::parameterChanged(uint32_t index, float value) case ZamGateX2Plugin::paramMakeup: fKnobMakeup->setValue(value); break; + case ZamGateX2Plugin::paramGateclose: + fKnobGateclose->setValue(value); + break; case ZamGateX2Plugin::paramSidechain: fToggleSidechain->setDown(value > 0.5); break; @@ -133,6 +144,7 @@ void ZamGateX2UI::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/ZamGateX2/ZamGateX2UI.hpp b/plugins/ZamGateX2/ZamGateX2UI.hpp index 4d6c7b9..32117d6 100644 --- a/plugins/ZamGateX2/ZamGateX2UI.hpp +++ b/plugins/ZamGateX2/ZamGateX2UI.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; |