Skip to content

Technique catalogue

A survey of generative, algorithmic and procedural art techniques worth drawing to music, organised by the GPU render idiom each one needs — a line strip, a compute-driven particle buffer, a texture that feeds back into itself, a full-screen fragment shader — with a note on how reactive and how expensive each is.

It is a reference list rather than a plan. Four of the idioms already exist and the scene families you can name in a preset came out of them; the rest is what a technique would cost if someone wanted it. Read it to understand why the engine draws what it draws, or to shop for what it could draw next.

Sourced from a 2026-07-22 research pass plus a focused pass on walkers and The Nature of Code. The decisions derived from it live in ADR-0015; the first plan it drove is Plan 0016.

The four render idioms (and what exists here)

Almost every technique below collapses onto one of four GPU idioms. Building an idiom once unlocks its whole family, so the idiom — not the individual technique — is the unit of work.

Status column refreshed 2026-07-25. All four idioms now exist — the unit of work has shifted from “build the idiom” to “add a technique on an existing one”, which is mostly content plus a shader or a sampler.

IdiomWhat the engine needsRepo status
A. Line / point stripsvertex buffer of evaluated points (LineRenderer)Existsrender/scenes/lines/ (Plan 0010, closed): parametric curve, L-system, Hankin star
B. GPU particlesstorage buffer + compute step + additive/instanced drawExistsrender/scenes/particles/ (Plan 0016, closed): four strange-attractor families on the engine’s first compute pipeline
C. Texture-feedback ping-pongtwo offscreen textures, read one / write other, fadeExistsrender/feedback.rs PingPongField (Plan 0014, closed) + render/scenes/reaction_diffusion.rs; also reused by the trails composite stage
D. Full-screen fragmentone quad, all colour in the pixel shaderExistsrender/scenes/fragment_field.rs

Since this catalogue was written the engine also grew a composite layer the idioms all ride — background -> scene -> post chain (trails -> kaleidoscope) -> [transition blend] -> ink -> present: a background pre-pass, a shared view transform, feedback trails and a screen-space kaleidoscope behind a PostStage chain, a two-input cross-preset dissolve, and a terminal ink tone-remap (ADR-0018 / 0024 / 0028 / 0031 / 0032), plus a shared palette LUT (ADR-0021). A new technique inherits all of that for free — including dissolving into and out of every other preset — so budget it as a scene, not as a whole look.

Two facts that shape everything:

  • We already have a stronger audio hook than the “standard” recipe. Real-world visualizers (MilkDrop/projectM) feed a handful of fixed uniforms (bass/mid/treble/beat) into shaders. This project’s ADR-0002 layer-2 binds arbitrary named parameters to expressions over the full analysis frame. So idiom-D scenes need new shaders, never new audio plumbing.
  • Techniques with a small scalar parameter set are the most audio-modulatable — superformula m/n1/n2/n3, Gray-Scott F/K, Lenia mu/sigma, attractor coefficients a,b,c,d. A few knobs routed onto bands/beat is the whole reactivity story.

Idiom A — line / point strips (have it: lines/, Plan 0010 closed)

Cheap, plotter-clean, rides the existing LineRenderer. New entries here are mostly content (a new curve family + presets), not new infrastructure.

TechniqueWhat it isAudio fitCost
Superformula / supershapesGielis generalisation of the superellipse; m symmetry + n1/n2/n3 exponents → huge range of organic 2D/3D formsHigh — exponents morph the whole shapeTrivial (new parametric family)
Harmonographsum of decaying sinusoids (simulated pendulums) → looping Lissajous-like figuresHigh — frequencies/phases/decay from bandsTrivial
Epicycloid / hypotrochoid (Fourier drawing)point traced by circles rolling on circles; the spirograph / Fourier-series curveHigh — radii/ratios from spectrumTrivial
L-systems / fractal branchingrewriting grammar → turtle geometry (trees, ferns, Koch)Med — branch angle → centroid, depth → energy, beat → regrowModerate (CPU-generate + cache; already in Plan 0010)

Research note: superformula/harmonograph/epicycloid did not get a verified source in the main pass, but they are textbook math and near-trivial extensions of the existing curve system — absence of a citation reflects the verified-claim set, not any doubt about feasibility.

Idiom B — GPU particles (have it: particles/, Plan 0016 closed)

