Music visualizer for macOS
Music you
can see.
Synesthia turns whatever your Mac is playing into light. A 64-band FFT drives every frame, so bass, mids and treble each shape the picture differently.
Nothing is recorded, and no audio leaves this page.
macOS 26.5 or later · Apple silicon · Version 1.0
Analyser · 64 bands · 30 Hz – 16 kHz
- Bass
- 00
- Mid
- 00
- Treble
- 00
- Level
- 00
Three visualizers
Three ways to look
at the same song.
Each one reads the same 64 bands and draws something different with them. Switch between them with ⌘1 ⌘2 ⌘3 without stopping the music.
Nebula
A particle cloud in orbit. Every particle is bound to one frequency band and flares when its band hits.
DensityGlowSwirlSpectrum Tunnel
Flight through a tube whose angular slices are the live spectrum. Loud frequencies push the walls out.
TwistGlowAurora
Layered ribbons riding the waveform, each one glowing with its own slice of the spectrum.
RibbonsWave height
All three share Sensitivity, Speed and five palettes. Whatever you set, the app remembers for next time.
- Prism
- Ember
- Ocean
- Violet
- Mono
Four inputs
It listens to anything
your Mac plays.
Music app
Controls Music.app and taps the system audio it produces.
Title, artist, album, artwork
System audio
Whatever the Mac is playing — Spotify, a browser tab, a game.
Nothing to report
Audio input
A microphone, line-in, or any other input device.
Device name
Audio file
Plays a file from disk inside the app, on loop.
File name
Capture attaches on launch for system audio, and latches onto Music if a track is already playing when you open the app. macOS asks once for Screen & System Audio Recording so the app can hear other apps, and once for Automation so it can drive Music. The video half of the screen recording API is never read.
Signal chain
Sound to light,
sixty times a second.
Four stages, in this order, every frame. None of them block the main thread.
Capture
ScreenCaptureKit · AVAudioEngine
System audio arrives through ScreenCaptureKit; a mic or a file arrives through an AVAudioEngine tap. Both end up as one mono stream.
Analyse
2048-point FFT · vDSP
A Hann-windowed 2048-point FFT runs on Accelerate, off the main thread, allocating nothing on the audio thread.
Snapshot
64 bands · 30 Hz – 16 kHz
64 log-spaced bands, a 256-sample waveform, bass, mid, treble and level scalars, plus a beat envelope from bass transients.
Render
60 fps · Metal
The render loop pulls the newest snapshot each frame and hands it straight to a Metal shader. Audio never publishes into the UI.
Native
Built like
a Mac app.
Real fullscreen
The green button or ⌃⌘F. The controls fade out on their own and come back when you move the mouse.
Now playing
Title, artist and the track’s own artwork, pulled straight from Music while it plays.
Open to new visualizers
A visualizer is a class, a descriptor and a shader. Add one and its sliders appear in the options panel on their own.
Keyboard
- Play or pause
- Space
- Switch visualizer
- ⌘1
- Next track
- ⌘→
- Open an audio file
- ⌘O
- Fullscreen
- ⌃⌘F
