ferraus pitch-bend

Pitch envelope: tape-style varispeed or duration-preserving bend

Synopsis

ferraus pitch-bend <input> [options] [-o <output>]

What it does

Follows a pitch curve of 'time=cents' keyframes over the input's timeline. By default it is tape-style: playback speed changes with pitch, so the duration changes too. With --preserve-duration on, a granular WSOLA shifter keeps the timing and only moves the pitch (good for speech and monophonic material).

This command is also an fx stage and a pipeline op: ferraus fx in.wav -o out.wav --fx "pitch-bend:key=value".

Examples

Tape-style rise of two semitones over 4 s

ferraus pitch-bend riff.wav -o bend.wav

Glide down an octave without changing the timing

ferraus pitch-bend vox.wav --points 0s=0,1s=-1200cents --preserve-duration on -o low.wav

Turntable stop: slow down an octave over 1.5 s (the file gets longer, like a real record)

ferraus pitch-bend vinyl.wav --points 0s=0,1.5s=-1200cents --curve linear -o stop.wav

Lift a sentence three semitones and back without changing its timing

ferraus pitch-bend speech.wav --points 0s=0,2s=+300cents,4s=0 --preserve-duration on -o rise.wav

Options

FlagTypeDefaultMeaning
--pointslist0s=0,4s=+200centsKeyframes as time=pitch, pitch in cents or semitones (0s=0,4s=+200cents)
--curvelinear | splinesplineStraight segments, or a smooth curve through the keyframes
--preserve-durationon|offoffKeep the duration and shift only the pitch (on), or vary speed like tape (off)

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
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_pitch_bend
  • Schema: ferraus schema pitch-bend
  • Pipeline: { op: pitch-bend, args: { ... } } (flag names with _ instead of -)
  • fx stage: yes
{"command": "pitch-bend", "defaults": {"points": "0s=0,4s=+200cents", "curve": "spline", "preserve_duration": "off"}}