Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Scroll Documents: Update page title prefix

Overview

Soft knee gain computer for use in peak limiters

Discussion

The limiter core provides a peak amplitude follower and input/output gain transfer function for use in AGC systems. It is designed to take as its input the output of the BlockStatistics or the Abs module. The module outputs the time varying gain on the output pin which is typically used as input to the AGCMultiplier or a ScalerNControl module

...

V2 was introduced to allow multichannel inputs which in effect significantly reduces the module processing load compared to using multiple instances of the initial single channel version.

Type Definition

Code Block
typedef struct _ModuleAGCLimiterCoreV2
{
    ModuleInstanceDescriptor instance;            // Common Audio Weaver module instance structure
    INT32 numChan;                                // Number of channels.
    FLOAT32* threshold;                           // Amplitude level at which the AGC Limiter Core reduces its output gain value
    FLOAT32* gain;                                // Value used to scale the output of the AGC Limiter Core (make up gain)
    FLOAT32* kneeDepth;                           // Knee depth controls the sharpness of the transition between no limiting and limiting
    FLOAT32* ratio;                               // Slope of the output attenuation when the signal is above threshold - derived from the standard compression ratio parameter by the formula slope = 1.0 - (1.0/ratio)
    FLOAT32* attackTime;                          // Envelope detector attack time constant
    FLOAT32* decayTime;                           // Envelope detector decay time constant
    FLOAT32* slope;                               // Internal derived variable which holds the slope of the compression curve
    FLOAT32* sharpnessFactor;                     // Internal derived variable which is used to implement the soft knee
    FLOAT32* attackCoeff;                         // Internal derived variable which implements the attackTime
    FLOAT32* decayCoeff;                          // Internal derived variable which implements the decayTime
    FLOAT32* envState;                            // Holds the instantaneous state of the envelope detector
    FLOAT32* currentGain;                         // Instantaneous gain computed by the block
} ModuleAGCLimiterCoreV2Class;

Variables

Properties

Name

Type

Usage

isHidden

Default value

Range

Units

numChan

int

const

1

1

Unrestricted

threshold

float*

parameter

0

[1 x 1]

-60:0

dB

gain

float*

parameter

0

[1 x 1]

0:60

dB

kneeDepth

float*

parameter

0

[1 x 1]

0.1:60

dB

ratio

float*

parameter

0

[1 x 1]

1:100

attackTime

float*

parameter

0

[1 x 1]

1:2000

msec

decayTime

float*

parameter

0

[1 x 1]

1:2000

msec

slope

float*

derived

1

[1 x 1]

Unrestricted

dB/dB

sharpnessFactor

float*

derived

1

[1 x 1]

Unrestricted

attackCoeff

float*

derived

1

[1 x 1]

Unrestricted

decayCoeff

float*

derived

1

[1 x 1]

Unrestricted

envState

float*

state

1

[1 x 1]

Unrestricted

currentGain

float*

state

0

[1 x 1]

Unrestricted

Pins

Input Pins

Name: in

Description: audio input

...

Sample rate range: Unrestricted

Complex support: Real

Output Pins

Name: out

Description: audio output

Data type: float

Scratch Pins

Channel count: 1

Block size: 32

...

Block size: 32

Sample rate: 48000

MATLAB Usage

File Name: agc_limiter_core_v2_module.m

...