You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A browser-based audio visualizer that renders stunning animations from any audio file and exports full-resolution MP4/WebM videos. Built with React + TypeScript, powered by WebAssembly (FFmpeg) and WebCodecs API.
✨ Features
21 visualizer styles — organized in 4 categories (see below)
14 effect overlays — organized in 4 categories (see below)
Dual export engines — GPU (WebCodecs, fast) or CPU (FFmpeg WASM, universal)
Up to 4K export — 1080p / 2K / 4K at 60fps
16:9 and 9:16 aspect ratios (landscape + portrait/reels)
Profile photo mode — circular crop, auto color extraction (k-means, always distinct)
PWA ready — works offline, installable on mobile
🎨 Visualizer Styles
Styles are grouped into collapsible categories in the Visuals settings tab.
〰 Wave & Line
Style
Description
Bars
Classic circular frequency bars
Wave
Smooth sine-wave ring
Ring
Pulsing concentric ring
Waveform
Oscilloscope wave wrapped around the circle (with ghost echo ring)
Strings
Vibrating string segments
✦ Particle & Space
Style
Description
Particles
Floating dots driven by amplitude
Nebula
Cosmic nebula cloud that breathes with audio
Constellation
Star field with connecting lines; stars pulse per frequency band
Orbit
Orbiting particles around the ring
◈ Geometric
Style
Description
Spiral
Archimedean spiral that expands on beat
Spikes
Sharp inward/outward spikes
Diamond
Rotating faceted diamond shapes per frequency segment
Fractal
Recursive branching tree arms driven by frequency bands
Prism
Layered concentric rainbow rings — bass to treble
Tunnel
Concentric collapsing rings — zoom-tunnel effect driven by bass
⚡ Energy
Style
Description
Laser
Sweeping laser lines
Lightning
Branching electric bolts from the ring edge on beats
Aura
Glowing aura halo
Peaks
Filled peak-hold spectrum
Helix
Rotating DNA double-helix with audio-driven cross-links
Frequency
Classic spectrum analyser bars wrapped around the full circle (mirrored)
✨ Effect Overlays
Effects can be freely combined and are grouped in the Effects settings tab.
FFmpeg WASM uses SharedArrayBuffer (multi-threaded WASM), which requires Cross-Origin-Opener-Policy: same-origin and Cross-Origin-Embedder-Policy: require-corp on every page. Vercel sets these for the frontend. But the ffmpeg-core.wasm file (~30 MB) must be loaded cross-origin from a server that also sets Cross-Origin-Resource-Policy: cross-origin and Access-Control-Allow-Origin: *. The Render.com Express server does exactly that.
📦 Step-by-Step Setup
1. Fork & Clone
git clone https://github.com/YOUR_USERNAME/sonic-visualizer.git
cd sonic-visualizer
npm install
2. Copy FFmpeg Core Files
npm run copy-ffmpeg
This copies ffmpeg-core.js and ffmpeg-core.wasm from node_modules/@ffmpeg/core into:
public/ffmpeg/ — for local dev server
render-server/public/ — for the Render.com deployment
Commit render-server/public/ to git! Render needs these files at deploy time.