# LPF 24dB/Oct¶

code
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44``` ```First calculate the prewarped digital frequency: K = tan(Pi * Frequency / Samplerate); Now we calc some Coefficients: sg = Sinh(PassbandRipple); cg = Cosh(PassbandRipple); cg *= cg; Coeff = 1 / (cg-0.85355339059327376220042218105097); Coeff = K * Coeff*sg*1.847759065022573512256366378792; Coeff = 1 / (cg-0.14644660940672623779957781894758); Coeff = K * Coeff*sg*0.76536686473017954345691996806; K *= K; // (just to optimize it a little bit) Calculate the first biquad: A0 = (Coeff+K+Coeff); A1 = 2*(Coeff-K)*t; A2 = (Coeff-K-Coeff)*t; B0 = t*K; B1 = 2*B0; B2 = B0; Calculate the second biquad: A3 = (Coeff+K+Coeff); A4 = 2*(Coeff-K)*t; A5 = (Coeff-K-Coeff)*t; B3 = t*K; B4 = 2*B3; B5 = B3; Then calculate the output as follows: Stage1 = B0*Input + State0; State0 = B1*Input + A1/A0*Stage1 + State1; State1 = B2*Input + A2/A0*Stage1; Output = B3*Stage1 + State2; State2 = B4*Stage1 + A4/A3*Output + State2; State3 = B5*Stage1 + A5/A3*Output; ```

```You've used two notations here (as admitted on KVR!)..

=-=-=-= Start =-=-=-=

//A0 =   (Coeff+K+Coeff);
t  = 1/(Coeff+K+Coeff);
A1 = 2*(Coeff-K)*t;
A2 =   (Coeff-K-Coeff)*t;
B0 = t*K;
B1 = 2*B0;
B2 = B0;

//A3 =   (Coeff+K+Coeff);
t  = 1/(Coeff+K+Coeff);
A4 = 2*(Coeff-K)*t;
A5 =   (Coeff-K-Coeff)*t;
B3 = t*K;
B4 = 2*B3;
B5 = B3;

Then calculate the output as follows:

Stage1 = B0*Input + State0;
State0 = B1*Input + A1*Stage1 + State1;
State1 = B2*Input + A2*Stage1;

Output = B3*Stage1 + State2;
State2 = B4*Stage1 + A4*Output + State2;
State3 = B5*Stage1 + A5*Output;

=-=-=-=  End  =-=-=-=

Hope that clears up any confusion for future readers :-)
```
```The variable State3 is assigned a value, but is never used anywhere. Is there a reason for this?
```
```Just ported this into Reaper's native JesuSonic.

There are errors in both of the codes above :D
Use this:

//start

A0  = 1/(Coeff+K+Coeff);
A1 = 2*(Coeff-K)*A0;
A2 = (Coeff-K-Coeff)*A0;
B0 = A0*K;
B1 = 2*B0;
B2 = B0;

A3  = 1/(Coeff+K+Coeff);
A4 = 2*(Coeff-K)*A3;
A5 = (Coeff-K-Coeff)*A3;
B3 = A3*K;
B4 = 2*B3;
B5 = B3;

Stage1 = B0*Input + State0;
State0 = B1*Input + A1*Stage1 + State1;
State1 = B2*Input + A2*Stage1;
Output = B3*Stage1 + State2;
State2 = B4*Stage1 + A4*Output + State3;
State3 = B5*Stage1 + A5*Output;

//end

@RossClement[ AT ]gmail[ DOT ]com
'State3' should be added in this line
-> State2 = B4*Stage1 + A4*Output + State3;
```