Document toolboxDocument toolbox

(8.D.2.3) GraphicEQBandHP

Overview

Single band of a cascade graphic equalizer with high precision implementation

Discussion

This module implements a single stage of a graphic equalizer. The stage provides boost or cut over a specified frequency range. A multistage graphic EQ subsystem is constructed as a series cascade of these modules. The multistage graphic EQ is contained within graphic_eq_fract32_subsystem.m. This module is typically not used directly; use the graphic_eq_fract32_subsystem.m instead.

The variables .lowerEdge and .upperEdge specify the range of frequencies, in Hz, over which the filter is effective. The variable .gain specifies the boost or cut in dB.

The design of the module is based upon the paper "Graphic Equalizer Design User Higher-Order Recursive Filters" by Holters and Zoelzer. The order of the filter of either 4, 8, or 12 is specified upon instantiation. Higher order filters provide sharper cutoffs at the expense of additional computation. As a rule of thumb, you can use 4th order filters until you have approximately 5 filter bands, 8th order filters until you have 15 filter bands, and 12th order filters for up to 31 bands. The order of the filter can only be set at instantiation time.

Internally, the filter is implemented as a cascade of second order biquad sections with high precision implementation.

Type Definition

typedef struct _ModuleGraphicEQBandHP { ModuleInstanceDescriptor instance; // Common Audio Weaver module instance structure FLOAT32 gain; // Gain in the center of the band, in dB. FLOAT32 lowerEdge; // Lower frequency edge of the band, in Hz. FLOAT32 upperEdge; // Upper frequency edge of the band, in Hz. FLOAT32 smoothingTime; // Time constant of the smoothing process. INT32 numStages; // Number of 2nd order stages in the filter. INT32 updateActive; // Internal control flag which enables currentCoeff updating in process function. FLOAT32 smoothingCoeff; // Smoothing coefficient. FLOAT32* targetCoeffs; // Target coefficient array. Each column contains the variables for a biquad arranged as [Fb; Gaa; Gab; K; Fa]. FLOAT32* currentCoeffs; // Current coefficient array after smoothing. Each column contains the variables for a biquad arranged as [Fb; Gaa; Gab; K; Fa]. FLOAT32* state; // State variable array with 2 values per stage per channel. } ModuleGraphicEQBandHPClass;

Variables

Properties

Name

Type

Usage

isHidden

Default value

Range

Units

gain

float

parameter

0

0

-12:0.1:12

dB

lowerEdge

float

parameter

0

100

20:20000

Hz

upperEdge

float

parameter

0

500

20:20000

Hz

smoothingTime

float

parameter

0

20

0:1000

msec

numStages

int

const

0

4

Unrestricted

 

updateActive

int

state

0

1

Unrestricted

 

smoothingCoeff

float

derived

1

0.03278

Unrestricted

 

targetCoeffs

float*

parameter

1

[5 x 4]

Unrestricted

 

currentCoeffs

float*

parameter

1

[5 x 4]

Unrestricted

 

state

float*

state

1

[2 x 4]

Unrestricted

 

Pins

Input Pins

Name: in

Description: audio input

Data type: float

Channel range: Unrestricted

Block size range: Unrestricted

Sample rate range: Unrestricted

Complex support: Real

Output Pins

Name: out

Description: audio output

Data type: float

MATLAB Usage

File Name: graphic_eq_bandHP_module.m

M=graphic_eq_bandHP_module(NAME, ORDER) Implements a single band of a cascade graphic equalizer. This module forms part of the overall graphic_eqHP_subsystem. This version uses high precision implementation. Arguments: NAME - name of the module. ORDER - filter order of the stage. This must be either 4, 8, or 12. By default, ORDER=8.

Â