ferraus band-split
Split audio into frequency bands that sum back to the input
Synopsis
ferraus band-split <input> [options] [-o <output>]
What it does
Writes one file per band (roles band1..bandN, lowest first). Each crossover is a zero-phase Linkwitz-Riley (4th-order magnitude) split made by forward-backward Butterworth filtering, and each higher band is what remains after removing the lower ones, so the bands add back to the input exactly and have no phase shift.
Examples
Four bands: mix.band1.wav ... mix.band4.wav
ferraus band-split mix.wav
Two bands: drums.band1.wav (lows) and drums.band2.wav (highs)
ferraus band-split drums.wav --crossovers 200Hz -o drums.wav
Three bands (body, mids, air) written into bands/ for separate processing
ferraus band-split vox.wav --crossovers 300Hz,5kHz --outdir bands/
Five bands, with every output path listed in the JSON result
ferraus band-split mix.wav --crossovers 100Hz,500Hz,2kHz,6kHz --json
Options
| Flag | Type | Default | Meaning |
|---|---|---|---|
--crossovers | list | 120Hz,2kHz,8kHz | Crossover frequencies, ascending (e.g. 120Hz,2kHz,8kHz gives four bands) |
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.
For models
- MCP tool:
ferraus_band_split - Schema:
ferraus schema band-split - Pipeline:
{ op: band-split, args: { ... } }(flag names with_instead of-) - fx stage: no
{"command": "band-split", "defaults": {"crossovers": "120Hz,2kHz,8kHz"}}