songsee
Generate spectrograms and multi-panel audio feature visualizations from audio files.
Prerequisites
Requires Go:
bashgo install "github.com/steipete/songsee/cmd/songsee@${SONGSEE_VERSION:?Set an exact reviewed release or commit}"
Optional: ffmpeg for formats beyond WAV/MP3.
Quick Start
bash# Basic spectrogram songsee track.mp3 # Save to specific file songsee track.mp3 -o spectrogram.png # Multi-panel visualization grid songsee track.mp3 --viz spectrogram,mel,chroma,hpss,selfsim,loudness,tempogram,mfcc,flux # Time slice (start at 12.5s, 8s duration) songsee track.mp3 --start 12.5 --duration 8 -o slice.jpg # From stdin cat track.mp3 | songsee - --format png -o out.png
Visualization Types
Use --viz with comma-separated values:
| Type | Description |
|---|---|
spectrogram | Standard frequency spectrogram |
mel | Mel-scaled spectrogram |
chroma | Pitch class distribution |
hpss | Harmonic/percussive separation |
selfsim | Self-similarity matrix |
loudness | Loudness over time |
tempogram | Tempo estimation |
mfcc | Mel-frequency cepstral coefficients |
flux | Spectral flux (onset detection) |
Multiple --viz types render as a grid in a single image.
Common Flags
| Flag | Description |
|---|---|
--viz | Visualization types (comma-separated) |
--style | Color palette: classic, magma, inferno, viridis, gray |
--width / --height | Output image dimensions |
--window / --hop | FFT window and hop size |
--min-freq / --max-freq | Frequency range filter |
--start / --duration | Time slice of the audio |
--format | Output format: jpg or png |
-o | Output file path |
Notes
- WAV and MP3 are decoded natively; other formats require
ffmpeg - Output images can be inspected with
vision_analyzefor automated audio analysis - Useful for comparing audio outputs, debugging synthesis, or documenting audio processing pipelines
Execution limits
Record songsee --help and the installed version/build provenance. Use a task-owned output path; never overwrite input audio. Probe input duration/channels before decoding, cap file size and rendering time to the task budget, and test the actual requested codec. Core analysis is local and needs no account. A passing WAV smoke does not establish support for every codec or OS.


