summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2016-04-19 18:38:04 +1000
committerDamien Zammit <damien@zamaudio.com>2016-04-19 18:38:04 +1000
commitfa60d65bd5c0c5523ebc83de20c8ae8d140139d5 (patch)
treebee1cc6bf8efdedc1410f20a28fd36716b2d44eb /plugins
parentb18d78cbda458dec2fa906a8bde6ba40a77874db (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.cpp21
-rw-r--r--plugins/ZamGate/ZamGatePlugin.hpp5
-rw-r--r--plugins/ZamGate/ZamGateUI.cpp12
-rw-r--r--plugins/ZamGate/ZamGateUI.hpp2
-rw-r--r--plugins/ZamGateX2/ZamGateX2Plugin.cpp21
-rw-r--r--plugins/ZamGateX2/ZamGateX2Plugin.hpp5
-rw-r--r--plugins/ZamGateX2/ZamGateX2UI.cpp12
-rw-r--r--plugins/ZamGateX2/ZamGateX2UI.hpp2
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;