ferraus repair

Spectral repair of a time-frequency region from its neighbours

Synopsis

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

What it does

Re-synthesises the selected time range (optionally only a frequency band) from the audio just before and after it: magnitudes are interpolated across the gap and phases continue the instantaneous frequency of the left neighbour ('interpolate'), or the region is only turned down to its neighbours' level ('attenuate'). This is the marquee-and-heal workflow without a mouse. The metrics list each region that was replaced.

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

Examples

Heal a cough or click in a 200 ms region

ferraus repair take.wav --range 1:02.50..1:02.70 -o fixed.wav

Turn down a squeak in one band only

ferraus repair take.wav --range 12.1s..12.4s --freq 2kHz..6kHz --method attenuate -o fixed.wav

Heal two separate phone pings in one pass

ferraus repair interview.wav --range 3:14.2..3:14.5 --range 7:02.0..7:02.3 -o fixed.wav

Fill in a low thump without touching the strings above 300 Hz

ferraus repair guitar.wav --range 0:45.10..0:45.35 --freq 50Hz..300Hz -o fixed.wav

Options

FlagTypeDefaultMeaning
--rangerange—Time range to repair (start..end, e.g. 1:02.50..1:02.70); repeatable Repeatable. Required.
--freqtextallFrequency band to repair (low..high, e.g. 2kHz..6kHz) or 'all'
--methodinterpolate | attenuateinterpolateRe-synthesise from neighbours, or only attenuate to their level
--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_repair
  • Schema: ferraus schema repair
  • Pipeline: { op: repair, args: { ... } } (flag names with _ instead of -)
  • fx stage: yes
{"command": "repair", "defaults": {"freq": "all", "method": "interpolate", "mix": "100%"}}