AGCCoreFract32
Overview
Automatic Gain Control gain calculator module
Discussion
Module Pack
Advanced
ClassID
classID = 1204
Type Definition
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.00020832 | Unrestricted | |
| smoothingCoeffBlockFract32 | fract32 | derived | 0 | 0.0066445 | 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.15625 | Unrestricted | |
| maxGainFract32 | fract32 | derived | 1 | 0.09375 | Unrestricted | |
| maxAttenuationFract32 | fract32 | derived | 1 | 0.78125 | Unrestricted | |
| activationThresholdFract32 | fract32 | derived | 1 | -0.39062 | Unrestricted | |
| recoveryRateUpFract32 | fract32 | derived | 1 | 0.25005 | Unrestricted | |
| recoveryRateDownFract32 | fract32 | derived | 1 | 0.24995 | 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
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.
Copyright (c) 2026 DSP Concepts, Inc.