Never mind, I just went ahead and hacked the JUCE IIR Filter code and got something much better, thanks again Jules for such incredible work!!!
class WFilter1PAJ // Based on JUCE's IIR Filter code { public: WFilter1PAJ() : SampleRate(nullptr) { zeromem(co, sizeof(co)); reset(); }; inline paramptr process(paramptr Input) { #define processPole(pole, input) out = co[0] * input + v1[pole]; SNAP_TO_ZERO(out); v1[pole] = co[1] * input - co[3] * out + v2[pole]; v2[pole] = co[2] * input - co[4] * out; // processPole(0, Input); prevOut = out; processPole(1, prevOut); prevOut = out; processPole(2, prevOut); // return out; }; void frequency(paramptr aFrequency = wv0) { if (SampleRate != nullptr) { n = wv1 / tan(double_Pi * ((aFrequency*aFrequency)*MAX_FREQ) / paramptr(*SampleRate)); nSquared = n * n; co[0] = wv1 / (wv1 + std::sqrt(wv2) * n + nSquared); // co[2] = co[0]; co[1] = co[0] * wv2; co[3] = co[1] * (wv1 - nSquared); co[4] = co[0] * (wv1 - std::sqrt(wv2) * n + nSquared); } } void reset() { for (int x = 0; x < 3; x++) { v1[x] = v2[x] = wv0; } }; // int32 *SampleRate; audioptr out, v1[3], v2[3], co[5], prevOut; paramptr n, nSquared, a; };