Audio software
EqualStream
Capture any browser tab's audio and shape it live, with a WebGL visualiser attached.
- Role
- Sole author — audio engine, WebGL visualisers and site
- Period
- 2025 — 2026
- Status
- Live
The problem
Shaping the sound coming out of a browser tab normally means routing system audio through a virtual audio device into a desktop DAW — platform-specific setup, and far more machinery than the task deserves when all you want is to pull the bass down on a podcast or put a room around a live set.
The approach
EqualStream captures tab audio through the browser's own screen-capture API and runs it through a Web Audio chain in real time. The analyser is tapped after the effects rather than before, so the visualiser reacts to what you are actually hearing — your EQ and effects included — instead of to the untouched source. The result is a studio you open in a tab: no virtual audio device, no DAW, nothing installed, and the audio never leaves the browser it was captured in.
What it does
Eleven-band parametric EQ
Peaking filters at 31 Hz through 20 kHz, adjusted live while the tab keeps playing.
Six effects in a fixed chain
Bass boost, convolution reverb, delay, chorus, waveshaper distortion and a compressor — presented as an ordered signal path, because the order is part of the sound.
Thirteen WebGL visualisers
Displacement shaders, height-field terrains and tunnels, scene assemblies driven one object per frequency band, and spectral views built on the raw FFT.
Per-effect bypass and reset
Every effect can be bypassed without being unwired and reset to its defaults independently, so a session is recoverable rather than something you restart.
Nothing is recorded or transmitted
Capture, processing and rendering are all local. Closing the tab ends the session and leaves nothing behind — verified by checking the shipped bundle stores nothing at all.
Outcome
A complete studio rather than a demo: thirteen visualisers driven by real per-bin spectrum data, a full effects chain, and a landing page that stays light because three.js and Tone.js are not loaded until you actually launch it.