Document toolboxDocument toolbox

(8.D.2.7) AGCNoiseGateCore

Overview

Gain computer used to realize noise gates

Discussion

On/off style noise gate, where the volume is muted (via a crossfade) when it falls below a certain threshold, and it turns back on (via a crossfade) when it rises back above a threshold. The module is designed to take a multichannel signal as its input, and outputs a mono gain control signal to be used with the MultiplierV2 module. The input signal level is determined by a variant of RMS, where separate time constants are used for the attack and release portions of the input signal. Hysteresis is incorporated within the module to avoid gain oscillation around the threshold. The delta parameter is used in conjunction with the threshold parameter to establish the bounds of the hysteresis. When the input RMS falls below threshold-delta, the noise gate enters into its muted state, and the output gain control signal will ramp from 1.0 to 0.0 at a rate determined by the crossfadeTime parameter. When the input RMS is above threshold-delta, the noise gate will ramp the output gain control signal back to 1.0.

Type Definition

typedef struct _ModuleAGCNoiseGateCore { ModuleInstanceDescriptor instance; // Common Audio Weaver module instance structure FLOAT32 threshold; // Activation threshold of the noise gate, in decibels. When the RMS gain dips below (threshold-delta), the output gain will be ramped to zero (-inf dB). FLOAT32 delta; // Hysterisis width of the noise gate, in decibels. When the RMS gain dips below the dB value of (threshold-delta), the output gain will be ramped to zero (-inf dB). The output gain will return to 0 dB when the input RMS value rises above (threshold+delta). FLOAT32 attackTime; // Attack time of the noise gate. This controls the RMS smoothing interval when the input is increasing in volume, and the time constant of the smoothly updating gain FLOAT32 releaseTime; // Decay time of the noise gate. This controls the RMS smoothing interval when the input is decreasing in volume, and the time constant of the smoothly updating gain FLOAT32 crossfadeTime; // Response time of the noise gate. This controls the time constant of the smoothly updating output gain INT32 isMuted; // Boolean that determines whether the output is muted (isMuted=1) or active (isMuted=0). FLOAT32 lowerThreshold; // Lower activation threshold of the noise gate, in linear units. Computed as undb10f(threshold-delta). FLOAT32 upperThreshold; // Upper activation threshold of the noise gate, in linear units. Computed as undb10f(threshold-delta). FLOAT32 attackCoeffBlock; // Block-by-block smoothing coefficient for the attack portion of the RMS measurement. Set via smoothingTime. FLOAT32 releaseCoeffBlock; // Block-by-block smoothing coefficient for the release portion of the RMS measurement. Set via smoothingTime. FLOAT32 smoothingCoeffOutput; // Sample-by-sample smoothing coefficient for the output gain adjustment. Set via crossfadeTime. FLOAT32 targetGain; // Target gain of the smoothing operation. FLOAT32 currentGain; // Instanteous gain of the smoothing operation. FLOAT32 energy; // Smoothed energy measurement. FLOAT32 oneOverNumSamples; // 1 divided by the number of samples in the input pin. Used internally by the algorithm in order to save a divide operation. } ModuleAGCNoiseGateCoreClass;

Variables

Properties

Name

Type

Usage

isHidden

Default value

Range

Units

threshold

float

parameter

0

-40

-100:0

dB

delta

float

parameter

0

3

0:20

dB

attackTime

float

parameter

0

10

1:5000

msec

releaseTime

float

parameter

0

500

1:5000

msec

crossfadeTime

float

parameter

0

20

1:100

msec

isMuted

int

state

0

0

0:1

 

lowerThreshold

float

derived

1

5.012e-05

Unrestricted

 

upperThreshold

float

derived

1

0.0001995

Unrestricted

 

attackCoeffBlock

float

derived

1

0.06449

Unrestricted

 

releaseCoeffBlock

float

derived

1

0.001332

Unrestricted

 

smoothingCoeffOutput

float

derived

1

0.001041

Unrestricted

 

targetGain

float

state

1

0

Unrestricted

 

currentGain

float

state

1

0

Unrestricted

 

energy

float

state

1

0

-80:10

 

oneOverNumSamples

float

state

1

0.03125

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: agc_noise_gate_core_module.m

M=agc_noise_gate_core_module(NAME) Audio Weaver module which mutes the output gain value if the input RMS value is less than the threshold. The module generates a smoothed gain control signal for fading the signal in and out, and incorporates hysteresis to avoid gain oscillation around the threshold. Arguments: NAME - name of the module.

Â