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
| Flag | Type | Default | Meaning |
|---|---|---|---|
--range | range | — | Time range to repair (start..end, e.g. 1:02.50..1:02.70); repeatable Repeatable. Required. |
--freq | text | all | Frequency band to repair (low..high, e.g. 2kHz..6kHz) or 'all' |
--method | interpolate | attenuate | interpolate | Re-synthesise from neighbours, or only attenuate to their level |
--mix | percent | 100% | 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
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | Processing failed |
| 2 | Usage or parameter error |
| 3 | Input missing or unreadable |
| 4 | Unsupported format or codec |
| 8 | Cancelled |
| 70 | Internal error (bug) |
Common mistakes
- Forgetting that outputs are never overwritten: pass
--overwriteor a new-opath when re-running. - Beat-based times (
4b,1/4) need a tempo: pass--bpmor write4b@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%"}}