ferraus bench
Measure real-time factors of every effect on this machine
Synopsis
ferraus bench [options]
What it does
Runs each single-input effect with its defaults on a synthetic stereo signal and reports how many times faster than real time it ran. With --baseline, fails (exit 9) when any effect is more than --tolerance slower than the saved numbers.
Examples
Measure three effects
ferraus bench --only compress,reverb,limit
Detect performance regressions
ferraus bench --save bench.json && ferraus bench --baseline bench.json
Measure every effect on a 30-second signal; results as JSON
ferraus bench --duration 30s --json
Fail only when an effect is more than 25% slower than the baseline
ferraus bench --baseline bench.json --tolerance 25%
Options
| Flag | Type | Default | Meaning |
|---|---|---|---|
--only | list | — | Comma list of effects to measure (default: every fx-capable effect) |
--duration | time | 10s | Length of the synthetic test signal |
--save | path | — | Write the results as a baseline JSON file |
--baseline | path | — | Compare against a baseline JSON file |
--tolerance | percent | 15% | Allowed slowdown versus the baseline before failing |
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 |
| 8 | Cancelled |
| 70 | Internal error (bug) |
Common mistakes
- Beat-based times (
4b,1/4) need a tempo: pass--bpmor write4b@120. - Percentages accept
80%or the fraction0.8; a bare80means 80x, not 80%.
For models
- MCP tool:
ferraus_bench - Schema:
ferraus schema bench - Pipeline:
{ op: bench, args: { ... } }(flag names with_instead of-) - fx stage: no
{"command": "bench", "defaults": {"duration": "10s", "tolerance": "15%"}}