The genuine new capability. Compute shader steps particle state in a storage buffer; additive point-sprite draw; trails via a fade pass. Verified: state stays GPU-resident (no CPU round-trip); attractors scale to 100M points at ~16 bytes each. Refuted framings: not CPU polylines, not a per-particle RK4 integrator.

TechniqueWhat it isAudio fitCost
Strange attractors (De Jong, Clifford, Thomas, Lorenz, Aizawa)iterate a chaotic map/ODE per particle; the point cloud is the artifactHigh — coefficients a,b,c,d; beat → reseed/kickCheapest high-impact particle family — Plan 0016
Curl-noise flow fieldsadvect particles by curl of a noise field (divergence-free → swirly, incompressible)High — noise scale + advection strengthModerate (same compute path)
Fractal flames (Electric Sheep / Apophysis)IFS “chaos game”: random non-linear variation, accumulate into a log-density histogram, log-tonemapHigh — variation weights + affine coeffsModerate-heavy (needs histogram/atomic + tonemap pass)
Boids / flockingReynolds steering: separation + alignment + cohesion over neighboursHigh — neighbour radius → centroid, speed → amplitudeModerate (needs spatial-hash grid to stay O(n))
Particle systems (emitter/lifespan)beat → emission burst, amplitude → rate/velocity, band → colourVery high (the archetypal visualizer scene)Moderate (GPU particle buffer + additive)

Idiom C — texture-feedback ping-pong (have it: PingPongField, Plan 0014 closed)

Read one texture, write the next, fade each step. Ideal iGPU fit — no per-cell branching cost.

TechniqueWhat it isAudio fitCost
Reaction-diffusion (Gray-Scott)two chemicals diffuse + react → coral/spots/stripes/mitosis; knobs F (feed), K (kill), Da/DbHigh — tiny F/K space onto bandsModerate — Plan 0014
Lenia (continuous CA)states in [0,1]; A += dt·G(K∗A) — radial kernel convolution + unimodal growth G(mu,sigma)High — mu/sigma/dt are small expressive knobsModerate; cost dominated by kernel radius R
Conway / discrete CAGame of Life + generalised grid rulesMed — beat → reseed, amplitude → update rateCheap
Walker trailsany walker family (below) rendered into a fading feedback texturesee walkersTrivial once the fade pass exists

Idiom D — full-screen fragment (have it: fragment_field.rs)

One quad, all colour in the pixel shader. New looks are new shaders on the existing pattern + named params; no new audio wiring.

TechniqueWhat it isAudio fitCost
Chladni / cymatics plateszero set of cos(n·pi·x/L)cos(m·pi·y/L) − cos(m·pi·x/L)cos(n·pi·y/L); integer mode numbers n,mHigh — n,m from beat / dominant frequency; thematically perfect for a music vizCheapest of all — no state, pure per-pixel eval
Domain-warped noise fieldsiterated Perlin/simplex fold + cosine paletteHigh — warp/zoom/hue paramsCheap (this is essentially what fragment_field already does)
Raymarched SDF scenesCSG tree of signed-distance primitives, sphere-traced in the fragment shaderMed-High — primitive params, cameraBudget-sensitive — cost scales with march steps; needs per-scene budgeting on iGPU
MilkDrop-style per-pixel fieldsper-pixel + per-frame equations + pixel shader (the projectM design)Very high (the field’s reference design)Moderate

Walker family (rides idiom A or C)

All are one compute/update step + one fade pass — four presets for roughly one scene’s cost. Ranked by fit for a beat-reactive, iGPU-friendly engine:

  1. Correlated / persistent walk — heading = previous + small random turn. Exposes the two most musical knobs: step size (→ amplitude) and turn bias (→ spectral centroid). Trivial. Sweet spot.
  2. Noise-guided walk — heading read from a Perlin field; “combed flow” look. Trivial.
  3. Flow-field walkers — shared field; audio moves all walkers coherently (beat → radial impulse). Moderate.
  4. Lévy flight — heavy-tailed step length; gate the long jumps on beat → punchy synchronized leaps. Trivial.
  5. Classic / drunkard’s walk — calm, diffusive; no natural turn-bias knob. Trivial.
  6. Self-avoiding walk — history-dependent, fights audio forcing, awkward on GPU. Mod-heavy.

