Skip to content

Commit 880995c

Browse files
author
Goran Mekić
committed
Add bandwidth plugin
1 parent 8099a41 commit 880995c

10 files changed

Lines changed: 1991 additions & 1 deletion

File tree

README.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ theme.
1111
| Plugin | ID | I/O | Description |
1212
|--------|-----|-----|-------------|
1313
| **Maolan Compressor** | `rs.maolan.compressor.{mono,stereo}` | Mono / Stereo | 4-band multiband compressor with lookahead and sidechain boost |
14+
| **Maolan Bandwidth** | `rs.maolan.bandwidth` | Stereo | Tri-band M/S spatial processor |
1415
| **Maolan Delay** | `rs.maolan.delay.{mono,stereo}` | Mono / Stereo | Delay with ms / note-sync modes and smooth chasing |
1516
| **Maolan DeEsser** | `rs.maolan.deesser.stereo` | Stereo | Sibilance reduction processor |
1617
| **Maolan EQ — Parametric** | `rs.maolan.equalizer.parametric.{mono,stereo}` | Mono / Stereo | 32-band parametric EQ with peaking biquad filters |
@@ -78,6 +79,43 @@ In **Note** mode the plugin reads the host BPM from the CLAP transport each proc
7879

7980
---
8081

82+
## Maolan Bandwidth
83+
84+
A tri-band M/S spatial processor with psychoacoustic decorrelation. Splits the stereo signal
85+
into three frequency bands using LR4 Linkwitz-Riley crossovers (300 Hz and 5 kHz), processes
86+
each band in the mid/side domain with all-pass diffusion, band-specific saturation, and a
87+
subtle global side-channel chorus, then recombines with energy-compensated summation and a
88+
dry/wet mix control.
89+
90+
**Parameters**
91+
92+
| Parameter | Range | Default | Description |
93+
|-----------|-------|---------|-------------|
94+
| Low Width | 0.0 … 1.0 | 0.0 | Low-band side gain with 100 Hz side HPF |
95+
| Mid Width | 0.0 … 1.0 | 0.0 | Mid-band all-pass diffusion + side saturation |
96+
| High Width | 0.0 … 1.0 | 0.0 | High-band all-pass diffusion + side shelf |
97+
| Mix | 0.0 … 1.0 | 1.0 | Dry/wet blend (0 = bypass, 1 = full effect) |
98+
99+
**Band processing**
100+
- **Low (< 300 Hz):** Side gain boost with a 100 Hz high-pass (12 dB/oct) on the side channel to
101+
keep sub frequencies mono-compatible. Bass stays clean — no saturation.
102+
- **Mid (300 Hz – 5 kHz):** 3-stage all-pass cascade on left and right with offset coefficients
103+
to generate stereo width from mono sources through phase decorrelation. Side channel receives
104+
subtle `tanh` saturation (1.5× drive) before M/S decode, adding analog-style harmonic density.
105+
- **High (> 5 kHz):** 3-stage all-pass on left and right with different coefficients, then M/S
106+
encode. The side channel passes through a 0–+3 dB high-shelf boost above 10 kHz for shimmer
107+
and air, followed by subtle `tanh` saturation for density.
108+
- **Global side chorus:** After band summation, the global side signal passes through a modulated
109+
delay (0.5 Hz LFO, 0.5 ms depth) for a ~3-cent pitch shimmer that adds an enveloping 3D feel
110+
without comb filtering. Fully mono-compatible — the effect cancels when summed to mono.
111+
- **Dry/wet mix:** Blend between the original input and the fully processed + chorused signal.
112+
- **Energy compensation:** M/S is encoded with the unitary transform (1/√2). Mid gain is scaled
113+
by `√(2 − side_gain²)` so that `M² + S²` stays constant — no loudness illusion when widening.
114+
- **Phase compensation:** The low band passes through an allpass filter matching the 5 kHz
115+
crossover phase, ensuring flat magnitude when the three bands are recombined.
116+
117+
---
118+
81119
## Maolan DeEsser
82120

83121
A sibilance reduction processor that detects ess sounds by analyzing slew-rate patterns across a

0 commit comments

Comments
 (0)