diff options
Diffstat (limited to 'plugins/ZamCompX2/ZamCompX2Plugin.cpp')
-rw-r--r-- | plugins/ZamCompX2/ZamCompX2Plugin.cpp | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/plugins/ZamCompX2/ZamCompX2Plugin.cpp b/plugins/ZamCompX2/ZamCompX2Plugin.cpp index 23eb33f..042df42 100644 --- a/plugins/ZamCompX2/ZamCompX2Plugin.cpp +++ b/plugins/ZamCompX2/ZamCompX2Plugin.cpp @@ -98,8 +98,17 @@ void ZamCompX2Plugin::initParameter(uint32_t index, Parameter& parameter) parameter.ranges.min = 1.0f; parameter.ranges.max = 150.0f; break; + case paramSidechain: + parameter.hints = kParameterIsAutomable | kParameterIsBoolean; + parameter.name = "Sidechain"; + parameter.symbol = "sidechain"; + parameter.unit = " "; + parameter.ranges.def = 0.0f; + parameter.ranges.min = 0.0f; + parameter.ranges.max = 1.0f; + break; case paramStereo: - parameter.hints = kParameterIsAutomable | kParameterIsInteger; + parameter.hints = kParameterIsAutomable | kParameterIsBoolean; parameter.name = "Stereo Detection"; parameter.symbol = "stereodet"; parameter.unit = " "; @@ -156,6 +165,7 @@ void ZamCompX2Plugin::loadProgram(uint32_t index) makeup = 0.0; gainred = 0.0; slewfactor = 1.0; + sidechain = 0.0; stereodet = 0.0; outlevel = -45.0; break; @@ -168,6 +178,7 @@ void ZamCompX2Plugin::loadProgram(uint32_t index) makeup = 6.0; gainred = 0.0; slewfactor = 20.0; + sidechain = 0.0; stereodet = 1.0; outlevel = -45.0; break; @@ -180,6 +191,7 @@ void ZamCompX2Plugin::loadProgram(uint32_t index) makeup = 9.0; gainred = 0.0; slewfactor = 1.0; + sidechain = 0.0; stereodet = 1.0; outlevel = -45.0; break; @@ -216,6 +228,9 @@ float ZamCompX2Plugin::getParameterValue(uint32_t index) const case paramSlew: return slewfactor; break; + case paramSidechain: + return sidechain; + break; case paramStereo: return stereodet; break; @@ -255,6 +270,9 @@ void ZamCompX2Plugin::setParameterValue(uint32_t index, float value) case paramSlew: slewfactor = value; break; + case paramSidechain: + sidechain = value; + break; case paramStereo: stereodet = value; break; @@ -286,6 +304,7 @@ void ZamCompX2Plugin::run(const float** inputs, float** outputs, uint32_t frames float attack_coeff = exp(-1000.f/(attack * srate)); float release_coeff = exp(-1000.f/(release * srate)); int stereo = (stereodet < 0.5) ? STEREOLINK_AVERAGE : STEREOLINK_MAX; + bool usesidechain = (sidechain < 0.5) ? false : true; int attslew = 0; int relslew = 0; @@ -303,8 +322,13 @@ void ZamCompX2Plugin::run(const float** inputs, float** outputs, uint32_t frames relslew = 0; attslew = 0; Lyg = Ryg = 0.f; - Lxg = (inputs[0][i]==0.f) ? -160.f : to_dB(fabs(inputs[0][i])); - Rxg = (inputs[1][i]==0.f) ? -160.f : to_dB(fabs(inputs[1][i])); + if (usesidechain) { + Lxg = (inputs[2][i]==0.f) ? -160.f : to_dB(fabs(inputs[2][i])); + Rxg = Lxg; + } else { + Lxg = (inputs[0][i]==0.f) ? -160.f : to_dB(fabs(inputs[0][i])); + Rxg = (inputs[1][i]==0.f) ? -160.f : to_dB(fabs(inputs[1][i])); + } Lxg = sanitize_denormal(Lxg); Rxg = sanitize_denormal(Rxg); |