ferraus multiband
Multiband compressor
Synopsis
ferraus multiband <input> [options] [-o <output>]
What it does
Splits the signal with 4th-order Linkwitz-Riley crossovers (bands sum flat), compresses each band, and sums them. Per-band --threshold, --ratio, --attack, --release accept one value for every band or a comma list (low to high; a short list repeats its last value). Defaults are a gentle 2:1 on each band, with slower times on lower bands. --bands 4 picks 120Hz,2kHz,10kHz crossovers; --limiter adds a true-peak limiter at the output.
This command is also an fx stage and a pipeline op: ferraus fx in.wav -o out.wav --fx "multiband:key=value".
Examples
Gentle three-band compression
ferraus multiband mix.wav -o mb.wav
Audition-style 4 bands plus limiter
ferraus multiband master.wav --bands 4 --limiter --threshold -24dB,-20dB,-20dB,-18dB --ratio 3:1,2:1 -o mb4.wav
Three custom bands: hold down boominess and harsh highs harder than the mids
ferraus multiband vox.wav --crossovers 250Hz,4kHz --threshold -24dB,-18dB,-26dB --ratio 3:1,2:1,4:1 -o vox_mb.wav
Two bands split at 1 kHz: compress only the lows and leave the string noise alone
ferraus multiband bass.wav --bands 2 --ratio 4:1,1:1 --makeup 2dB -o bass_mb.wav
Options
| Flag | Type | Default | Meaning |
|---|---|---|---|
--crossovers | list | 150Hz,3kHz | Crossover frequencies, ascending; N crossovers make N+1 bands |
--bands | integer | — | Band count with default crossovers (2: 1kHz; 3: 150Hz,3kHz; 4: 120Hz,2kHz,10kHz; 5; 6) Range: 2..6. |
--threshold | list | -20dB | Per-band threshold(s) in dB |
--ratio | list | 2:1 | Per-band ratio(s) |
--attack | list | auto | Per-band attack time(s); auto = 20 ms (lowest) to 5 ms (highest) |
--release | list | auto | Per-band release time(s); auto = 200 ms (lowest) to 80 ms (highest) |
--makeup | gain | 0dB | Output gain after the bands are summed |
--limiter | flag | — | Add a true-peak output limiter |
--limiter-ceiling | gain | -1dBTP | Ceiling of the output limiter |
--mix | percent | 100% | Dry/wet balance: 0% returns the input unchanged, 100% is fully processed |
Global options
Every command also accepts the global options (-o, --json, --dry-run, --overwrite, --progress, ...). See Global options.
Exit codes
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | Processing failed |
| 2 | Usage or parameter error |
| 3 | Input missing or unreadable |
| 4 | Unsupported format or codec |
| 8 | Cancelled |
| 70 | Internal error (bug) |
Common mistakes
- Forgetting that outputs are never overwritten: pass
--overwriteor a new-opath when re-running. - Gains need a unit when not in dB:
0.5xis a factor,-6and-6dBare decibels.
For models
- MCP tool:
ferraus_multiband - Schema:
ferraus schema multiband - Pipeline:
{ op: multiband, args: { ... } }(flag names with_instead of-) - fx stage: yes
{"command": "multiband", "defaults": {"crossovers": "150Hz,3kHz", "threshold": "-20dB", "ratio": "2:1", "attack": "auto", "release": "auto", "makeup": "0dB", "limiter_ceiling": "-1dBTP", "mix": "100%"}}