steipete/songsee

🌊 FFT so pretty, your ears will be jealous. See your sound—spectrograms, mel, chroma, and more.

81

stars

59

commits

Go

primary language

Sep 5, 2026

updated

songsee.sh/
agents
music
visualization

README

🌊 songsee — FFT so pretty, your ears will be jealous.

9-mode visualization example

Features

  • 9 visualization modes: spectrogram, mel, chroma, hpss, selfsim, loudness, tempogram, mfcc, flux
  • 6 color palettes: classic, magma, inferno, viridis, gray, claw
  • 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

Docker:

docker build -t songsee .
docker run --rm -v "$PWD:/input:ro" -v "$PWD/out:/output" songsee /input/track.mp3 --output /output/track.png

The image includes ffmpeg, so batch and server runs do not depend on host audio tooling.

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

ModeDescription
spectrogramTime × frequency magnitude
melPerceptual frequency scale
chroma12-bin pitch class
hpssHarmonic vs percussive separation
selfsimSelf-similarity matrix
loudnessVolume over time
tempogramTempo variation
mfccTimbre fingerprint
fluxSpectral change detection

Palettes

classic · magma · inferno · viridis · gray · claw

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

Contributors

steipete

55 commits

vincentkoc

3 commits

SebTardif

1 commits

steipete/songsee

🌊 FFT so pretty, your ears will be jealous. See your sound—spectrograms, mel, chroma, and more.

81

stars

59

commits

Go

primary language

Sep 5, 2026

updated

songsee.sh/
agents
music
visualization

README

🌊 songsee — FFT so pretty, your ears will be jealous.

9-mode visualization example

Features

  • 9 visualization modes: spectrogram, mel, chroma, hpss, selfsim, loudness, tempogram, mfcc, flux
  • 6 color palettes: classic, magma, inferno, viridis, gray, claw
  • 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

Docker:

docker build -t songsee .
docker run --rm -v "$PWD:/input:ro" -v "$PWD/out:/output" songsee /input/track.mp3 --output /output/track.png

The image includes ffmpeg, so batch and server runs do not depend on host audio tooling.

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

ModeDescription
spectrogramTime × frequency magnitude
melPerceptual frequency scale
chroma12-bin pitch class
hpssHarmonic vs percussive separation
selfsimSelf-similarity matrix
loudnessVolume over time
tempogramTempo variation
mfccTimbre fingerprint
fluxSpectral change detection

Palettes

classic · magma · inferno · viridis · gray · claw

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

Contributors

steipete

55 commits

vincentkoc

3 commits

SebTardif

1 commits

Languages

Go

69.4%

JavaScript

30.1%