ferraus midi transpose

Shift note pitches

Synopsis

ferraus midi transpose <input> [options] [-o <output>]

What it does

Moves notes by whole semitones. Channel 10 (drums) is left alone unless --include-drums; notes pushed outside 0-127 are dropped with a warning.

Examples

Up a whole step

ferraus midi transpose song.mid --semitones +2 -o up2.mid

Down an octave

ferraus midi transpose bass.mid --semitones -12st -o low.mid

Move only tracks 2 and 3 down a minor third; drums stay put

ferraus midi transpose song.mid --semitones -3 --tracks 2,3 -o lower.mid

Options

FlagTypeDefaultMeaning
--semitonescents|semitones—Semitones to shift (+2, -12st); fractions round to the nearest semitone Required.
--include-drumsflag—Also transpose channel 10
--trackslist—1-based track numbers to change, comma separated (default: every track)

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
8Cancelled
70Internal error (bug)

Common mistakes

  • Forgetting that outputs are never overwritten: pass --overwrite or a new -o path when re-running.

For models

  • MCP tool: ferraus_midi_transpose
  • Schema: ferraus schema midi transpose
  • Pipeline: { op: midi transpose, args: { ... } } (flag names with _ instead of -)
  • fx stage: no
{"command": "midi transpose", "defaults": {}}