Parks-McClellan FIR Filter Design
The Parks-McClellan FIR Filter Design method can design multiband filters. This design method allowed entering a filter length up to 512, although I've never seen this implementation converge beyond a filter length of 387.
The Parks-McClellan won't always converge. If it fails, the one of the next two filter design methods can be used.
If the Parks-McClellan algorithm does converge, it will usually produce the best filter design, that is, a filter with the smallest transition widths and/or the lowest filter length for a given frequency specification.
The Parks-McClellan designer supports Multiband FIR filter design, Differentiator design, and Hilbert Transformer design.
To design a filter, click the the "Filter" menu item and select the "Design" submenu item to launch the Filter Design Dialog window.

- Set the Filter Design Method to be "Parks-McClellan".
- Select the Filter Type to be one of: Multiband; Differentiator; or Hilbert Transform.
- Set the Sample Rate. The sample rate must be a positive number greater than zero.
- Set the Desired Filter Length. For the Parks-McClellan design method, the Filter Length must be a value between 3 and 512. I've never been able to design a filter using this method that had more than 387 taps though.
- I usually leave the Grid Density at 16. This can be changed if you wish to experiment.
- Set the "# of Bands" for your filter type. This can only be set to be from 2 bands up to 10 bands.
- Set cutoff frequency for each band. Each successive band must have higher frequencies than the previous band. The first band's lower frequency is always zero, and the last band's upper frequency is always half the sample rate.
- If not already set, set the "Gain in dB" checkbox to be checked. If unchecked, gains will use magnitudes. For this example, deciBels are used.
- Set the desired Gain for each band. For the passband, this is typically 0.0, for 0 dB, and for other bands, the value will typically be a negative value, for example, -90.0, for -90 deciBels.
- Set the Weight for each band. To start, I usually set the weight for every band to 1.0. If after the first try at a design, I want the algorithm to favor a band, or some bands, I will increase the weight for the band, or some bands, to 10, 100, or 1000.
- Click the "Apply" button. The filter frequency response will be displayed on the graph. If the algorithm fails, the status bar might display, "Failed to Converge," or the graph will show a filter response that does not meet the design specification. The settings above can be changed and the "Apply" button clicked again for a new filter design.
If the Parks-McClellan design algorithm fails to converge to a solution, it might be made to converge by increasing or descreaing the frequency transition widths, i.e. how closely-spaced the band frequencies are. Also increasing or decreasing the filter length might allow the algorithm to converge.
The filter above results in the following frequency response. Note the filter length is displayed on the bottom of the application on the right part of the status bar.