[BREAKGLASS] 🌊 FFT so pretty, your ears will be jealous. See your sound—spectrograms, mel, chroma, and more.
http://songsee.sh/
Use a saturated violet (#5938e5) for the primary button background in both themes so white text reads cleanly — previously dark mode used the lighter --accent (#a48bff), giving low contrast against white. Also raise the gradient h1 line-height from 1.04 to 1.18 and add padding-bottom: .08em so the gradient text-clip stops chopping the descenders on letters like g/y/p. |
||
|---|---|---|
| .github/workflows | ||
| cmd/songsee | ||
| docs | ||
| internal | ||
| scripts | ||
| testdata | ||
| .gitignore | ||
| .golangci.yml | ||
| CHANGELOG.md | ||
| example.png | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| Makefile | ||
| README.md | ||
🌊 songsee — FFT so pretty, your ears will be jealous.
Features
- 9 visualization modes: spectrogram, mel, chroma, hpss, selfsim, loudness, tempogram, mfcc, flux
- 6 color palettes: classic, magma, inferno, viridis, gray, clawd
- Auto-contrast: per-panel percentile normalization for readable heatmaps
- Combine modes: stack multiple visualizations in one grid image
- Universal input: WAV, MP3, or anything ffmpeg can handle
- Fast: native Go, no Python dependencies
- Flexible output: PNG or JPEG, customizable dimensions
Install
brew install steipete/tap/songsee
go install github.com/steipete/songsee/cmd/songsee@latest
Quick Start
# Basic spectrogram
songsee track.mp3
# Mel spectrogram with magma palette
songsee track.mp3 --viz mel --style magma
# All 9 modes combined
songsee track.mp3 --viz spectrogram,mel,chroma,hpss,selfsim,loudness,tempogram,mfcc,flux
# Custom output
songsee track.mp3 --viz hpss,chroma --style inferno -o viz.png --width 2560 --height 1440
Visualization Modes
| Mode | Description |
|---|---|
spectrogram |
Time × frequency magnitude |
mel |
Perceptual frequency scale |
chroma |
12-bin pitch class |
hpss |
Harmonic vs percussive separation |
selfsim |
Self-similarity matrix |
loudness |
Volume over time |
tempogram |
Tempo variation |
mfcc |
Timbre fingerprint |
flux |
Spectral change detection |
Palettes
classic · magma · inferno · viridis · gray · clawd 🦞
Options
--output Output path (default: input name + extension)
--format jpg or png (default: jpg)
--width Output width (default: 1920)
--height Output height (default: 1080)
--window FFT window size (default: 2048)
--hop Hop size (default: 512)
--min-freq Minimum frequency in Hz
--max-freq Maximum frequency in Hz
--start Start time in seconds
--duration Duration in seconds
--style Palette name
--viz Visualization list (repeatable or comma-separated)
Built by @steipete
