This directory contains the Multi-Band Dynamic Range Compressor.
Splits the audio into several discrete frequency bands (e.g., bass, mids, treble) and applies a separate instance of DRC to each band before remixing them.
graph LR
In[Audio Input] --> Splitter[Band Splitter]
Splitter --> DRC1[DRC Band 1]
Splitter --> DRC2[DRC Band 2]
DRC1 --> Sum[Mixer]
DRC2 --> Sum
Sum --> Out[Audio Output]
- Kconfig: Enables the Multiband Dynamic Range Compressor component (
COMP_MULTIBAND_DRC). Has explicit dependencies on standard equalizers and filters:COMP_IIR && COMP_CROSSOVER && COMP_DRC. - CMakeLists.txt: Compiles
multiband_drc.cand generic versions, wrapping with IPC specifics (multiband_drc_ipc3.cormultiband_drc_ipc4.c). Supports Zephyr loadable extensions (llext). - multiband_drc.toml: Defines module topology constraints and mapping (UUID
UUIDREG_STR_MULTIBAND_DRC, module type 9). - Topology (.conf): Derived from
tools/topology/topology2/include/components/multiband_drc.conf, configuring themultiband_drcwidget object of typeeffect(UUID56:22:9f:0d:4f:8e:b3:47:84:48:23:9a:33:4f:11:91). Utilizes an internal switch control forfc. - MATLAB Tuning (
tune/): Featuressof_example_multiband_drc.mto generate the complex configuration structures necessary to bind multiple EQs, crossovers, and compressors together. The scripts output the aggregated.m4, binary.bin, and ALSA.txtblobs which define parameter blocks for each individual sub-system active within the multiband processor.