What's new in Sonogram — 11 April 2026 update
A photorealistic turntable, a snowy Alps landscape, an About page, ~130 commits — and a deep rewrite for frame-rate independence.
- Sonogram
- Three.js
- WebGL
- changelog
It’s been a busy week on Sonogram. Since April 2nd I’ve shipped almost 130 commits covering new visuals, a brand new About page, a raft of stability fixes, and some serious under-the-hood work on performance and frame-rate independence. Here’s a tour of the highlights.
New things to look at
turntable-visual/) and is now integrated directly into the main app — complete with depth-of-field, proper resource cleanup, and real GPU memory management.Things we removed
Part of polishing the app meant trimming visuals that weren’t pulling their weight. These have all been retired:
Under the hood
This is where a lot of the work went, and it’s the kind of thing you feel more than see.
We hunted down every hardcoded smoothing alpha — frequency averages, per-bin ampTex writes, beat smoothing, decay helpers — and rewrote them so the look stays the same whether you’re at 60fps or 144fps. The alphaFreq formula is now self-documenting with explicit target alpha and fps.
We collapsed multiple loops into one, deduplicated RMS calculations, and hoisted loop-invariants out of the raymarching and spectrogram animation loops.
Mic streams now stop on cleanup, GPU resources are disposed properly, and init races are guarded so you can’t double-initialize a visualizer mid-load. DOF focus calculation was also fixed.
The landscape and turntable visualizers have been migrated off the deprecated API.
Asset cache-busting now works correctly, esm.sh is preconnected, and the Vinyl visualization’s quadratic audio gain scaling has been fixed.
Render and shader code for each visualization has been extracted into its own file, which should make future contributions considerably less painful.