ferraus hum

Turn a hummed idea into an instrument part

Synopsis

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

What it does

Runs 'transcribe' in mono mode on a voice recording, quantizes the notes ('midi quantize --grid 1/16 --strength 80%'), and renders them with the named sound ('render --instrument'). The intermediate MIDI file is written beside the audio output (idea.wav → idea.mid) so the part can be edited and re-rendered with 'ferraus render idea.mid --instrument strings'. Sounds are found the same way as for render: installed sounds and --sound-path directories first, then General MIDI names played by gm-basic or the built-in synth.

Examples

Hum to piano; also writes idea.mid

ferraus hum voice.wav --to piano -o idea.wav

Strings, tightly quantized to eighths

ferraus hum voice.wav --to strings --grid 1/8 --strength 100% -o strings.wav

A bass line at a fixed tempo (moved into the bass range automatically)

ferraus hum bass-idea.wav --to "Acoustic Bass" --bpm 92 -o bass.wav

Options

FlagTypeDefaultMeaning
--totextpianoInstrument to render with: piano, strings, "Acoustic Bass", gm:48, sf2:<path>, an installed sound name (as render --instrument)
--gridgrid1/16Quantize grid (1/16, 1/8, 1/8T), auto to detect, or off
--strengthpercent80%How far notes move toward the grid (80% keeps some feel) Range: 0..100%.
--bpmtextautoTempo in BPM, or auto to detect it from the humming (also set by the global --bpm)
--key-snapon|offonSnap out-of-key notes to the detected key when its confidence is above 0.6
--octavetextautoauto moves the part into the instrument's comfortable range; or a fixed shift in octaves (-1, +1)
--min-notetime60msShortest note kept (60ms)
--onset-sensitivitypercent50%How readily repeated or sliding notes are split (see transcribe) Range: 0..100%.
--tailtime2sTime rendered after the last note so it rings out (2s)

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
5Model not cached and downloads disabled
6Model download or verification failed
7Plugin crashed, timed out, or was not found
8Cancelled
10Network error
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_hum
  • Schema: ferraus schema hum
  • Pipeline: { op: hum, args: { ... } } (flag names with _ instead of -)
  • fx stage: no
{"command": "hum", "defaults": {"to": "piano", "grid": "1/16", "strength": "80%", "bpm": "auto", "key_snap": "on", "octave": "auto", "min_note": "60ms", "onset_sensitivity": "50%", "tail": "2s"}}