ferraus delay

Feedback delay (echo), tempo-synced

Synopsis

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

What it does

Feedback delay with a filter in the loop, so each repeat is darker than the last. --time accepts beat values (1/4, 1/8D, 1/8T) resolved against --bpm, or plain times; without a tempo, beat values assume 160 BPM so 1/4 = 375 ms. --pingpong bounces repeats between left and right; --analog adds tape-style saturation and wow in the loop.

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

Examples

Quarter-note delay at 120 BPM

ferraus delay vox.wav --bpm 120 -o vox_delay.wav

Dotted-eighth analog ping-pong

ferraus delay gtr.wav --time 1/8D --pingpong --feedback 45% --analog --bpm 96 -o gtr_pp.wav

Thin echoes that ring out

ferraus delay clap.wav --time 250ms --filter highpass:800Hz --tail 2s -o clap_echo.wav

Options

FlagTypeDefaultMeaning
--timetime1/4Delay time: beat value (1/4, 1/8D) or time (375ms)
--feedbackpercent35%How much of each repeat feeds the next (0..98%)
--mixpercent25%Dry/wet: 0% returns the input
--pingpongflag—Alternate repeats between left and right (output is stereo)
--filtertextlowpass:6kHzFilter in the feedback loop: lowpass:<freq>, highpass:<freq>, bandpass:<freq>, or off
--analogflag—Tape-style saturation and wow in the loop
--tailtime0sExtra length appended for the echoes to die away

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%.

For models

  • MCP tool: ferraus_delay
  • Schema: ferraus schema delay
  • Pipeline: { op: delay, args: { ... } } (flag names with _ instead of -)
  • fx stage: yes
{"command": "delay", "defaults": {"time": "1/4", "feedback": "35%", "mix": "25%", "filter": "lowpass:6kHz", "tail": "0s"}}