89 auto yH = (inputValue - (R2 + g) * s1[(size_t) channel] - s2[(size_t) channel]) * h;
91 auto yB = g * yH + s1[(size_t) channel];
92 s1[(size_t) channel] = g * yH + yB;
94 auto yL = g * yB + s2[(size_t) channel];
95 s2[(size_t) channel] = g * yB + yL;
97 if (filterType == Type::allpass)
98 return yL - R2 * yB + yH;
100 auto yH2 = ((filterType == Type::lowpass ? yL : yH) - (R2 + g) * s3[(size_t) channel] - s4[(size_t) channel]) * h;
102 auto yB2 = g * yH2 + s3[(size_t) channel];
103 s3[(size_t) channel] = g * yH2 + yB2;
105 auto yL2 = g * yB2 + s4[(size_t) channel];
106 s4[(size_t) channel] = g * yB2 + yL2;
108 return filterType == Type::lowpass ? yL2 : yH2;
114 auto yH = (inputValue - (R2 + g) * s1[(size_t) channel] - s2[(size_t) channel]) * h;
116 auto yB = g * yH + s1[(size_t) channel];
117 s1[(size_t) channel] = g * yH + yB;
119 auto yL = g * yB + s2[(size_t) channel];
120 s2[(size_t) channel] = g * yB + yL;
122 auto yH2 = (yL - (R2 + g) * s3[(size_t) channel] - s4[(size_t) channel]) * h;
124 auto yB2 = g * yH2 + s3[(size_t) channel];
125 s3[(size_t) channel] = g * yH2 + yB2;
127 auto yL2 = g * yB2 + s4[(size_t) channel];
128 s4[(size_t) channel] = g * yB2 + yL2;
131 outputHigh = yL - R2 * yB + yH - yL2;