Files
mbp15-1-audio-dsp/mb-compressor-params.md

77 lines
5.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# LSP `mb_compressor_stereo` — parameter reference
Every key in the `multiband_compressor` node of [graph.json](graph.json), with the
LSP port name in **bold** and the JSON symbol in `code`. Values shown are the
ones currently in the graph (8-band split, `split-limiting` branch).
Source of truth: `mb_compressor_stereo.ttl` from lsp-plugins 25.08.
## Global (once, not per band)
| Key | LSP name | Value | Meaning |
|---|---|---|---|
| `enabled` | Enabled | 1 | plugin active |
| `mode` | Compressor mode | 1 = **Modern** | band-split topology. `0` Classic = analog-style tree of crossovers; `1` Modern = flat per-band summation (cleaner, used here); `2` Linear Phase = FIR, high latency |
| `g_in` / `g_out` | Input / Output gain | 1.0 / 1.4 | linear. `g_out 1.4` ≈ +3 dB — where the EQ's `g_in 0.5` pad is restored, *after* the band detectors |
| `g_dry` / `g_wet` | Dry / Wet gain | 0.0001 / 1.0 | parallel mix — effectively 100 % wet |
## Crossover (index 1–7)
| Key | LSP name | Meaning |
|---|---|---|
| `cbe_N` | **Compression band enable N** | turns split point N on → creates that band boundary. All 7 = `1` → 8 bands |
| `sf_N` | **Split frequency N** (Hz) | the crossover frequency. Currently `60 / 80 / 100 / 130 / 160 / 200 / 500` |
## Per band (index 0–7)
| Key | LSP name | Units | Meaning |
|---|---|---|---|
| `ce_N` | **Compressor enable N** | toggle | band compresses (`0` = passes flat) |
| `al_N` | **Attack threshold N** | linear gain (0.001–1.0) | the threshold — level above this is compressed. dB = 20·log₁₀(g); `0.093` ≈ −21 dB |
| `at_N` | **Attack time N** | ms | how fast gain reduction engages once over threshold |
| `rt_N` | **Release time N** | ms | how fast gain recovers once back under threshold |
| `cr_N` | **Ratio N** | x:1 (1–100) | dB in per dB out above threshold. `1` = off, `2` = gentle, `50` ≈ brick-wall limiter |
| `kn_N` | **Knee N** | linear gain (0.063–1.0) | width of the soft transition **around** the threshold. `1.0` = hard corner; **lower = wider / softer** (`0.063` ≈ ±24 dB — ratio ramps in over a huge range). Plugin default `0.5` (−6 dB) |
| `mk_N` | **Makeup gain N** | linear (0.001–1000) | post-compression level trim for the band. `1.5` ≈ +3.5 dB, `2.0` = +6 dB |
| `scm_N` | **Sidechain mode N** | enum | detector: `0` = **Peak**, `1` RMS, `2` LPF, `3` SMA. Peak is used on every band (right for limiting; plugin default is RMS) |
| `bth_N` | **Boost threshold N** | linear gain (1e-6–1e-3) | only used when band compression mode = Up / Boost. **Inert here** — see note below |
| `bsa_N` | **Boost signal amount N** | linear gain (2.5e-4–3981) | ditto — inert |
Other per-band ports exist in the plugin but are left at default and not written
to the graph: `cm_N` (compression mode: Down/Up/Boost — default Down),
`bs_N`/`bm_N` (band solo/mute), `rrl_N`/`rl_N` (release threshold/level — `0` =
track the attack threshold), and the `sc*_N` sidechain family
(`sce_/scs_/sscs_/sla_/scr_/scp_/sclc_…`).
## Current bands, in plain English
| Band | Range | `al` (thr) | `at` / `rt` | `cr` | `kn` | `mk` | reads as |
|---|---|---|---|---|---|---|---|
| 0 | < 60 Hz | 0.093 (−21 dB) | 2 / 120 ms | 50 | 0.10 (−20 dB) | 1.5 (+3.5 dB) | fast brick-wall; near-empty behind the 60 Hz EQ high-pass |
| 1 | 60–80 Hz | 0.078 (−22 dB) | 5 / 120 ms | 50 | 0.06 (−24 dB, clamped) | 1.5 (+3.5 dB) | lowest ceiling, 50:1, softest knee → heavy but gradual |
| 2 | 80–100 Hz | 0.095 (−20 dB) | 6 / 130 ms | 30 | 0.12 (−18 dB) | 1.7 (+4.6 dB) | one notch gentler than band 1 |
| 3 | 100–130 Hz | 0.120 (−18 dB) | 8 / 150 ms | 20 | 0.20 (−14 dB) | 2.0 (+6 dB) | old "90–200" midbass character |
| 4 | 130–160 Hz | 0.130 (−18 dB) | 8 / 150 ms | 18 | 0.24 (−12 dB) | 2.0 (+6 dB) | " |
| 5 | 160–200 Hz | 0.140 (−17 dB) | 9 / 150 ms | 16 | 0.28 (−11 dB) | 2.0 (+6 dB) | eases toward the body band |
| 6 | 200–500 Hz | 0.159 (−16 dB) | 10 / 150 ms | 15 | 0.30 (−10 dB) | 2.0 (+6 dB) | low-mid body (snare / male vocal) |
| 7 | 500 Hz+ | 0.284 (−11 dB) | 8 / 150 ms | 5 | 0.40 (−8 dB) | 1.3 (+2.3 dB) | single gentle catch-all above 500 Hz |
## Notes / gotchas
- **Knee direction.** Lower `kn` = **wider / softer** knee, not harder. `kn_1 =
0.06` on the 60–80 Hz band is the softest the plugin allows (it clamps `0.06`
→ `0.063`). That band still pulls peaks down hard because of the low threshold
+ 50:1 ratio; the wide knee just means the ratio ramps in gradually starting
well below −22 dB (so there is some low-level gain reduction too). To clamp
those octaves only near the ceiling and keep them cleaner below it, *raise*
`kn_1` / `kn_2` toward `0.3`–`0.5`.
- **`bth_N` / `bsa_N` are dead config.** Set to `1.0` in the graph (inherited
from upstream) but their valid ranges are ~`1e-6`–`1e-3` and
`2.5e-4`–`3981` — the host clamps them. They only apply to upward / boost
compression, which is not enabled (`cm_N` is never set, so every band is
downward), so it is harmless.
- **`al_N` is linear, not dB.** Same for `kn_N`, `mk_N`, `g_*`. Convert with
`dB = 20·log₁₀(value)`.