From d211bff779cd6dd2d24a8106bea944da4d1bd195 Mon Sep 17 00:00:00 2001 From: Damien Zammit Date: Sun, 30 Jun 2019 12:21:43 +1000 Subject: Repeat LPF for mono multiband && clean up --- plugins/ZaMultiComp/ZaMultiCompPlugin.cpp | 37 ++++++++------------------- plugins/ZaMultiComp/ZaMultiCompPlugin.hpp | 5 ++-- plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.cpp | 5 ---- plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.hpp | 1 - 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; -- cgit v1.2.3