summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2019-06-30 12:21:43 +1000
committerDamien Zammit <damien@zamaudio.com>2019-06-30 12:21:43 +1000
commitd211bff779cd6dd2d24a8106bea944da4d1bd195 (patch)
tree617b0b0154339a79b6d8b6c7d5f1631764affb78
parent67e7d886d28890071ca1dbba440c3dd239140b0e (diff)
Repeat LPF for mono multiband && clean up
-rw-r--r--plugins/ZaMultiComp/ZaMultiCompPlugin.cpp37
-rw-r--r--plugins/ZaMultiComp/ZaMultiCompPlugin.hpp5
-rw-r--r--plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.cpp5
-rw-r--r--plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.hpp1
4 files changed, 12 insertions, 36 deletions
diff --git a/plugins/ZaMultiComp/ZaMultiCompPlugin.cpp b/plugins/ZaMultiComp/ZaMultiCompPlugin.cpp
index 5d3b9c6..a9bea86 100644
--- a/plugins/ZaMultiComp/ZaMultiCompPlugin.cpp
+++ b/plugins/ZaMultiComp/ZaMultiCompPlugin.cpp
@@ -712,11 +712,6 @@ void ZaMultiCompPlugin::activate()
simper[1][i].s[1] = 0.f;
}
max = 0.f;
- for (i = 0; i < MAX_SAMPLES; i++) {
- outlevelold[0][i] = 0.f;
- outlevelold[1][i] = 0.f;
- outlevelold[2][i] = 0.f;
- }
pos[0] = 0;
pos[1] = 0;
pos[2] = 0;
@@ -833,24 +828,12 @@ void ZaMultiCompPlugin::run_comp(int k, float in, float *out)
old_yg[k] = Lyg;
}
-void ZaMultiCompPlugin::pushsample(float samples[], float sample, int k)
+void ZaMultiCompPlugin::pushsample(float sample, int k)
{
- ++pos[k];
- if (pos[k] >= MAX_SAMPLES)
- pos[k] = 0;
- samples[pos[k]] = sample;
-}
+ const float rate = 2. * M_PI * 5.;
+ float lpf = rate / (rate + getSampleRate());
-float ZaMultiCompPlugin::averageabs(float samples[])
-{
- int i;
- float average = 0.f;
-
- for (i = 0; i < MAX_SAMPLES; i++) {
- average += samples[i]*samples[i];
- }
- average /= (float) MAX_SAMPLES;
- return sqrt(average);
+ average[k] += lpf * (sample*sample - average[k]);
}
void ZaMultiCompPlugin::run(const float** inputs, float** outputs, uint32_t frames)
@@ -889,24 +872,24 @@ void ZaMultiCompPlugin::run(const float** inputs, float** outputs, uint32_t fram
run_lr4(0, inl, &fil1[0], &fil2[0]);
run_lr4(1, fil2[0], &fil3[0], &fil4[0]);
- pushsample(outlevelold[0], fil1[0], 0);
- outlevel[0] = averageabs(outlevelold[0]);
+ pushsample(fil1[0], 0);
+ outlevel[0] = sqrt(average[0]);
outlevel[0] = (outlevel[0] == 0.f) ? -45.0 : to_dB(outlevel[0]);
if (tog1)
run_comp(0, fil1[0], &outL[0]);
tmp1[0] = tog1 ? outL[0] * from_dB(makeup[0]) : fil1[0];
- pushsample(outlevelold[1], fil3[0], 1);
- outlevel[1] = averageabs(outlevelold[1]);
+ pushsample(fil3[0], 1);
+ outlevel[1] = sqrt(average[1]);
outlevel[1] = (outlevel[1] == 0.f) ? -45.0 : to_dB(outlevel[1]);
if (tog2)
run_comp(1, fil3[0], &outL[1]);
tmp2[0] = tog2 ? outL[1] * from_dB(makeup[1]) : fil3[0];
- pushsample(outlevelold[2], fil4[0], 2);
- outlevel[2] = averageabs(outlevelold[2]);
+ pushsample(fil4[0], 2);
+ outlevel[2] = sqrt(average[2]);
outlevel[2] = (outlevel[2] == 0.f) ? -45.0 : to_dB(outlevel[2]);
if (tog3)
run_comp(2, fil4[0], &outL[2]);
diff --git a/plugins/ZaMultiComp/ZaMultiCompPlugin.hpp b/plugins/ZaMultiComp/ZaMultiCompPlugin.hpp
index 3678ff4..0705100 100644
--- a/plugins/ZaMultiComp/ZaMultiCompPlugin.hpp
+++ b/plugins/ZaMultiComp/ZaMultiCompPlugin.hpp
@@ -180,8 +180,7 @@ protected:
void linear_svf_reset(struct linear_svf *self);
float run_linear_svf_xover(struct linear_svf *self, float in, float mixlow, float mixhigh);
- void pushsample(float samples[], float sample, int k);
- float averageabs(float samples[]);
+ void pushsample(float sample, int k);
// -------------------------------------------------------------------
private:
@@ -191,7 +190,7 @@ private:
float old_ll, old_l1;
float limit, outlevel[3];
int pos[3];
- float outlevelold[3][MAX_SAMPLES];
+ float average[3];
float oldxover1, oldxover2;
bool reset;
diff --git a/plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.cpp b/plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.cpp
index d2d1053..5227dcc 100644
--- a/plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.cpp
+++ b/plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.cpp
@@ -731,11 +731,6 @@ void ZaMultiCompX2Plugin::activate()
}
}
maxL = maxR = 0.f;
- for (i = 0; i < MAX_SAMPLES; i++) {
- outlevelold[0][i] = 0.f;
- outlevelold[1][i] = 0.f;
- outlevelold[2][i] = 0.f;
- }
pos[0] = 0;
pos[1] = 0;
pos[2] = 0;
diff --git a/plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.hpp b/plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.hpp
index 0993811..b89f2f9 100644
--- a/plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.hpp
+++ b/plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.hpp
@@ -193,7 +193,6 @@ private:
float outlevel[3];
float average[3];
int pos[3];
- float outlevelold[3][MAX_SAMPLES];
float oldxover1, oldxover2;
bool resetl;
bool resetr;