Structural / ambient (better as capped CPU generators for occasional non-reactive scenes): differential growth, space colonization (branching venation/trees).

The Nature of Code → scene mapping

Daniel Shiffman’s free book (natureofcode.com) maps almost 1:1 onto reusable scenes. Highest-leverage chapters, priority order:

  1. Ch. 3 Oscillation — sine/polar/harmonic motion; essentially free (vertex math), extends the Maurer-rose / parametric-curve family directly.
  2. Ch. 4 Particle Systems — the archetypal visualizer scene (idiom B).
  3. Ch. 0 Randomness — the walkers above.
  4. Ch. 7 Cellular Automata — ping-pong texture, ideal iGPU fit (idiom C).
  5. Ch. 5 Autonomous Agents — flocking/boids (needs a spatial-hash grid).

Deprioritise / offline: Ch. 6 Physics (heavy solver); Ch. 9 Evolutionary (great offline — evolve preset parameters toward an aesthetic fitness; ties into the preset-author lane, which now exists per ADR-0017); Ch. 10/11 Neural (audio-analysis helper at most, not a renderer).

What real music visualizers actually use (verified)

  • MilkDrop / projectM — the field’s reference design and most-deployed visualizer (Winamp, Kodi): per-pixel + per-frame equations + pixel shaders, driven by FFT bass/mid/treble + beat over PCM — the exact features this project already extracts.
  • Shadertoy-style — a single full-screen quad, all visuals in the fragment shader, audio fed as a spectrum texture or named uniforms.
  • VJ tools (TouchDesigner / Hydra) — the same idioms wrapped in node graphs.

Suggested pick order (payoff ÷ engine work)

2026-09-09: items 1 (curve families) and 2 (Chladni) are designed and drafted, as are escape-time fractals and discrete cellular automata, under ADR-0180 and Plans 0161-0164. Item 3’s fractal flames and item 4’s Lenia are placed by that ADR as family arms on systems those plans create, and are the two cheapest unbuilt entries on this list once they land.

Refreshed 2026-07-25 — the first entries of the original order (attractors, Gray-Scott) have shipped, so what remains is ranked against the idioms as they now stand:

  1. Superformula / harmonograph / epicycloid — a second/third CurveFamily on the existing parametric_curve scene, near-zero new infra. Still the cheapest win on the board, and maurer_rose is still the only family (CurveFamily::from_name).
  2. Idiom D → Chladni, then SDF — new shaders on the existing fragment-field pattern; Chladni is nearly free and thematically on-point for a music visualizer.
  3. Idiom B → curl-noise flow fields, then fractal flames — the compute path, particle buffer and trail accumulation from Plan 0016 are all reusable; flames additionally need a log-density histogram + tonemap pass.
  4. Idiom C → Lenia — the PingPongField and fixed-timestep accumulator exist; cost is dominated by kernel radius.

Walkers ride idiom A or C, so they slot in cheaply alongside.

Honest caveats (from the research)

  • Coverage gap: no verified source survived for L-systems, discrete Game-of-Life CA, standalone noise/domain-warp fields, harmonograph/epicycloid, or metaballs/marching-squares. That reflects the verified-claim set, not infeasibility — all are well-known and cheap.
  • Performance figures are partly extrapolated: SDF raymarching, large-radius Lenia convolutions, and dense reaction-diffusion scale with per-pixel work — budget per scene on integrated GPUs.
  • Chaos amplifies cross-vendor floating-point divergence (attractors especially), so golden-image regression should assert structural metrics or use the software-adapter baseline + tolerance, not pixel-exact compares.

Sources (verified pass)

glChAoS.P (GPU attractor particles) · rreusser “Strange Attractors on the GPU” · Draves The Fractal Flame Algorithm (flam3.com) · Codrops “Reaction-Diffusion Compute Shader in WebGPU” · Quilez raymarching SDFs (iquilezles.org) · Bourke Chladni figures (paulbourke.net) · Wikipedia Lenia · Gielis superformula (GPU-SuperFormula3D) · projectM · Audio-Shader-Studio (audio→uniform recipe) · natureofcode.com (Ch. 0/3/4/5/7 confirmed against live TOC) · Generative Hut random walkers · Sighack Perlin flow fields.

Built from a8ce055 at version 0.115.0. This site tracks main and is not versioned per release.