ferraus waveform

Export a waveform image (PNG, SVG) or JSON peaks

Synopsis

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

What it does

Draws the waveform as a PNG or SVG image, or writes min/max peaks per time bucket and channel as JSON for web players and agents. The format follows the output extension (.png by default, .svg, .json). Images show the peak envelope with the RMS level drawn darker inside it.

Examples

1200x200 PNG thumbnail

ferraus waveform song.wav -o song.png

Peaks for a web player, 20 buckets per second

ferraus waveform episode.mp3 -o peaks.json --peaks-per-second 20

SVG with one lane per channel

ferraus waveform stereo.wav --split --width 800 --height 300 -o wave.svg

Options

FlagTypeDefaultMeaning
--widthinteger1200Image width in pixels
--heightinteger200Image height in pixels
--peaks-per-secondnumber50JSON only: min/max buckets per second of audio
--splitflag—Draw each channel in its own lane instead of one mixed waveform
--colortext#1f6febWaveform colour, #rrggbb
--backgroundtexttransparentBackground colour, #rrggbb or transparent

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_waveform
  • Schema: ferraus schema waveform
  • Pipeline: { op: waveform, args: { ... } } (flag names with _ instead of -)
  • fx stage: no
{"command": "waveform", "defaults": {"width": "1200", "height": "200", "peaks_per_second": "50", "color": "#1f6feb", "background": "transparent"}}