AJ Tapes tvOS · Visualizer Preview

Light Painting

Long-exposure light painting: five jewel-toned lights swing on precessing harmonograph orbits over pure black, and their ribbons persist for a few seconds — the last bars of the song stay visible as drawn light. Every kick is recorded as a bright knot in the stroke. First feedback-based mode beyond Milkdrop, riding the same ping-pong pipeline.

Twelve seconds, scripted 122 bpm pulse. Watch the beat knots bead along each ribbon, the white-hot blowouts where a light slows at a petal's apex, and old strokes diffusing into soft glow as they fade — like the afterimage of a real long exposure.

How it listens

Bass punch
Strokes bloom — width ×2.4, brightness ×2.3 for an instant — so each kick leaves a knot in the ribbon. Same onset envelope as Murmuration (padding.x): raw-bass attack, ~280 ms exponential release.
Smoothed bass
Swells the whole figure (+28%) and sustains trails slightly longer.
Mids
Wobble the pendulum paths and widen the satellite orbits.
Highs
Tiny satellites coil sparkle around each stroke — cymbals read as glitter.

Three exposures

Magenta, blue and red ribbons crossing in a braided figure
Braid. Five heads at incommensurate frequencies — the figure never repeats.
Violet, red and green strokes curling like calligraphy
Calligraphy. Trail life ~2.5–3 s keeps it strokes, not smear; the palette reshuffles on the slow jewel-tone phase.
Gold, green and blue arcs with bright knots and soft aged glow
Knots. Beat pulses recorded down the blue stroke; older arcs already diffusing into glow.

Burn-in posture

Touched: PlasmaShader.metal (lightPaintingFragment + lpHeadOffset), PlasmaMetalView.swift (case + usesFeedback generalization of the milkdrop pipeline), CLAUDE.md/AGENTS.md ×4, new docs/shader_reviews.md + scripts/shader_harness.swift. tvOS build: succeeded.