ferraus pan

Place a source in the stereo field (static or keyframed)

Synopsis

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

What it does

--mode pan places a mono (or mono-summed) source with the chosen pan law: -3dB is constant power, -6dB constant voltage, -4.5dB in between, linear keeps the centre at full level. --mode balance instead scales the left and right channels of a stereo source, keeping its image. Movement over time uses --points (same keyframe syntax as envelope: 0s=-100,4s=0,8s=100, with --curve linear or spline) or --from/--to/--over; keyframe values are hit exactly at their sample. Output is stereo.

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

Examples

Place a guitar 30% left

ferraus pan gtr.wav --position L30 -o gtr_l30.wav

Sweep left to right over 8 seconds

ferraus pan fx.wav --points 0s=-100,4s=0,8s=100 --curve spline -o sweep.wav

Shift a stereo mix's balance to the right

ferraus pan mix.wav --mode balance --position 20 -o mix_bal.wav

Options

FlagTypeDefaultMeaning
--positiontext0-100 (hard left) .. 100 (hard right), or left, center, right, L30, R60
--law-3dB | -4.5dB | -6dB | linear-3dBPan law: level of a centred source in each channel
--modepan | balancepanpan: place a mono/mono-summed source; balance: scale the channels of a stereo source
--pointstext—Keyframes time=position, e.g. 0s=-100,4s=0,8s=100 (time may be end or -2s)
--curvelinear | splinelinearInterpolation between keyframes
--fromtext—Start position of a sweep (with --to)
--totext—End position of a sweep
--overrange0s..endTime range of the --from/--to sweep
--mixpercent100%Dry/wet balance: 0% returns the input unchanged, 100% is fully processed

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.
  • Beat-based times (4b, 1/4) need a tempo: pass --bpm or write 4b@120.

For models

  • MCP tool: ferraus_pan
  • Schema: ferraus schema pan
  • Pipeline: { op: pan, args: { ... } } (flag names with _ instead of -)
  • fx stage: yes
{"command": "pan", "defaults": {"position": "0", "law": "-3dB", "mode": "pan", "curve": "linear", "over": "0s..end", "mix": "100%"}}