Reference

CLI

CLI

songsee <input> [flags]

<input> is a file path or - for stdin.

#Inputs and output

flagtypedefaultdescription
<input>string (positional)requiredFile path, or - to read encoded audio from stdin.
-o, --outputstringinput name + extensionOutput path. - writes the encoded image to stdout.
--formatjpg | pngjpgOutput encoder. JPEG is quality 95; PNG is lossless.
--widthint1920Output width in pixels.
--heightint1080Output height in pixels.
-q, --quietboolfalseSuppress the stdout output-path echo.
-v, --verboseboolfalsePrint decode and slice info to stderr.
--versionboolPrint version and exit.

#FFT and windowing

flagtypedefaultdescription
--windowint2048FFT window size in samples. Must be a power of two.
--hopint512Hop size in samples between frames.
--min-freqfloat (Hz)0Lower bound of the visible frequency band.
--max-freqfloat (Hz)NyquistUpper bound of the visible frequency band. Must exceed --min-freq.

#Slicing

flagtypedefaultdescription
--startfloat (s)0Skip this many seconds from the start of the input.
--durationfloat (s)0 (full)Render only this many seconds after --start.

#Visualization

flagtypedefaultdescription
--vizrepeated string listspectrogramOne or more of: spectrogram, mel, chroma, hpss, selfsim, loudness, tempogram, mfcc, flux. Repeatable or comma-separated.
--stylestringclassicPalette name: classic, magma, inferno, viridis, gray (alias grey), claw (legacy alias clawd).

#Decoding

flagtypedefaultdescription
--sample-rateint44100Sample rate requested from the ffmpeg fallback. Native WAV/MP3 keep the file's rate.
--ffmpegstringfirst ffmpeg on PATHOverride the ffmpeg binary used for non-WAV/MP3 inputs.

#Exit codes

codemeaning
0Render succeeded.
1Decode, render, or write error (message on stderr).
2Usage error — bad flag, invalid combination, or missing input.

#Examples

# All defaults.
songsee track.mp3

# Mel + chroma in viridis at 2K.
songsee track.mp3 --viz mel,chroma --style viridis --width 2048 --height 1024

# Eight-second slice starting at 12.5s, written to PNG.
songsee track.mp3 --start 12.5 --duration 8 -o slice.png

# Stream from stdin, encode to PNG, write to stdout.
cat track.mp3 | songsee - --format png -o - > spectro.png

# Custom FFT, sub-bass focus.
songsee track.mp3 --window 4096 --hop 1024 --min-freq 20 --max-freq 200

# Pin a specific ffmpeg.
songsee weird.opus --ffmpeg /opt/homebrew/bin/ffmpeg