diff options
author | Damien Zammit <damien@zamaudio.com> | 2019-07-09 22:24:30 +1000 |
---|---|---|
committer | Damien Zammit <damien@zamaudio.com> | 2019-07-09 22:24:30 +1000 |
commit | d77ee3f22922df9190d16fe1914c29edec563c88 (patch) | |
tree | 414d4cfdca49e3edcf6a0e0db3c6030b2e806440 | |
parent | 1fa7b123380e8dea288d6f5be3c580c30ff46c65 (diff) |
LR4 equivalentsvf-lr4
-rw-r--r-- | plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.cpp | 37 | ||||
-rw-r--r-- | plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.hpp | 2 |
2 files changed, 20 insertions, 19 deletions
diff --git a/plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.cpp b/plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.cpp index 079cfc6..b20aa39 100644 --- a/plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.cpp +++ b/plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.cpp @@ -722,7 +722,7 @@ void ZaMultiCompX2Plugin::activate() for (j = 0; j < 2; j++) old_ll[j]=old_l1[j]=0.f; - for (type = 0; type < 3; type++) { + for (type = 0; type < 4; type++) { for (i = 0; i < MAX_FILT; i++) { for (layer = 0; layer < 2; layer++) { simper[type][i][layer].k = 0.f; @@ -751,11 +751,8 @@ void ZaMultiCompX2Plugin::activate() void ZaMultiCompX2Plugin::linear_svf_set_xover(struct linear_svf *self, float sample_rate, float cutoff, float resonance, int hp) { - double w; - self->k = 1. / resonance; - w = M_PI * cutoff / sample_rate; - self->g = tan(w); + self->g = tan(M_PI * cutoff / sample_rate); switch (hp) { case 0: self->m0 = 1.; @@ -807,17 +804,19 @@ void ZaMultiCompX2Plugin::calc_lr4(float f, int i) { float srate = getSampleRate(); - linear_svf_set_xover(&simper[0][i][0], srate, f, 0.7071068, 0); // lp layer0 - linear_svf_set_xover(&simper[0][i][1], srate, f, 0.7071068, 0); // lp layer1 - linear_svf_set_xover(&simper[1][i][0], srate, f, 0.7071068, 1); // hp layer0 - linear_svf_set_xover(&simper[1][i][1], srate, f, 0.7071068, 1); // hp layer1 - linear_svf_set_xover(&simper[2][i][0], srate, f, 0.7071068, 2); // bp layer0 - linear_svf_set_xover(&simper[2][i][1], srate, f, 0.7071068, 2); // bp layer1 + linear_svf_set_xover(&simper[0][i][0], srate, f, 0.54, 0); // lp layer0 + linear_svf_set_xover(&simper[0][i][1], srate, f, 1.34, 0); // lp layer1 + linear_svf_set_xover(&simper[1][i][0], srate, f, 0.54, 1); // hp layer0 + linear_svf_set_xover(&simper[1][i][1], srate, f, 1.34, 1); // hp layer1 + linear_svf_set_xover(&simper[2][i][0], srate, f, 0.54, 0); // lp layer2 + linear_svf_set_xover(&simper[2][i][1], srate, f, 1.34, 0); // lp layer3 + linear_svf_set_xover(&simper[3][i][0], srate, f, 0.54, 1); // hp layer2 + linear_svf_set_xover(&simper[3][i][1], srate, f, 1.34, 1); // hp layer3 } void ZaMultiCompX2Plugin::run_lr4(int i, float in, float *outlo, float *outhi) { - float lo, hi, ap; + float lo0, lo1, lo2, hi0, hi1, hi2; /* lo = run_linear_svf_xover(&simper[0][i][0], in); ap = run_linear_svf_xover(&simper[2][i][0], lo); @@ -827,13 +826,15 @@ void ZaMultiCompX2Plugin::run_lr4(int i, float in, float *outlo, float *outhi) ap = run_linear_svf_xover(&simper[2][i][1], hi); *outhi = run_linear_svf_xover(&simper[1][i][1], ap); */ - ap = run_linear_svf_xover(&simper[2][i][0], in); - lo = run_linear_svf_xover(&simper[0][i][0], ap); - *outlo = run_linear_svf_xover(&simper[0][i][1], lo); + lo0 = run_linear_svf_xover(&simper[0][i][0], in); + lo1 = run_linear_svf_xover(&simper[0][i][1], lo0); + lo2 = run_linear_svf_xover(&simper[2][i][0], lo1); + *outlo = run_linear_svf_xover(&simper[2][i][1], lo2); - ap = run_linear_svf_xover(&simper[2][i][1], in); - hi = run_linear_svf_xover(&simper[1][i][0], ap); - *outhi = run_linear_svf_xover(&simper[1][i][1], hi); + hi0 = run_linear_svf_xover(&simper[1][i][0], in); + hi1 = run_linear_svf_xover(&simper[1][i][1], hi0); + hi2 = run_linear_svf_xover(&simper[3][i][0], hi1); + *outhi = run_linear_svf_xover(&simper[3][i][1], hi2); } void ZaMultiCompX2Plugin::run_comp(int k, float inL, float inR, float *outL, float *outR) diff --git a/plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.hpp b/plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.hpp index f775e0c..bfb2ac7 100644 --- a/plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.hpp +++ b/plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.hpp @@ -180,7 +180,7 @@ Stereo version of ZaMultiComp, with individual threshold controls for each band double s[2]; }; - struct linear_svf simper[3][MAX_FILT][2]; + struct linear_svf simper[4][MAX_FILT][2]; void linear_svf_set_xover(struct linear_svf *self, float sample_rate, float cutoff, float resonance, int hi); void linear_svf_reset(struct linear_svf *self); float run_linear_svf_xover(struct linear_svf *self, float in); |