Next: , Previous: Top, Up: Top

1 Introduction

gmeteor is a tool for designing discrete-time equiripple filters with linear phase and a finite impulse response (FIR). gmeteor runs on systems that support the Guile extension language from the GNU project (for example, GNU systems running on a Linux kernel). gmeteor is free software distributed under the terms of the GNU General Public License (GPL). See License and Copyright, for details. gmeteor is a powerful filter-design tool because of the following three reasons.

  1. gmeteor can design FIR filters with an arbitrary frequency response. You can even specify the frequency response analytically. In contrast, with other filter-design tools you are limited to piecewise-constant or piecewise-linear frequency responses.
  2. gmeteor supports two filter design styles: the approximation style and the limit style. In the approximation style, you specify the desired frequency response of the filter, and gmeteor finds the “best” feasible approximation. (This style is used by the popular Parks-McClellan filter design program.) In the limit style, you specify upper and lower bounds on the frequency response, and gmeteor finds a frequency response that satisfies the bounds. With gmeteor, you can freely intermix the two styles whenever it makes sense.
  3. Since gmeteor employs an extension language (specifically, the Scheme programming language), you can program it to solve your own filter-design problems. For example, I have used gmeteor to find the optimal minimum-length filter satisfying a given set of constraints, to produce many variations of a given filter, and to produce a ‘C’ source file that implements a given filter. Because a full programming language is always available in gmeteor, you can customize the tool to solve your own problems, rather than being limited to what the gmeteor's author had in mind when he wrote the program.

A filter, for the purposes of this manual, is a linear time-invariant signal-processing system that is designed to modify certain frequencies relative to others. For example, a system that eliminates all frequencies above 3500Hz and does not modify lower frequencies is a “low-pass” filter. (A similar system may be used in your phone.) This manual assumes that you are familiar with filters and discrete-time signal processing (also called “digital signal processing”). Otherwise, many textbooks on the subject are available, such as Discrete-Time Signal Processing, by Alan Oppenheim and Ronald Schafer. Without much signal processing knowledge, you can understand this manual and use gmeteor at an intuitive level, but in order to exploit gmeteor fully, a systematic training in the signal-processing field is desirable.

gmeteor is based on the algorithm described in the paper METEOR: a Constraint-based FIR Filter Design Program, by K. Steiglitz, T. W. Parks, and J. F. Kaiser, published in IEEE Trans. Signal Processing, vol. 40, no. 8, pp. 1901-1909, August 1992. (Both the paper and the METEOR program are available at In this beautiful and very readable paper, Steiglitz et al. reduce the filter design problem to a linear programming problem, which in turn is solved by the simplex algorithm. This filter-design methodology is elegant and very general, but unfortunately, the METEOR program falls short of implementing the methodology in its full generality. For example, the algorithm in the paper can approximate arbitrary frequency responses, but METEOR is restricted to piecewise linear or exponential functions. gmeteor implements the ideas described in the METEOR paper without imposing arbitrary restrictions on the METEOR algorithm.

gmeteor is user-friendly: simple filters can be designed easily, but complicated filters are possible. To design a filter with gmeteor, you must first prepare a specification file that describes the desired filter. If the specification file is called ‘myfilter’ (for example), you design the filter by invoking ‘gmeteor myfilter’. A simple specification file could be the following:

     (sampling-frequency 8000)
     (filter-length 21)
     (limit-= (band 0 2000) 1)
     (limit-= (band 3000 4000) 0)

The previous specification file describes a low-pass filter of length 21. The sampling frequency is 8000Hz, the frequency response has magnitude 1 for frequencies between 0Hz and 2000Hz, and the frequency response is 0 for frequencies between 3000Hz and 4000Hz.

The specification file is actually a program written in the Scheme programming language (which accounts for the many parentheses in the example). You need to know Scheme if you want to use gmeteor's advanced features, but in most cases and for most users, no knowledge of Scheme is required.

The rest of this manual is organized as follows. The tutorial chapter, Tutorial, explains how to use gmeteor with a series of examples. The reference chapter, gmeteor Reference, documents gmeteor systematically. Installation explains how to install gmeteor on your system. License and Copyright gives license and copyright information.