AJ Tapes tvOS · Visualizer Preview

Murmuration

Starlings at last light. A granular flock — part smoke, part sparks — wheels over a dusk sky, and the music steers it: bass hits snap it tight, mids stretch it into ribbons, highs flick glints off its edges. Rendered offline straight from murmurationFragment; on the Apple TV it tracks the live FFT.

Twelve seconds, scripted 122 bpm pulse. The flock contracts and ignites on each downbeat — the murmuration “whoomp” — then relaxes and drifts between hits. Individual birds flutter at ~1–2 Hz inside the mass.

How it listens

Bass punch
Flock snaps tight (long axis −26%, width −42%) and the grain ignites. New uniform in padding.x: onset detected from the raw pre-smoothing bass, instant attack, ~280 ms exponential release — beat-locked, not loudness-following.
Mids
Lean the heading into turns and stretch the envelope into ribbons.
Highs
Wing glints flicked from a handful of birds; shimmer across the grain.
Smoothed bass
Sets the glow floor of flecks and birds, so quiet passages dim the whole flock.

Four states

Quiet passage: a thin golden column of birds climbing the right of frame
Quiet. Low energy, the flock loosens into a slow climbing column.
Groove: a diagonal flock band, loose and granular
Groove. Mid energy — elongated, banking, grain streaming through the body.
Same instant with bass punch: flock contracted, brighter, denser
The hit. Same instant as “Groove” with punch at 0.95 — tighter, hotter, denser.
Split: a rose-tinted ribbon of birds sweeping the lower left
Split. A ~5-minute cycle pulls the flock into two lobes and rejoins them.

Burn-in posture

Touched: PlasmaShader.metal (new murmurationFragment), PlasmaMetalView.swift (enum case + bass-punch envelope in padding.x), CLAUDE.md/AGENTS.md ×4. The picker lists “Murmuration” automatically (last cell); default visualizer unchanged. tvOS build: succeeded.