Biquad Filter View - A IIR Biquad Filter Design & Visualization Tool

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Biquad Filter View - A IIR Biquad Filter Design & Visualization Tool

Biquad Filter View - A IIR Biquad Filter Design & Visualization Tool

Summary:

 

10507_10507.pngSheldonFace2.png

This tool is based upon the Audio BiQuad Cookbook Here:

 

http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt

 

Very useful for configuring the FRDM-JAM and the MonkeyJam software!

 

10506_10506.pngScreenShot.png

 

Requirements:

 

You need a machine with the .net 4.0 Framework (or greater) Installed (Windows 7 or Greater).    If you have issues go here:

 

Download Microsoft .NET Framework 4 (Standalone Installer) from Official Microsoft Download Center

 

Instructions:

 

Just unzip and run the .exe

 

Please report any problems in the comments section

Original Attachment has been moved to: BiQuadFilterView---1.0.0.zip

Comments

Hello Eli!

Thanks for this and other wonderful contributions to the community!

I am trying to implement CMSIS - Biquad Cascade IIR Filters Using Direct Form I Structure in my code and I am trying to calculate the coefficients using your tool. In the "http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt" file, the equation is as follows:

y[n] = (b0/a0)*x[n] + (b1/a0)*x[n-1] + (b2/a0)*x[n-2] - (a1/a0)*y[n-1] - (a2/a0)*y[n-2]

However, in the BiQuadFilterView program of yours, in the info area, I can see that the equation is as follows:

y[n] = b[0]*x[n] + b[1]*x[n-1] + b[2]*x[n-2] - a[1]*x[n-1] - a[1]*y[n-2]

In the Keil CMSIS documentation, the equation is as follows:

y[n] = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]

Notice the difference in between -a[1]*x[n-1] - a[1]*y[n-2] and + a1 * y[n-1] + a2 * y[n-2].

Is this a typo or the BiQuadFilterView uses a different algorithm?

Hello Abdullah.

Sorry for the confusion.    Here are some pointers.

1.)

Equations 1 and 2 are really the same equation.    my b[0] is just b[0]/a[0] in the 1st equation.    I keep the coefficients normalized to the a0 coefficient from the start.

You can get the source of the program here:

ehughes/BiquadFilterView · GitHub

the file eDSP.cs has a function called "DesignBiquad" that shows how I get from one to the other.

2.)   Good observation on the keil implementation.   If you go through their documentation

http://www.keil.com/pack/doc/CMSIS/DSP/html/group___biquad_cascade_d_f1__32x64.html

They mention that they use a different sign convention for a1 and a2.   If you use BiQuadFilterView,  you will need to flip the sign.  

3.)    Check out this project:

Freescale Hack It Together (H.I.T.) Project Initiative - Get Excited!

I didn't use the CMSIS implementation as it is optimized for block processing and I wanted per sample processing.   You can find an IIR implementation that implements some functions that compute fixed point coefficients for the biquad in C.

Good Luck!

Hi Eli,

How do you scale the coefficients in the tool to -.99999 to +1 for Q15 format?

Many of the coefficients such as b[1] and a[1] are -1.99999 which is not Q15 compatible.

a[0] is always 1.

Can I simply define a[0] =2 and then scale the coefficients by 1/2?

Also, the dbGain setting seems to have no effect on the coefficients.

Thanks,

Brad

No ratings
Version history
Last update:
‎03-27-2014 06:25 PM
Updated by: