ferraus score perform
One shot: read, play, render
Quality tier: best-effort. Results are reported with a quality or confidence estimate.
Synopsis
ferraus score perform <input> [options] [-o <output>]
What it does
Reads sheet music (a PDF or image through score read, or any notation file), performs it as MIDI, and renders the MIDI to audio through render with the chosen instrument. The MusicXML and MIDI are written beside the audio (same name, .musicxml and .mid).
Examples
Read a printed score and render it (writes sonata.musicxml and sonata.mid too)
ferraus score perform sonata.pdf --instrument piano -o sonata.wav
Render an ABC tune at 100 bpm
ferraus score perform tune.abc --tempo 100 -o tune.wav
Render a MusicXML quartet on strings with a little human timing
ferraus score perform quartet.musicxml --instrument strings --humanize 30% --dynamics on -o quartet.wav
Swung piano performance of a lead sheet, playing each section once
ferraus score perform lead.musicxml --instrument salamander-grand-piano --swing 60% --repeats off -o lead.wav
Options
| Flag | Type | Default | Meaning |
|---|---|---|---|
--tempo | text | auto | Tempo override in quarter notes per minute; auto follows the score's tempo marks (120 when none) |
--repeats | on|off | on | Unroll repeats and first/second endings |
--dynamics | on|off | on | Map dynamics (pp..ff) to velocities |
--articulation | on|off | on | Map articulations to note lengths: staccato 50%, staccatissimo 25%, tenuto and slurred (legato) 100%, other notes 95% (gap at most a 64th note); accents add velocity |
--humanize | percent | 0% | Random timing (up to ±20 ms) and velocity (up to ±12) variation, seeded by --seed |
--swing | percent | 0% | Delay off-beat eighths: 100% moves them to the triplet position (2:1) |
--instrument-map | text | — | Programs per part, e.g. "P1=piano,P2=strings" (GM names, short names, or numbers 0-127) |
--click | on|off | off | Add a metronome click track (channel 10) |
--instrument | text | piano | Instrument for render: an installed sound name, a .sf2/.sfz path, or plugin:<name> |
--pages | text | — | Pages to read from a PDF (1-4); default all |
--dpi | integer | 300 | Rasterization resolution for PDF pages in dots per inch |
--engine | builtin | audiveris | builtin | OMR engine for PDF and image inputs |
--fix | path | — | Apply an edit list before performing |
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 |
| 5 | Model not cached and downloads disabled |
| 6 | Model download or verification failed |
| 7 | Plugin crashed, timed out, or was not found |
| 8 | Cancelled |
| 10 | Network error |
| 70 | Internal error (bug) |
Common mistakes
- Forgetting that outputs are never overwritten: pass
--overwriteor a new-opath when re-running. - Percentages accept
80%or the fraction0.8; a bare80means 80x, not 80%. - Treating best-effort output as final: check the reported quality/confidence in
--json.
For models
- MCP tool:
ferraus_score_perform - Schema:
ferraus schema score perform - Pipeline:
{ op: score perform, args: { ... } }(flag names with_instead of-) - fx stage: no
{"command": "score perform", "defaults": {"tempo": "auto", "repeats": "on", "dynamics": "on", "articulation": "on", "humanize": "0%", "swing": "0%", "click": "off", "instrument": "piano", "dpi": "300", "engine": "builtin"}}