ferraus limit

True-peak brickwall limiter

Synopsis

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

What it does

Lookahead brickwall limiter that detects inter-sample peaks with oversampling, so the output never exceeds the ceiling when measured as true peak. The gain envelope ramps down over the lookahead window (no clicks) and recovers with the release time.

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

Examples

Limit to -1 dBTP

ferraus limit mix.wav -o limited.wav

Hotter ceiling, slower release

ferraus limit master.wav --ceiling -0.3dBTP --release 100ms -o hot.wav

Leave extra headroom for lossy encoding (MP3 and AAC can add peaks)

ferraus limit podcast.wav --ceiling -2dBTP -o podcast_safe.wav

Fast sample-peak limiting with a short lookahead

ferraus limit drums.wav --ceiling -1dB --oversample 1x --lookahead 1ms -o drums_lim.wav

Options

FlagTypeDefaultMeaning
--ceilinggain-1dBTPMaximum output level (true peak, dBTP)
--releasetime50msRecovery time after a peak
--lookaheadtime5msAttack ramp length (latency is compensated)
--oversample1x | 2x | 4x | 8x4xTrue-peak detection oversampling (1x = sample peak)
--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
9Output verification failed (checksum, clipping guard, duration mismatch)
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.
  • Gains need a unit when not in dB: 0.5x is a factor, -6 and -6dB are decibels.

For models

  • MCP tool: ferraus_limit
  • Schema: ferraus schema limit
  • Pipeline: { op: limit, args: { ... } } (flag names with _ instead of -)
  • fx stage: yes
{"command": "limit", "defaults": {"ceiling": "-1dBTP", "release": "50ms", "lookahead": "5ms", "oversample": "4x", "mix": "100%"}}