Skip to main content
Skip table of contents

AGCCoreFract32

Overview

Automatic Gain Control gain calculator module

Type Definition

CODE
typedef struct _ModuleAGCCoreFract32
{
    ModuleInstanceDescriptor instance;            // Common Audio Weaver module instance structure
    FLOAT32 targetLevel;                          // Target audio level
    FLOAT32 maxAttenuation;                       // Maximum attenuation of the AGC
    FLOAT32 maxGain;                              // Maximum gain of the AGC
    FLOAT32 ratio;                                // Slope of the output attenuation when the signal is above threshold
    FLOAT32 activationThreshold;                  // Activation threshold of the AGC. The AGC stops updating its gain when the instantaneous input level is below this value
    FLOAT32 smoothingTime;                        // Response time of the AGC. This controls the RMS smoothing interval and the time constant of the smoothly updating gain
    INT32 enableRecovery;                         // Boolean which enables the AGC's gain recovery. If enabled, the AGC slows returns 0 dB gain when the input is below the activation threshold
    FLOAT32 recoveryRate;                         // Rate at which the gain is adjusted when the input is below the activation threshold
    FLOAT32 currentGain;                          // Instantaneous gain of the smoothing operation.
    fract32 smoothingCoeffSampleFract32;          // Sample-by-sample smoothing coefficient for the output gain adjustment. Set via smoothingTime.
    fract32 smoothingCoeffBlockFract32;           // Block-by-block smoothing coefficient for the RMS measurement. Set via smoothingTime.
    fract32 targetGainFract32;                    // Target gain of the smoothing operation.
    fract32 energyFract32;                        // Smoothed energy measurement.
    fract32 oneOverNumSamplesFract32;             // 1 divided by the number of samples in the input pin. Used internally by the algorithm in order to save a divide operation.
    fract32 oneOverSlopeFract32;                  // Used by the processing function to compute the amount of cut/boost. Equal to 1-1/ratio.
    FLOAT32 oneOverSlope;                         // Used by the processing function to compute the amount of cut/boost. Equal to 1-1/ratio.
    FLOAT32 smoothingCoeffSample;                 // Sample-by-sample smoothing coefficient for the output gain adjustment. Set via smoothingTime.
    FLOAT32 smoothingCoeffBlock;                  // Block-by-block smoothing coefficient for the RMS measurement. Set via smoothingTime.
    FLOAT32 recoveryRateUp;                       // Recovery rate coefficient when increasing the gain (it is always >= 1)
    FLOAT32 recoveryRateDown;                     // Recovery rate coefficient when decreasing the gain (it is always <= 1)
    FLOAT32 targetGain;                           // Target 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.
    fract32 targetLevelFract32;                   // Target audio level
    fract32 maxGainFract32;                       // Maximum gain of the AGC
    fract32 maxAttenuationFract32;                // Maximum attenuation of the AGC
    fract32 activationThresholdFract32;           // Activation threshold of the AGC. The AGC stops updating its gain when the instantaneous input level is below this value
    fract32 recoveryRateUpFract32;                // Recovery rate coefficient when increasing the gain (it is always >= 1)
    fract32 recoveryRateDownFract32;              // Recovery rate coefficient when decreasing the gain (it is always <= 1)
    fract32 currentGainFract32;                   // Instantaneous gain of the smoothing operation.
} ModuleAGCCoreFract32Class;

Variables

Properties

Name

Type

Usage

isHidden

Default value

Range

Units

targetLevel

float

parameter

0

-20

-50:0.1:50

dB

maxAttenuation

float

parameter

0

100

0:100

dB

maxGain

float

parameter

0

12

0:50

dB

ratio

float

parameter

0

10

1:100

dB/dB

activationThreshold

float

parameter

0

-50

-100:-20

dB

smoothingTime

float

parameter

0

100

1:5000

msec

enableRecovery

int

parameter

0

1

0:1

recoveryRate

float

parameter

0

2.4

1:20

dB/sec

currentGain

float

state

0

0

-12:12

smoothingCoeffSampleFract32

fract32

derived

0

0.0002083

Unrestricted

smoothingCoeffBlockFract32

fract32

derived

0

0.006644

Unrestricted

targetGainFract32

fract32

state

0

0

Unrestricted

energyFract32

fract32

state

0

0

Unrestricted

oneOverNumSamplesFract32

fract32

derived

0

0.03125

Unrestricted

oneOverSlopeFract32

fract32

derived

0

0.9

Unrestricted

oneOverSlope

float

derived

1

0.9

Unrestricted

smoothingCoeffSample

float

derived

1

0.0002083

Unrestricted

smoothingCoeffBlock

float

derived

1

0.006644

Unrestricted

recoveryRateUp

float

derived

1

1

Unrestricted

recoveryRateDown

float

derived

1

0.9998

Unrestricted

targetGain

float

state

1

0

Unrestricted

energy

float

state

1

0

Unrestricted

oneOverNumSamples

float

derived

1

0.03125

Unrestricted

targetLevelFract32

fract32

derived

1

-0.1563

Unrestricted

maxGainFract32

fract32

derived

1

0.09375

Unrestricted

maxAttenuationFract32

fract32

derived

1

0.7813

Unrestricted

activationThresholdFract32

fract32

derived

1

-0.3906

Unrestricted

recoveryRateUpFract32

fract32

derived

1

0.25

Unrestricted

recoveryRateDownFract32

fract32

derived

1

0.25

Unrestricted

currentGainFract32

fract32

state

1

0

Unrestricted

Pins

Input Pins

Name: in

Description: Audio input

Data type: fract32

Channel range: 1

Block size range: Unrestricted

Sample rate range: Unrestricted

Complex support: Real

Output Pins

Name: out

Description: audio output

Data type: fract32

MATLAB Usage

File Name: agc_core_fract32_module.m

CODE
 M=agc_core_fract32_module(NAME)
 Audio Weaver modules which calculates the instantaneous gain needed
 by an automatic gain control AGC module.  This module is used in
 conjunction with the agc_multiplier_module. The input format for this 
 module is 1.31 and output format is 4.28.
    NAME - name of the module.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.