Live · 2026

ORPHIC

Whatever you're playing, turned into a living light show

Solo build · 2026

When I was a kid I lost whole evenings to the visualizers bundled with Winamp and Windows Media Player. Geometry that bloomed and folded in time with whatever album I was wearing out that month. It wasn't decoration to me. The picture told a story alongside the song, and I'd sit there and watch the music become something I could see.

Then streaming arrived. Spotify, YouTube, Apple Music: the music went infinite and the picture disappeared. The few visualizers that survived still look like 2004, the same tired bars and plasma, deaf to a decade of GPU and audio-DSP progress.

I missed staring at sound.

So I built ORPHIC to bring that feeling back and drag it into the present.

ORPHIC's sync swarm scene: thousands of phase-coupled agents forming a rotating rainbow disc against black
Sync swarm — 4,096 swarmalators, each agent's phase read out as hue

ORPHIC turns whatever's coming out of your speakers into a generative light show. Seventeen GPU scenes react live to anything playing on the machine: a Spotify track, a YouTube video, a DJ set, a film. Slime molds, fluids, fractals, flocks and nebulae, each one a real simulation rather than a preset. When a voice takes over, an automatic speech-versus-music detector re-tunes the visuals mid-song.

Every scene is a real system, not a preset

The seventeen patterns aren't hand-drawn effects. Each one is an actual computational system, ported to the GPU and wired to the music.

Physarum runs 262,000 slime-mold agents on Jeff Jones's 2010 model, split into three species that compete for territory: the bass species crawls slow and heavy with long sensors, the treble species races in fine filigree, and the mix on the track decides who wins. Ink Nebula is Jos Stam's 1999 stable-fluids solver with vorticity confinement, where every beat fires an ink-jet ring. Turing Bloom is Gray-Scott reaction-diffusion, drifting between mitosis, worms and coral as the bass moves the feed rate. Sync Swarm runs 4,096 swarmalators from the O'Keeffe–Strogatz 2017 paper, each agent carrying both a position and an internal phase that reads out as colour. There's a raymarched Mandelbox that the bass refolds, a de Jong attractor morphing between parameter sets on the beat, a hyperbolic Poincaré-disk tiling, and a 2D acoustic wave field shaped like the human vocal tract that blooms formants when it hears speech.

Physarum scene: a dense, glowing branching network resembling slime-mold trails or neural tissue
Physarum — three slime-mold species carving territory, one per frequency band

That last one matters more than it looks. Most of these scenes come from papers I read specifically for this: cellular automata, computational physics, swarm dynamics. The fun was making a rigorous system behave like an instrument.

Hyperdrive scene: a neon synthwave tunnel rushing toward the viewer with chromatic aberration on the edges
Hyperdrive — tunnel speed rides the loudness accumulator; a kick throws chromatic aberration

How it listens

The visuals are only as good as the ear behind them. ORPHIC runs a full music-information-retrieval pipeline every frame. A 4,096-bin FFT feeds band energies with asymmetric attack and release, AGC-normalised loudness, and spectral centroid, flatness and rolloff. Onsets fire off an adaptive threshold. Tempo comes from autocorrelating the onset-strength signal, and the beat phase re-anchors on strong hits then coasts through silent gaps. Pitch is tracked by NSDF autocorrelation. A median-filter HPSS proxy splits the spectrogram into harmonic and percussive energy, so a scene can tell a sustained chord from a snare hit. Chroma folds the spectrum into twelve pitch classes and derives a key hue from their circular mean on the circle of fifths, which is why consonant harmony lands on related colours.

Slow scene motion runs off phase accumulators, loudness counters that advance faster when the music is louder, so nothing jitters on raw per-frame amplitude. A separate classifier watches syllabic-rate energy modulation, pause ratio and voiced-unvoiced alternation to decide music versus speech, and the scenes retune the moment it flips.

17GPU generative scenes
262kGPU particles at peak
4,096FFT bins read every frame
~10klines, solo, in six weeks

Two runtimes, one renderer

The same renderer ships two ways. The desktop build is an Electron app that captures true whole-system audio natively (CoreAudio process taps on macOS, WASAPI loopback on Windows), with no virtual audio driver to install. The web build is a single index.html you open by double-clicking: no server, no bundler, no dependencies. To make that work, the renderer is written as classic WebGL2 scripts instead of ES modules, so it runs straight off file://. The Electron shell is hardened the boring, correct way: context isolation and sandbox on, Electron fuses flipped, the renderer served over a CSP'd custom orphic:// scheme.

Aurora veil scene: soft vertical curtains of green and violet light, an equalizer rendered as a night-sky aurora
Aurora veil — the equalizer as an aurora, each curtain a frequency band's peak-decay envelope

The work behind the feel

I ran a deep research pass through the audio-visual literature before writing a line of scene code, and let the findings set the defaults: Gray-Scott's F/k parameters from Munafo's xmorphia map, Lenia chosen for stability under live perturbation, envelope-smoothed and AGC-normalised mappings over raw values, event triggers for beats and onsets. The reason speech gets its own scene is a 2020 finding that speech traces smooth arcs through time and frequency. The vocal-tract scene renders that arc literally.

The rest was tuning, and the git history reads like it: "shorten kick refractory to 0.11s for fast-kick tracks", "0.4s downtime on orb 1 after a kick", "kill the disc/circle look". A hundred and twenty commits over six weeks, most of them chasing the gap between visuals that move and visuals that feel alive.

ORPHIC is about ten thousand lines, built solo, and dual-licensed: AGPL-3.0 for anyone who wants to run or fork it, and a commercial license for closing it into a proprietary product.

github.com/adityarajashekaran/orphicDownload for macOS