Aurora Visualizer is a Tauri v2 + Svelte 5 desktop music visualizer styled with Aurora Core. Rust captures system audio and runs the FFT/DSP pipeline; a WebGL2 engine renders 17 shader-driven scenes with cinematic post-processing, beat detection, and 400ms crossfades between modes.
Try it live: the browser demo starts on a synthetic 120 BPM groove so there is always something to look at, and one click switches it to your microphone. The desktop build, which captures system audio instead of the microphone, is available for macOS on Apple silicon and Windows. Since 1.2.1 both builds update themselves: a quiet check at launch and a Check for updates button in Settings, with every update verified against the release signing key before it installs.
Why it exists
I missed the Winamp-and-Milkdrop era, when playing music came with something worth staring at. Modern players dropped the visualizer, so I built the one I wanted: native, GPU-rendered, aware of the actual beat, and dressed in the same Aurora aesthetic as the rest of my tools.
Highlights
- 17 visualization modes (aurora curtains, a spiral nebula, a demoscene bass tunnel, a synthwave cityscape, flame, matrix rain, and more), each a self-contained WebGL2 program.
- Spotify integration with full playback controls, queue, album art, and an accent tint derived live from the current album cover.
- Auto-cycle that rotates modes on a timer or on sustained shifts in musical energy.
- Adaptive render scale and configurable target FPS (60/120/144) so it stays smooth on any display.
- Per-mode visual parameters with save/load/import/export presets.
- A full web build at visualizer.justinreda.com driven by Web Audio instead of the Rust backend.
Technical approach
Rust owns audio capture and DSP: FFT, a 64-bin Mel-scale spectrum, AGC normalization, bass/mid/treble splits, and beat detection, streamed to the frontend as frames over Tauri events. The renderer never talks to Tauri directly: it takes an injected AudioSource, so the desktop app, the browser demo (Web Audio microphone with a JS port of the Rust DSP), and a synthetic signal generator all drive the exact same engine. Post-processing (bloom + vignette) is per-mode; shaders that already produce their own glow opt out.


