summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins/ZaMultiComp/ZaMultiCompPlugin.cpp16
-rw-r--r--plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.cpp29
-rw-r--r--plugins/ZamComp/ZamCompPlugin.cpp17
-rw-r--r--plugins/ZamCompX2/ZamCompX2Plugin.cpp30
4 files changed, 53 insertions, 39 deletions
diff --git a/plugins/ZaMultiComp/ZaMultiCompPlugin.cpp b/plugins/ZaMultiComp/ZaMultiCompPlugin.cpp
index 0e183c0..ffb7976 100644
--- a/plugins/ZaMultiComp/ZaMultiCompPlugin.cpp
+++ b/plugins/ZaMultiComp/ZaMultiCompPlugin.cpp
@@ -791,7 +791,7 @@ void ZaMultiCompPlugin::run_comp(int k, float in, float *out)
float cdb=0.f;
float Lgain = 1.f;
float Lxg, Lyg;
- float Lxl, Lyl, Ly1;
+ float Lxl, Lyl;
Lyg = 0.f;
in = sanitize_denormal(in);
@@ -811,12 +811,15 @@ void ZaMultiCompPlugin::run_comp(int k, float in, float *out)
Lxl = Lxg - Lyg;
- old_y1[k] = sanitize_denormal(old_y1[k]);
- old_yl[k] = sanitize_denormal(old_yl[k]);
+ old_yl[k] = sanitize_denormal(old_yl[k]);
- Ly1 = fmaxf(Lxl, release_coeff * old_y1[k]+(1.f-release_coeff)*Lxl);
- Lyl = attack_coeff * old_yl[k]+(1.f-attack_coeff)*Ly1;
- Ly1 = sanitize_denormal(Ly1);
+ if (Lxl < old_yl[k]) {
+ Lyl = release_coeff * old_yl[k] + (1.f-release_coeff)*Lxl;
+ } else if (Lxl > old_yl[k]) {
+ Lyl = attack_coeff * old_yl[k]+(1.f-attack_coeff)*Lxl;
+ } else {
+ Lyl = Lxl;
+ }
Lyl = sanitize_denormal(Lyl);
cdb = -Lyl;
@@ -827,7 +830,6 @@ void ZaMultiCompPlugin::run_comp(int k, float in, float *out)
*out = in * Lgain;
old_yl[k] = Lyl;
- old_y1[k] = Ly1;
old_yg[k] = Lyg;
}
diff --git a/plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.cpp b/plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.cpp
index d74093f..877377b 100644
--- a/plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.cpp
+++ b/plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.cpp
@@ -811,8 +811,8 @@ void ZaMultiCompX2Plugin::run_comp(int k, float inL, float inR, float *outL, flo
float Rgain = 1.f;
float Lxg, Lyg;
float Rxg, Ryg;
- float Lxl, Lyl, Ly1;
- float Rxl, Ryl, Ry1;
+ float Lxl, Lyl;
+ float Rxl, Ryl;
Lyg = Ryg = 0.f;
inL = sanitize_denormal(inL);
@@ -850,22 +850,29 @@ void ZaMultiCompX2Plugin::run_comp(int k, float inL, float inR, float *outL, flo
Lxl = Rxl = (Lxg - Lyg + Rxg - Ryg) / 2.f;
}
- old_y1[0][k] = sanitize_denormal(old_y1[0][k]);
- old_y1[1][k] = sanitize_denormal(old_y1[1][k]);
old_yl[0][k] = sanitize_denormal(old_yl[0][k]);
old_yl[1][k] = sanitize_denormal(old_yl[1][k]);
- Ly1 = fmaxf(Lxl, release_coeff * old_y1[0][k]+(1.f-release_coeff)*Lxl);
- Lyl = attack_coeff * old_yl[0][k]+(1.f-attack_coeff)*Ly1;
- Ly1 = sanitize_denormal(Ly1);
+
+ if (Lxl < old_yl[0][k]) {
+ Lyl = release_coeff * old_yl[0][k] + (1.f-release_coeff)*Lxl;
+ } else if (Lxl > old_yl[0][k]) {
+ Lyl = attack_coeff * old_yl[0][k]+(1.f-attack_coeff)*Lxl;
+ } else {
+ Lyl = Lxl;
+ }
Lyl = sanitize_denormal(Lyl);
cdb = -Lyl;
Lgain = from_dB(cdb);
- Ry1 = fmaxf(Rxl, release_coeff * old_y1[1][k]+(1.f-release_coeff)*Rxl);
- Ryl = attack_coeff * old_yl[1][k]+(1.f-attack_coeff)*Ry1;
- Ry1 = sanitize_denormal(Ry1);
+ if (Rxl < old_yl[1][k]) {
+ Ryl = release_coeff * old_yl[1][k] + (1.f-release_coeff)*Rxl;
+ } else if (Rxl > old_yl[1][k]) {
+ Ryl = attack_coeff * old_yl[1][k]+(1.f-attack_coeff)*Rxl;
+ } else {
+ Ryl = Rxl;
+ }
Ryl = sanitize_denormal(Ryl);
cdb = -Ryl;
@@ -881,8 +888,6 @@ void ZaMultiCompX2Plugin::run_comp(int k, float inL, float inR, float *outL, flo
old_yl[0][k] = Lyl;
old_yl[1][k] = Ryl;
- old_y1[0][k] = Ly1;
- old_y1[1][k] = Ry1;
old_yg[0][k] = Lyg;
old_yg[1][k] = Ryg;
}
diff --git a/plugins/ZamComp/ZamCompPlugin.cpp b/plugins/ZamComp/ZamCompPlugin.cpp
index 876dda3..af2a279 100644
--- a/plugins/ZamComp/ZamCompPlugin.cpp
+++ b/plugins/ZamComp/ZamCompPlugin.cpp
@@ -300,7 +300,7 @@ void ZamCompPlugin::run(const float** inputs, float** outputs, uint32_t frames)
float max = 0.f;
float lgaininp = 0.f;
float Lgain = 1.f;
- float Lxg, Lxl, Lyg, Lyl, Ly1;
+ float Lxg, Lxl, Lyg, Lyl;
float checkwidth = 0.f;
bool usesidechain = (sidechain < 0.5) ? false : true;
uint32_t i;
@@ -340,11 +340,15 @@ void ZamCompPlugin::run(const float** inputs, float** outputs, uint32_t frames)
Lxl = Lxg - Lyg;
- oldL_y1 = sanitize_denormal(oldL_y1);
oldL_yl = sanitize_denormal(oldL_yl);
- Ly1 = fmaxf(Lxl, release_coeff * oldL_y1+(1.f-release_coeff)*Lxl);
- Lyl = attack_coeff * oldL_yl+(1.f-attack_coeff)*Ly1;
- Ly1 = sanitize_denormal(Ly1);
+
+ if (Lxl < oldL_yl) {
+ Lyl = release_coeff * oldL_yl + (1.f-release_coeff)*Lxl;
+ } else if (Lxl > oldL_yl) {
+ Lyl = attack_coeff * oldL_yl+(1.f-attack_coeff)*Lxl;
+ } else {
+ Lyl = Lxl;
+ }
Lyl = sanitize_denormal(Lyl);
cdb = -Lyl;
@@ -358,11 +362,10 @@ void ZamCompPlugin::run(const float** inputs, float** outputs, uint32_t frames)
max = (fabsf(outputs[0][i]) > max) ? fabsf(outputs[0][i]) : sanitize_denormal(max);
oldL_yl = Lyl;
- oldL_y1 = Ly1;
oldL_yg = Lyg;
}
outlevel = (max == 0.f) ? -45.f : to_dB(max); // relative to - thresdb;
- }
+}
// -----------------------------------------------------------------------
diff --git a/plugins/ZamCompX2/ZamCompX2Plugin.cpp b/plugins/ZamCompX2/ZamCompX2Plugin.cpp
index 78fc43d..330b1b5 100644
--- a/plugins/ZamCompX2/ZamCompX2Plugin.cpp
+++ b/plugins/ZamCompX2/ZamCompX2Plugin.cpp
@@ -322,8 +322,8 @@ void ZamCompX2Plugin::run(const float** inputs, float** outputs, uint32_t frames
float rgaininp = 0.f;
float Lgain = 1.f;
float Rgain = 1.f;
- float Lxg, Lxl, Lyg, Lyl, Ly1;
- float Rxg, Rxl, Ryg, Ryl, Ry1;
+ float Lxg, Lxl, Lyg, Lyl;
+ float Rxg, Rxl, Ryg, Ryl;
float checkwidth = 0.f;
uint32_t i;
float in0;
@@ -393,13 +393,14 @@ void ZamCompX2Plugin::run(const float** inputs, float** outputs, uint32_t frames
Lxl = Rxl = (Lxg - Lyg + Rxg - Ryg) / 2.f;
}
- oldL_y1 = sanitize_denormal(oldL_y1);
- oldR_y1 = sanitize_denormal(oldR_y1);
oldL_yl = sanitize_denormal(oldL_yl);
- oldR_yl = sanitize_denormal(oldR_yl);
- Ly1 = fmaxf(Lxl, release_coeff * oldL_y1+(1.f-release_coeff)*Lxl);
- Lyl = attack_coeff * oldL_yl+(1.f-attack_coeff)*Ly1;
- Ly1 = sanitize_denormal(Ly1);
+ if (Lxl < oldL_yl) {
+ Lyl = release_coeff * oldL_yl + (1.f-release_coeff)*Lxl;
+ } else if (Lxl > oldL_yl) {
+ Lyl = attack_coeff * oldL_yl+(1.f-attack_coeff)*Lxl;
+ } else {
+ Lyl = Lxl;
+ }
Lyl = sanitize_denormal(Lyl);
cdb = -Lyl;
@@ -407,9 +408,14 @@ void ZamCompX2Plugin::run(const float** inputs, float** outputs, uint32_t frames
gainred = Lyl;
- Ry1 = fmaxf(Rxl, release_coeff * oldR_y1+(1.f-release_coeff)*Rxl);
- Ryl = attack_coeff * oldR_yl+(1.f-attack_coeff)*Ry1;
- Ry1 = sanitize_denormal(Ry1);
+ oldR_y1 = sanitize_denormal(oldR_y1);
+ if (Rxl < oldR_yl) {
+ Ryl = release_coeff * oldR_yl + (1.f-release_coeff)*Rxl;
+ } else if (Rxl > oldR_yl) {
+ Ryl = attack_coeff * oldR_yl+(1.f-attack_coeff)*Rxl;
+ } else {
+ Ryl = Rxl;
+ }
Ryl = sanitize_denormal(Ryl);
cdb = -Ryl;
@@ -424,8 +430,6 @@ void ZamCompX2Plugin::run(const float** inputs, float** outputs, uint32_t frames
oldL_yl = Lyl;
oldR_yl = Ryl;
- oldL_y1 = Ly1;
- oldR_y1 = Ry1;
oldL_yg = Lyg;
oldR_yg = Ryg;
}