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:
-
Mute the output
-
Set the previously active subsystem/module to INACTIVE or BYPASS
-
Set the newly active subsystem/module to ACTIVE
-
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
|
|
| 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.