http://www.musicdsp.org/archive.php?classid=3#38 #define FRAC 29 FixedPoint a1 = FixedPoint(3.221897E-05f); FixedPoint a2 = FixedPoint(6.443795E-05f); FixedPoint a3 = FixedPoint(3.221897E-05f); FixedPoint b1 = FixedPoint(-1.983881f); FixedPoint b2 = FixedPoint(0.9840099f); FixedPoint f1 = FixedPoint(0.1f); FixedPoint f2 = FixedPoint(0.9f); short iirTest(short in, bool Channel) { FixedPoint Out; if (Channel) { static FixedPoint x0 = 0, x1 = 0, x2 = 0; static FixedPoint y0 = 0, y1 = 0, y2 = 0; x2 = x1; x1 = x0; x0 = in; y2 = y1; y1 = y0; Out = y0 = x0*a1 + x1*a2 + x2*a3 - y1*b1 - y2*b2; } else { static FixedPoint x0 = 0, x1 = 0, x2 = 0; static FixedPoint y0 = 0, y1 = 0, y2 = 0; x2 = x1; x1 = x0; x0 = in; y2 = y1; y1 = y0; Out = y0 = x0*a1 + x1*a2 + x2*a3 - y1*b1 - y2*b2; } Out *= f2; Out += f1*in; return Out.Data>>16; }