AGCCoreFract32
Overview
Automatic Gain Control gain calculator module
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.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
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.