Live app: Visuval – 3D Music Visualizer
Landing page: https://visuval.io

Visuval is a browser-based 3D music visualizer for creators - musicians, YouTubers, streamers, and VJs. Drop in a track (or use your mic), pick a preset and theme, and export up to 1440p / 60fps video. No install required.
What it does
- 50+ visualization presets — geometric structures, particle fields, raymarched tunnels, fluid/organic scenes, fractals, nature, retro oscilloscope vibes, and more
- 29 color themes — solid palettes, duo-tone gradients, and a custom color picker
- Real-time audio analysis — Web Audio API FFT (2048 bins → 64 buckets), split into bass / mid / treble
- Mic input for live performance and DJ sets
- Offline video export via WebCodecs (MP4 / WebM), frame-by-frame at up to 1440p
- Post-processing stack — bloom, brightness/saturation, film grain, motion trails, kaleidoscope, depth of field, scanlines
- MIDI controller support for hands-on control during live use
Preset highlights
A few favorites that show different Three.js approaches:
| Preset | Technique |
|---|---|
| Tunnel / Box Tunnel | Raymarched infinite corridors with kaleidoscopic warping |
| Meadow | Instanced grass field + particle pollen on a displaced terrain |
| Ferrofluid | Glossy mesh with vertex displacement driven by audio bands |
| Starfield / Galaxy | Billboard particles with warp-speed camera motion |
| MilkDrop | Domain-warped feedback loops in a fragment shader |
Three.js architecture
Visuval is built on vanilla Three.js (ES modules, no React Three Fiber). Each preset is a class extending a shared BasePreset with consistent lifecycle.
Shaders
- Shared GLSL library reused across presets: hash/noise/fbm, SDF primitives, particle glow, watercolor, sketch hatching, rotation matrices, cosine palettes
- Mix of mesh-based scenes (instanced geometry, buffer-attribute particles) and fullscreen quad fragment shaders (raymarching, fractals, feedback)
Performance
PresetLRUcache (capacity 4) — switching back to a recent preset reattaches GPU resources instead of rebuilding- Shared geometry registration to avoid duplicate GPU allocations
- Particle systems use typed arrays +
setDrawRange()for density control
Export
- Offline render loop steps the audio clock frame-by-frame and encodes via WebCodecs (VP9 → VP8 → H.264 fallback)
Try it
- Open Visuval – 3D Music Visualizer
- Click Demo or upload an MP3/WAV
- Arrow keys cycle presets,
1–9switch themes,Ffor fullscreen
Free tier includes a solid set of presets with no signup. Premium unlocks the full library and advanced export options.
Tech stack
- Three.js (r170+) — scene graph, post-processing, custom shaders
- Web Audio API — FFT analysis, mic capture, scrubbing
- WebCodecs — video encoding
- Firebase — auth and membership (premium presets are server-gated in production)
Happy to answer questions about the shader architecture, preset system, or export pipeline. Feedback from the Three.js community is always welcome! ![]()