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

FlagTypeDefaultMeaning
--crossoverslist120Hz,2kHz,8kHzCrossover 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

CodeMeaning
0Success
1Processing failed
2Usage or parameter error
3Input missing or unreadable
4Unsupported format or codec
8Cancelled
70Internal error (bug)

Common mistakes

  • Forgetting that outputs are never overwritten: pass --overwrite or a new -o path 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"}}