ferraus doppler
Doppler pitch and level trajectory of a moving source
Synopsis
ferraus doppler <input> [options] [-o <output>]
What it does
Simulates a source moving past the listener: along a straight line that passes --pass-by metres away after starting --distance metres before the closest point, or around a circle of radius --distance whose centre is --pass-by metres from the listener. A variable fractional delay (speed of sound 343 m/s) produces the pitch change; --volume-by-distance scales level by 1/distance (loudest when closest). The output keeps the input length.
This command is also an fx stage and a pipeline op: ferraus fx in.wav -o out.wav --fx "doppler:key=value".
Examples
A source passing 2 m away at 20 m/s
ferraus doppler car.wav -o passby.wav
Circling the listener off-centre
ferraus doppler tone.wav --path circle --velocity 30m/s --distance 5m --pass-by 3m -o orbit.wav
A fast fly-by that starts 50 m away and passes 5 m from the listener
ferraus doppler engine.wav --velocity 40m/s --distance 50m --pass-by 5m -o flyby.wav
Only the Doppler pitch change, with the level kept constant
ferraus doppler siren.wav --volume-by-distance off -o pitch_only.wav
Options
| Flag | Type | Default | Meaning |
|---|---|---|---|
--path | line | circle | line | Trajectory shape |
--velocity | text | 20m/s | Source speed in m/s |
--distance | text | 10m | Line: start distance before the closest point; circle: radius (metres) |
--pass-by | text | 2m | Line: closest distance to the listener; circle: centre offset (metres) |
--volume-by-distance | on|off | on | Scale the level with distance (on|off) |
--mix | percent | 100% | 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
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | Processing failed |
| 2 | Usage or parameter error |
| 3 | Input missing or unreadable |
| 4 | Unsupported format or codec |
| 8 | Cancelled |
| 70 | Internal error (bug) |
Common mistakes
- Forgetting that outputs are never overwritten: pass
--overwriteor a new-opath when re-running.
For models
- MCP tool:
ferraus_doppler - Schema:
ferraus schema doppler - Pipeline:
{ op: doppler, args: { ... } }(flag names with_instead of-) - fx stage: yes
{"command": "doppler", "defaults": {"path": "line", "velocity": "20m/s", "distance": "10m", "pass_by": "2m", "volume_by_distance": "on", "mix": "100%"}}