ferraus reverb

Add reverb (plate, room, hall, chamber, or an impulse response)

Synopsis

ferraus reverb <input> [options] [-o <output>]

What it does

Algorithmic reverb: a Dattorro plate for 'plate', and an 8-line feedback delay network with Hadamard mixing for 'room', 'chamber', and 'hall'. --decay is the time for the tail to fall 60 dB. With --ir <file> the input is convolved with an impulse response instead (partitioned FFT convolution; the IR's sample rate is matched automatically, its silent tail below --trim-ir is cut, and pre-delay defaults to 0 ms). The output keeps the input's length unless --tail adds room for the reverb to ring out.

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

Examples

Default plate at 25%

ferraus reverb vox.wav -o vox_verb.wav

Short room on a snare

ferraus reverb snare.wav --type room --decay 0.8s --mix 20% -o snare_room.wav

Long hall that rings out past the end

ferraus reverb pad.wav --type hall --decay 4s --tail 4s --mix 35% -o pad_hall.wav

Convolution with an impulse response

ferraus reverb vox.wav --ir church.wav --mix 30% --tail 3s -o vox_church.wav

Options

FlagTypeDefaultMeaning
--typeplate | room | hall | chamberplateAlgorithm
--sizepercent50%Room size (scales the delay network)
--decaytime1.8sTime for the tail to decay by 60 dB (RT60)
--dampingpercent50%How much faster high frequencies die away
--predelaytime20msGap before the reverb starts (0ms default with --ir)
--lowcutfrequency120HzHigh-pass on the reverb (keeps lows clean; 0Hz = off)
--highcutfrequency8kHzLow-pass on the reverb (0Hz = off)
--widthpercent100%Stereo width of the reverb (0% mono, 200% extra wide)
--mixpercent25%Dry/wet: 0% returns the input, 100% is reverb only
--irpath—Impulse response file for convolution reverb
--trim-irgain-60dBCut the IR where it falls below this level relative to its peak
--tailtime0sExtra length appended so the reverb can ring out (0s keeps the input length)

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.
  • Percentages accept 80% or the fraction 0.8; a bare 80 means 80x, not 80%.
  • Gains need a unit when not in dB: 0.5x is a factor, -6 and -6dB are decibels.

For models

  • MCP tool: ferraus_reverb
  • Schema: ferraus schema reverb
  • Pipeline: { op: reverb, args: { ... } } (flag names with _ instead of -)
  • fx stage: yes
{"command": "reverb", "defaults": {"type": "plate", "size": "50%", "decay": "1.8s", "damping": "50%", "predelay": "20ms", "lowcut": "120Hz", "highcut": "8kHz", "width": "100%", "mix": "25%", "trim_ir": "-60dB", "tail": "0s"}}