Skip to main content
Skip table of contents

ScalerNV2

Overview

General purpose scaler with separate gains per channel

Discussion

General purpose scaler (or gain) module for floating-point signals. This module has a single gain (masterGain) which is applied all channels plus a separate per channel gain (trimGain). For each channel, masterGain and trimGain[n] is combined to form the target gain value.

The gains are intrepreted as either linear or dB values based on the isDB module variable. By default, isDB=1 and the gains are treated as dB values. If you set isDB=0 then the gains are treated as linear values. When in dB, targetGain = masterGain + trimGain[n]. When in linear mode, targetGain = masterGain * trimGain[n].

The module can also switch between smoothed and unsmoothed gain changes. You enable smoothing by setting the parameter smoothingTime to a non-zero value. If smoothingTime=0 then no smoothing is performed. The module is slightly more efficient when no smoothing occurs.

The module argument NUMCHANNELS sets the initial number of channels. This allows you to configure the module for the proper number of channels before the system is built. After the system is built, NUMCHANNELS is no longer used and the number of channels is determined from the input wire. The description above applies to real data. The module can also handle complex data but in the case of complex data no smoothing is performed and the gain value is applied to both the real and imaginary parts.

Type Definition

CODE
typedef struct _ModuleScalerNV2
{
    ModuleInstanceDescriptor instance;            // Common Audio Weaver module instance structure
    FLOAT32 masterGain;                           // Overall gain to apply.
    FLOAT32 smoothingTime;                        // Time constant of the smoothing process (0 = unsmoothed).
    INT32 isDB;                                   // Selects between linear (=0) and dB (=1) operation
    FLOAT32 smoothingCoeff;                       // Smoothing coefficient.
    FLOAT32* trimGain;                            // Array of trim gains, one per channel
    FLOAT32* targetGain;                          // Computed target gains in linear units
    FLOAT32* currentGain;                         // Instanteous gains. These ramp towards targetGain
} ModuleScalerNV2Class;

Variables

Properties

Name

Type

Usage

isHidden

Default value

Range

Units

masterGain

float

parameter

0

0

-24:24

dB

smoothingTime

float

parameter

0

10

0:1000

msec

isDB

int

parameter

0

1

0:1

smoothingCoeff

float

derived

1

0.002081

Unrestricted

trimGain

float*

parameter

0

[1 x 1]

-24:24

dB

targetGain

float*

derived

1

[1 x 1]

Unrestricted

currentGain

float*

state

1

[1 x 1]

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 and Complex

Output Pins

Name: out

Description: audio output

Data type: float

MATLAB Usage

File Name: scalern_v2_module.m

CODE
 M = scalern_v2_module(NAME, NUMCHANNELS)
 General purpose scaler module with a separate gain per channel.
 The module can be configured for linear or dB operation as well as
 smoothed and unsmoothed gain changes. Arguments:
    NAME - name of the module.
    NUMCHANNELS - default number of channels.  Default = 1.  This is
        used to draw the initial inspector.  The actual number of
        channels processed by the module is determined by pin
        propagation.

JavaScript errors detected

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

If this problem persists, please contact our support.