ferraus graphic-eq

Linear-phase graphic equalizer (10, 20, or 30 bands)

Synopsis

ferraus graphic-eq <input> [options] [-o <output>]

What it does

Sets a gain at each ISO band centre (octave, half-octave, or third-octave), joins them with a smooth curve over log-frequency, and applies it as one linear-phase FIR filter, so there is no phase distortion and the output stays aligned with the input. --accuracy is the FIR length: longer resolves low bands more precisely. The metrics report the realised gain at each centre.

This command is also an fx stage and a pipeline op: ferraus fx in.wav -o out.wav --fx "graphic-eq:key=value".

Examples

Ten-band smile curve

ferraus graphic-eq mix.wav --gains "+3,+2,0,0,-2,0,0,+1,+2,+2" -o eq.wav

Third-octave cut at 63 and 80 Hz with a shorter filter

ferraus graphic-eq vox.wav --bands 30 --gains "0,0,0,0,-3,-3" --accuracy 500ms -o eq.wav

Half-octave EQ: cut mud at 63-88 Hz and lift presence at 2.8-4 kHz

ferraus graphic-eq vox.wav --bands 20 --gains "0,0,-4,-2,0,0,0,0,0,0,0,0,0,+2,+3" -o vox_eq.wav

Roll off the top two octave bands (8 and 16 kHz) to tame hiss

ferraus graphic-eq tape.wav --gains "0,0,0,0,0,0,0,0,-3,-6" -o tape_eq.wav

Options

FlagTypeDefaultMeaning
--bands10 | 20 | 3010Number of bands: 10 (octaves), 20 (half octaves), or 30 (third octaves)
--gainslist0Gain per band in dB from the lowest band up, e.g. "+2,0,-3"; missing bands are 0
--accuracytime1000msFIR length (time); longer is more precise in the low bands
--mixpercent100%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

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.
  • Beat-based times (4b, 1/4) need a tempo: pass --bpm or write 4b@120.

For models

  • MCP tool: ferraus_graphic_eq
  • Schema: ferraus schema graphic-eq
  • Pipeline: { op: graphic-eq, args: { ... } } (flag names with _ instead of -)
  • fx stage: yes
{"command": "graphic-eq", "defaults": {"bands": "10", "gains": "0", "accuracy": "1000ms", "mix": "100%"}}