Skip to content

ActivationMute

Discussion

This is a subsystem which implements an intelligent mute and statusSet controller that safely activates and deactivates modules or subsystems assigned to it.

In the module arguments, the user specifies the number of modules or subsystems to be controlled (numMod), the names of subsystems/modules to control, and whether the module has a control input pin (indexPin) and/or a state output pin (transitionPin). The state output pin will output 0 when the module is in steady state, and 1 when the module is transitioning from one active subsystem/module to another. The subsystems/modules being controlled by this module must be listed in the same order that they are connected to the input pins; that is, the subsystem/module listed for the ModOrSubSys1 arg must be connected with the logic assembled to input pin muteGet1. The user of this module has to ensure binary state of muteGet input pins (0=unmuted, 1=muted).

Compared to ActivationMultiplexor module in this case all modules or subsystems can be on different hierarchy levels as the corresponding ActivationMute module.

The module has a zero-based index variable that controls which input signal path is active (index = 0 selects modOrSubsys1 as active). The optional indexPin can be used to control the index instead of accessing the variable directly. When the index changes, the module goes through these steps to transition from the previously active system to the new system:

  1. Mute the output

  2. Set the previously active subsystem/module to INACTIVE or BYPASS

  3. Set the newly active subsystem/module to ACTIVE

  4. Unmute the output

These steps allow for more deterministic control when activating and deactivating subsystems because it doesn't matter how long it takes for the state changing to happen. If used correctly, this module will eliminate potential causes of audio glitches and CPU overflows while transitioning the states of multiple subsystems/modules.

Note: Use BYPASS instead of INACTIVE in the case of having FIFO style modules included (e.g. BufferUp/BufferDown), where the input and output buffers must remained synced.

Module Pack

Advanced

ClassID

classID =

Type Definition

typedef struct _ModuleActivationMute
{
ModuleInstanceDescriptor instance;            // Common Audio Weaver module instance structure
} ModuleActivationMuteClass;

Variables

Properties

Name Type Usage isHidden Default Value Range Units
index int state 0 0 0:9
setBehavior int parameter 0 0 0:3
indexPin int const 1 1 Unrestricted

Pins

Input Pins

Name idx
Description input pin control signal
Data type int
Channel range 1:1:1
Block size range 1:1:1
Sample rate range Unrestricted
Complex support Real
Name muteGet1
Description muteGet
Data type int
Channel range 1:1:1
Block size range 1:1:1
Sample rate range Unrestricted
Complex support Real
Name muteGet2
Description muteGet
Data type int
Channel range 1:1:1
Block size range 1:1:1
Sample rate range Unrestricted
Complex support Real
Name muteGet3
Description muteGet
Data type int
Channel range 1:1:1
Block size range 1:1:1
Sample rate range Unrestricted
Complex support Real
Name muteGet4
Description muteGet
Data type int
Channel range 1:1:1
Block size range 1:1:1
Sample rate range Unrestricted
Complex support Real
Name muteGet5
Description muteGet
Data type int
Channel range 1:1:1
Block size range 1:1:1
Sample rate range Unrestricted
Complex support Real
Name muteGet6
Description muteGet
Data type int
Channel range 1:1:1
Block size range 1:1:1
Sample rate range Unrestricted
Complex support Real
Name muteGet7
Description muteGet
Data type int
Channel range 1:1:1
Block size range 1:1:1
Sample rate range Unrestricted
Complex support Real
Name muteGet8
Description muteGet
Data type int
Channel range 1:1:1
Block size range 1:1:1
Sample rate range Unrestricted
Complex support Real
Name muteGet9
Description muteGet
Data type int
Channel range 1:1:1
Block size range 1:1:1
Sample rate range Unrestricted
Complex support Real
Name muteGet10
Description muteGet
Data type int
Channel range 1:1:1
Block size range 1:1:1
Sample rate range Unrestricted
Complex support Real

Output Pins

Name stateCtrl
Description transition state output signal
Data Type int
Name muteSet1
Description muteSet
Data Type int
Name muteSet2
Description muteSet
Data Type int
Name muteSet3
Description muteSet
Data Type int
Name muteSet4
Description muteSet
Data Type int
Name muteSet5
Description muteSet
Data Type int
Name muteSet6
Description muteSet
Data Type int
Name muteSet7
Description muteSet
Data Type int
Name muteSet8
Description muteSet
Data Type int
Name muteSet9
Description muteSet
Data Type int
Name muteSet10
Description muteSet
Data Type int

Scratch Pins

Channel Count 1
Block size 1
Sample rate 48000

Matlab Usage

File Name: activation_mute_subsystem.m 
 SYS = activation_mute_subsystem(NAME, NUMMOD, OFFSTATE, INDEXPIN, TRANSITIONPIN, MOD_1, ...) 

 Creates an intelligent mute and statusSet controller which activates and deactivates  
 modules assigned to it. 

 Arguments: 
    NAME - name of the module. 
    NUMMOD - specifies the number of modules/subsystems to be controlled 
    OFFSTATE - select state for inactive (0 - INACTIVE, 1 - BYPASS) 
    INDEXPIN - enables or disables the control pin 
    TRANSITIONPIN - boolean control output signal that tells when the state transition is occurring 
    MOD_N - specifies the module to be controlled. If a subsystem is 
            specified, then this module will recursively act on all modules and 
            subsystem within that subsystem. The name specified is relative to the 
            level of the status_set_module. 
            The specified MOD name can either be an absolute or relative path from 
            the status_set_module. The backslash character ''\'' before a module 
            is used to denote a module one level up in hierachy. Multiple backslashes 
            can be used to represent multiple levels of hierarchy. 

Copyright (c) 2026 DSP Concepts, Inc.