How it works
Source (synth sequencer / mic / file) → AnalyserNode → destination. getByteFrequencyData into a reused Uint8Array each frame.
Web Audio AnalyserNode driving 2D bars, waveform, radial and a 3D mesh. Built-in synth, mic or your file.
Source (synth sequencer / mic / file) → AnalyserNode → destination. getByteFrequencyData into a reused Uint8Array each frame.
One analyser, one buffer, zero allocations per frame. The 3D mode writes FFT into a DataTexture read by the vertex shader.
Audio never autoplays (browser policy + WCAG 1.4.2); explicit play/stop and volume controls.
{
"mode": "bars",
"smoothing": 0.8,
"gain": 1.2
}