Standards-based graphic equalizer
Audio Toolbox / Filters
The Graphic EQ block implements a graphic equalizer that can tune the gain on individual octave or fractional octave bands. The block filters the data independently across each input channel over time using the filter specifications. Center frequencies for bands in the graphic equalizer are based on the ANSI S1.11-2004 standard.
Port_1 — Input signal
matrix | 1-D vector
Matrix input –– Each column of the input is treated as an independent channel.
1-D vector input –– The input is treated as a signal channel.
Port_1 — Output signal
The Graphic EQ block outputs a signal with the same data type as the input signal. The size of the output depends on the size of the input:
Matrix input –– The block outputs a matrix the same size and data type as the input signal.
1-D vector input –– The block outputs an N-by-1 matrix (column vector), where N is the number of elements in the 1-D vector input.
If a parameter is listed as tunable, then you can change its value during simulation.
EQ Order — Order of individual equalizer bands
2 (default) | positive even integer
Specify the order of individual equalizer bands as a positive even integer. All equalizer bands have the same order.
Bandwidth — Filter bandwidth (octaves)
1 octave (default) |
2/3 octave |
Specify the filter bandwidth as
2/3 octave, or
The ANSI S1.11-2004 standard defines the center and edge frequencies of your equalizer. The ISO 266:1997(E) standard specifies corresponding preferred frequencies for labeling purposes.
Gains — Gain of each octave or fractional octave band (dB)
0 | scalar
Specify the gain of each octave or fractional octave band in dB. The number and position of filters in the graphic equalizer depends on the Bandwidth parameter.
Variable name — Variable name of exported filter
myFilt (default) | valid variable name
Name of the variable in the base workspace to contain the filter when it is exported. The name must be a valid MATLAB® variable name.
Overwrite variable if it already exists — Overwrite variable if it already exists
on (default) |
When you select this parameter, exporting the filter overwrites the
variable specified by the Variable name parameter if it
already exists in the base workspace. If you do not select this parameter
and the specified variable already exists in the workspace, exporting the
filter creates a new variable with an underscore and a number appended to
the variable name. For example, if the variable name is
var and it already exists, the exported variable will
Export filter to workspace — Export filter to workspace
Export the filter to the base workspace in the variable specified by the Variable name parameter.
You cannot export the filter if you have enabled the Inherit sample rate from input parameter and the model is not running.
Inherit sample rate from input — Specify source of input sample rate
off (default) | on
When you select this parameter, the block inherits its sample rate from the input signal. When you clear this parameter, specify the sample rate in Input sample rate (Hz).
Input sample rate (Hz) — Sample rate of input
44100 (default) | scalar
To enable this parameter, clear the Inherit sample rate from input parameter.
Simulate using — Specify type of simulation to run
Code generation (default) |
Interpreted execution–– Simulate model using the MATLAB interpreter. This option shortens startup time and has simulation speed comparable to
Code generation. In this mode, you can debug the source code of the block.
Code generation–– Simulate model using generated C code. The first time you run a simulation, Simulink® generates C code for the block. The C code is reused for subsequent simulations, as long as the model does not change. This option requires additional startup time but the speed of the subsequent simulations is faster than
The implementation of your graphic equalizer depends on the Structure parameter. See Graphic Equalization for a discussion of the pros and cons of the parallel and cascade implementations. Refer to the following sections to understand how these algorithms are implemented in Audio Toolbox™.
The parallel implementation designs the individual equalizers using the
design method and spaces them on the spectrum according to the ANSI
If you set the Input sample rate (Hz) parameter so that
the Nyquist frequency (Input sample rate
/2) is less than the final bandpass edge
defined by the ANSI S1.11-2004 standard, then:
The final bandpass filter is the one whose upper bandpass edge is less than the Nyquist frequency.
The final filter is implemented as a highpass filter designed by the
The input signal is fed into a filterbank of M filters, where M depends on the specified Bandwidth and Input sample rate (Hz) parameters.
Each branch of the filterbank is multiplied by the linear form of the corresponding element of the Gains parameter.
The branches are summed and the output signal is returned.
The cascade implementation designs the graphic equalizer filter bank using the
If the EQ Order parameter is set to 2, then a gain correction is calculated according to . The gain correction is independent of the requested gains. The gain correction is recomputed during the real-time processing only if the Input sample rate (Hz) parameter is modified.
If the EQ Order parameter is not set to 2, no gain
correction is applied and the requested gains are passed on to the
The input signal is fed into a cascade of M biquad filters, where M depends on the specified Bandwidth and Input sample rate (Hz) parameters.
 Oliver, Richard J., and Jean-Marc Jot. "Efficient Multi-Band Digital Audio Graphic Equalizer with Accurate Frequency Response Control." Presented at the 139th Convention of the AES, New York, October 2015.
 Acoustical Society of America. American National Standard Specification for Octave-Band and Fractional-Octave-Band Analog and Digital Filters. ANSI S1.11-2004. Melville, NY: Acoustical Society of America, 2009.
 International Organization for Standardization. Acoustics –– Preferred frequencies. ISO 266:1997(E). Second Edition. 1997.
C/C++ Code Generation
Generate C and C++ code using Simulink® Coder™.
Introduced in R2017b