Hi Team,
I’m working on a custom Audio Weaver module where the input is stereo (2 channels) and the output is configured as 6 channels. The active processing and bypass modes are working as expected, and mute also behaves correctly.
However, when I change the module runtime state to inactive, the output sometimes contains unexpected or garbage values/zero. I noticed that unlike process, bypass, and mute, there doesn’t appear to be a specific inactive function hook in the module structure.
Could you please clarify how the inactive state is expected to behave for custom modules? Should the framework automatically handle the output buffer, or is it recommended for the module developer to explicitly clear or manage the output buffer when inactive?
Thanks in advance for your guidance.
Best regards,
Monika V
11:58am
Hi Monika,
"Inactive" state can cause unexpected results. There is nothing specifically in the module code to handle this state - it's handled at a higher level. This can result in the input buffer being passed to the output wire, or zeroes, or something else. If you wish to deactivate the module at run time to save CPU cycles, I recommend that you look at the ActivationMux and ActivationMute modules.
See:
ActivationMute - DSPC Dochub
ActivationMux - DSPC Dochub
Also see the example layouts which have more detailed info on how it works and how to use these modules.
"C:\DSP Concepts\AWE Designer 8.2025.3 Standard\Examples\Module_Usage\ActivationMuteExample1.awd"
"C:\DSP Concepts\AWE Designer 8.2025.3 Standard\Examples\Module_Usage\ActivationMuxExample1.awd"
Thanks,
Gary
11:23am
HI Gary ,
Thanks for the reply
I need a a clarification . As per your statement , I understood that , no need to take care any code handling for inactive mode in the custom module. .
query :
I1. s my understanding was correct ?
2. You said -"it's handled at a higher level" . Could you please explain about this bit more ?
Thanks
Monika V
1:43pm
Hi Monika,
Your understanding is correct - nothing in the Module code itself has anything to do with the "Inactive" state. If a module is set to "Inactive", when the time comes in executing the signal flow, that particular module's process() function is skipped completely, but this decision is made outside of the module itself.
The issue with using "Inactive" is that Audio Weaver attempts to re-use wire buffers (starting from the front end of the layout) towards the end. If an active module is connected to a re-used wire buffer, then that module writes into the wire buffer and all is fine. If that module is inactive, it does not write anything into the wire buffer and so it could contain whatever data it had in it from the previous module that wrote into it. Or, it's possible that no suitable pre-used buffer was available, so a new wire buffer got allocated. This all happens behind the scenes and it is not possible to directly control that. The ActivationMute and ActivationMux modules manage that by simultaneously controlling the Run-Time state of the module and taking the wire from the Module's output pin so that any possible "garbage" can be prevented from flowing through.
Thanks,
Gary W.
2:34pm
Hi Gary,
Thanks for sharing the detail info . I understood clearly.