Line — user manual
SOE · Line — 1D elementary cellular automata · the line before the plane
What this is
Line runs the simplest cellular automata there are: a single row of cells, each one either on or off, evolving one generation at a time. Each new generation is drawn as the next row down, so the screen fills from the top and becomes the automaton's whole history at once — a spacetime diagram, with time flowing downward.
A cell's next state depends on just three cells in the row above it: itself and its two immediate neighbours. Three cells, each on or off, make eight possible neighbourhoods. A rule is simply a choice of which of those eight neighbourhoods produce an "on" cell — eight yes/no answers, read together as a single 8-bit number from 0 to 255. That one number is the entire universe you're watching.
Quick start
- In the Rule group, click the 90 preset (or type 90 into Rule number).
- Open Run and press Seed to lay down a starting row.
- Press Run, and watch the pattern build downward.
Rule 90 from a single lit cell draws a Sierpiński triangle — structure unfolding from one pixel.
The controls
The panel is a set of collapsible groups. Each is described below with its controls named exactly as they appear.
Rule
- Rule number — the automaton itself, 0–255. Type any number to load it.
- Sweep — drag to scan through all 256 rules quickly; the fastest way to hunt for interesting behaviour.
- Presets (90 · 30 · 110 · 184 · 150 · 54) — six rules worth knowing; see Things to try.
Run
- Seed — lay down the starting generation (the top row), using the current Seed & boundary settings.
- Step — advance exactly one generation; good for watching a rule move slowly.
- Run — evolve continuously until you press it again.
- Clear — wipe the canvas back to empty.
- Speed — generations per second, from 1 (slow, to study it) to 30 (fast).
Seed & boundary
- single cell / random — start from one lit cell in the centre, or a random scatter across the row.
- Density — for a random seed, the fraction of cells that begin on (0.02 sparse → 0.9 dense).
- Seed value — the number used to generate a random seed. The same value reproduces the same "random" start every time, so a pattern you like is repeatable. (Default 112358 — the Fibonacci run, 1·1·2·3·5·8.)
- dead edges / wrap (ring) — what happens at the two ends of the line. Dead edges treats everything past the edge as permanently off. Wrap joins the two ends into a ring, so a pattern running off one side reappears on the other.
Display
- Colour — imprint (cyan), life (amber), or mono (white). Imprint is the SOE house blue.
- Cell size — pixels per cell, 1 (fine, more history fits on screen) to 8 (chunky, easier to read).
Library
- Library selector + Apply — load a saved configuration.
- Copy link — copies a URL that encodes your current setup; anyone who opens it sees exactly your rule and settings. The simplest way to share a find.
- Save recipe / Load recipe — export the current setup to a
.jsonfile, or load one back in.
Things to try
- Rule 90, single cell — the Sierpiński triangle. Pure structure from one cell.
- Rule 30 — looks random, and genuinely is used as a random-number generator. The left half stays ordered while the right dissolves into chaos: order and disorder from one rule.
- Rule 110 — the famous one. Complex enough to be Turing-complete — in principle able to compute anything. Watch the little gliders drift and collide.
- Rule 184 — traffic flow. With a random seed it sorts itself into moving and stopped "cars."
- Wrap vs dead edges — run rule 90 on a ring (wrap) and watch the triangle's edges fold back and interfere with themselves.
- Sweep, slowly — let the whole 0–255 landscape go past. Most rules are inert; a handful are alive. That contrast is the subject.
The mathematics (optional)
Each cell's next state depends only on itself and its two neighbours — three cells, eight possible neighbourhoods. Reading left, centre and right as a 3-bit number picks which bit of the rule to use:
So the rule number 0–255 is the machine, its eight bits the eight neighbourhood outcomes. Rule 90 in binary is 01011010 — neighbourhoods 110, 100, 011 and 001 turn a cell on, the rest leave it off. Eight bits, one line, and time.
Exact — this is the elementary cellular automaton in full; nothing is approximated.
Life Field — user manual
SOE · Life Field — Game of Life · 2D & 3D · cellular automata studio
What this is
Life Field runs Conway's Game of Life and its relatives, in two dimensions and three. The rules are simple and local: every cell counts its live neighbours, and a short table decides whether it lives, dies, or is born next step. From that tiny rule, gliders crawl, oscillators breathe, and whole machines assemble themselves — order that nobody placed there by hand.
The studio adds two things to the classic game. It lifts Life into 3D, where the neighbourhood and the surviving rules are very different. And it can bias the field onto a torus — confining where life is allowed to grow, so the game plays out across a curved surface instead of a flat grid. That second idea is the bridge from this studio to the Torus.
Quick start
- In the Game of Life group, leave the dimension on 2D.
- Open Library, choose 2D · Conway and press Apply recipe.
- Back in Game of Life, press Seed, then Run.
You'll see the classic Conway soup settle into still lifes, blinkers, and the odd glider sailing off across the grid.
The controls
The panel is a stack of collapsible groups. Each control below is named exactly as it appears.
Navigating the space (3D)
When the game runs in 3D, you move around the cell field freely:
- Left-click and drag — orbit around the field.
- Right-click and drag — free-look: turn your gaze in place.
- Mouse wheel — fly in and out.
- Touch — one finger orbits; two fingers free-look, and pinch to fly.
Game of Life
- 2D / 3D — the dimension the game runs in. The rule space and behaviour change completely between them (see Rule & seed).
- Horizontal / Vertical — the framing. Horizontal fills the window; Vertical rolls the view a quarter-turn for a full-height portrait, ideal for phone-shaped video.
- Seed — lay down a fresh starting state from the current seed settings.
- Step — advance exactly one generation.
- Run — evolve continuously until pressed again.
- Clear — empty the field.
- Speed — generations per second, 1 (slow) to 30 (fast).
Rule & seed
- Birth B / Survive S — the rule, in B/S notation. A dead cell is born when
its live-neighbour count is one of the numbers in B; a live cell survives
when its count is in S. Conway is
B3 / S23. The valid range depends on the dimension: 0–8 neighbours in 2D, 0–26 in 3D. - soup / single cell / germ — the starting state: a random fill, one live cell, or a small solid block.
- Germ size (germ) — how large that block is, 1–5.
- Density (soup) — fraction of cells that start alive, 0.02–0.6.
- Bias γ (soup) — skews the random fill; higher values clump it.
- Seed value — the number behind the random seed. The same value reproduces the same "random" start, so a result you like is repeatable. (Default 112358 — the Fibonacci run.)
Substrate bias
This is what confines life to a shape — the torus living inside the box. - None — unbiased / Toroidal bias — run over the whole grid, or only where a torus-shaped field permits. - Major r₀ / Minor a — the geometry of that torus: the ring radius and the tube radius. - Viability floor — the field strength below which a location counts as void; raising it tightens the colony onto the torus shape.
Scale & boundary
- Cell budget — the total number of cells; a log slider, with quick presets 97k / 1M / 4M. More cells means a finer, larger grid — and more work for the machine.
- dead borders / toroidal wrap — the edges of the grid. Dead borders treats outside as permanently empty; toroidal wrap joins opposite faces so patterns leaving one side return on the other.
Display
- Colour by — age (time alive), height (position), or bias (field strength).
- Cell size — how large each cell is drawn, 0.2–1.0.
- View — full object, or board (D−1) to isolate the central layer.
- Cells as — auto, cubes, or points. Points are lightest at high cell counts.
- Frame cage — show the bounding box.
- Ghost substrate (2D/3D) — show a faint outline of the torus the bias defines.
- Auto-rotate view — slowly turn the 3D scene.
Library
- Recipe selector + Apply recipe — load a saved configuration. Stocked with 2D classics (Conway, HighLife, Maze, Day & Night, Diamoeba, Fredkin replicator) and 3D rules (Life froth, crystal, Fredkin sponge).
- Save recipe / Load recipe — export the current setup to
.json, or load one.
Things to try
- Conway gliders — 2D Conway, soup seed; spot the five-cell gliders that move diagonally forever.
- HighLife (B36/S23) — like Conway but with a self-replicating pattern; load it from the Library and watch replicators copy themselves.
- 3D Life froth — switch to 3D, load 3D · Life froth; 3D Life is far rarer and stranger than 2D, since most 3D rules either die out or explode.
- Life on a torus — keep 2D Conway, open Substrate bias, pick Toroidal bias, and turn on Ghost substrate. Now the game only lives on the donut. Adjust Major r₀ / Minor a to reshape the ring, and the Viability floor to tighten it.
The mathematics (optional)
Every cell counts its live neighbours and applies one rule: a dead cell is born if its count is in the birth set B, a live cell survives if its count is in the survival set S:
In 2D each cell has eight neighbours (the Moore neighbourhood), so counts run 0–8 and Conway's
B3/S23 sits in a narrow sweet spot between dying out and overcrowding. In 3D the neighbourhood
jumps to 26 and the counts to 0–26, where that balance is far harder to find — which is why working 3D
rules like Bays' B6/S567 are prized rarities. Pushing Life up a dimension rewrites what's possible.
Exact cellular automaton. Note the studio's default is a generalised rule, not Conway's B3/S23 — set B and S yourself to run classic Life.
Torus — user manual
SOE · Torus — one toroidal form under four laws of physics: field, vibration, flow, and gravity
What this is
The Torus takes one shape — the doughnut that recurs everywhere from atoms to galaxies — and runs it under four different laws of physics, which you switch between with the Model selector. The same form becomes a vibrating shell, a magnetically confined plasma, a vortex ring, or a gravitational disk. Each is real physics, not a costume — and because every one has natural rhythms, you can hear it as well as see it.
Two things make it more than a static picture. The field can be set in motion, and any configuration — even the model — can be keyframed and played back, so one state flows into another. The built-in "Apple → Smoke" sequence does exactly that, crossing from a vibrating body into a drifting vortex ring mid-morph.
Quick start
- Open the Presets menu (bottom bar) and choose Apple.
- Press ♪ Sound in the top bar and listen to the field.
- Open Presets → Apple → Smoke, switch to Playback, and press Play.
You'll watch — and hear — the apple unwind into a smoke ring.
The controls
Model — the law of physics
The most important choice (bottom bar). It sets which physics animates the torus, and several sliders relabel to match:
- Vibrating shell (the default) — a drumhead wrapped into a ring, ringing in its true modes; B₀ reads as Membrane tension.
- Magnetic field — a tokamak-style plasma, field lines winding at the safety factor and carrying Alfvén waves (the original plasma reading).
- Vortex ring — a smoke ring; the particle medium becomes real smoke rolling with the ring. B₀ reads as Circulation Γ, twist as Swirl.
- Gravitational disk — an orbiting disk with spiral arms; B₀ reads as Mass, shear as the rotation law, m as the spiral-arm count, rotation as the pattern speed. Controls that don't apply grey out.
Navigating the space
The Torus is a real 3D space you move through freely:
- Left-click and drag — orbit: circle around the form, which appears to turn on its axis as you move.
- Right-click and drag — free-look: hold your position and turn your gaze, like turning your head to look around from where you stand.
- Mouse wheel — fly in and out (dolly toward or away along your line of sight).
- Touch — one finger orbits; two fingers free-look, and pinch to fly in or out.
Top bar
- ♪ Sound — turn the field's sonification on or off.
- Controls — show or hide the parameter panel (left).
- Readouts — show or hide the live physics readouts (right).
Authoring & Playback
The Torus has two modes. - Authoring — where you shape the field and set keyframes (the default). - Playback — plays a recorded sequence back, with transport controls: Stop · Step backward · Play backward · Pause · Play · Step forward, plus a scrub bar to drag through the timeline by hand.
The structure, field, plasma and motion values can be keyframed and eased between — that's how a transition like Apple → Smoke is built.
Structure
- Major radius R₀ — the radius of the ring itself (m).
- Minor radius a — the radius of the tube. R₀ ÷ a is the aspect ratio.
- Elongation κ — stretches the cross-section (1 = circular).
- Triangularity δ — pulls the cross-section into a D-shape, as real tokamaks do.
Field
- Field magnitude B₀ — strength of the confining magnetic field (tesla).
- Twist (q₀) — the safety factor: how many times a field line travels the long way around per turn it makes the short way.
- Shear — how that twist changes from core to edge.
Plasma
- Density ρ — plasma density (log scale).
- Edge density — the density out at the edge, shaping the profile.
Motion
- Kink amplitude — displaces the column off its axis: the m=1 kink, the wobble. (This is exactly the motion the SOE logo's offset dot depicts.)
- Ripple amplitude — a finer surface ripple.
- Poloidal mode m — wavelengths the short way around the tube (1–12).
- Toroidal mode n — wavelengths the long way around the ring (1–16).
- Rotation — spin rate in Hz (negative reverses direction).
Appearance
- Surface — brightness, opacity, Relief (welts), Bloom, Micro-relief, Micro density.
- Grid — brightness, opacity, Mesh density.
- Volume — Shells (nested surfaces) and Detail.
Field lines
Overlays you can switch on, each with Opacity / Brightness / Count: - Toroidal field — lines running the long way around. - Flux contours — loops of constant flux. - Helical lines — twisting field lines, with a Turns control.
Lighting
- Strength (0 = off), Azimuth, Elevation, Ambient floor.
Particle medium
A drifting cloud that reveals the flow around the field: - Opacity (0 = off), Count, Particle size, Spread, Flow speed, Roll · poloidal, Swirl · toroidal.
Colour
Colour the surface by field strength, magnetic footprint, density, field-line pitch, or flat; set the two colour swatches and the Grid and Background colours. On the vortex and gravity models the two swatches colour the smoke and the star disk directly (base → highlight by speed).
Sound — the field heard
- Ambient / Spatial — Ambient plays the whole field at once, with no sense of distance. Spatial plays it from your viewpoint: zoom out toward silence, fly into the tube to be immersed, cross the resonance shell and the Beat swells.
- Master — overall level.
- Six voices, each with Solo (S), Mute (M), a level fader and a live frequency readout (with note name). They are the current model's own real frequencies, and their names change with it — the Alfvén rate and mode numbers for the plasma, the membrane's partials for the shell, the core-roll and Kelvin frequencies for the vortex, and the orbital, epicyclic and Lindblad frequencies for the disk. In every case they're genuine timescales pitched into hearing range.
Presets & recipes (bottom bar)
- Reset — return everything to defaults.
- Presets — Plasma torus · Blood cell · Apple · Smoke ring · Accretion disk. Each loads in its own model.
- Save recipe / Load recipe — export the whole configuration to
.json, or load one back. These recipes are also what feed the Media gallery's stills, transforms, flights, and sequences.
Things to try
- Load Apple, press Sound — the simplest way in: a shaped field, heard.
- Raise Kink amplitude — watch the column lean off its axis. That lean is the wobble the logo is built from.
- Push Triangularity δ toward 0.8 — the D-shaped cross-section of a real tokamak.
- Switch Sound to Spatial and fly the camera into the tube — the field rises up around you.
- Apple → Smoke in Playback — press Play and let one field become another.
- Switch the Model on the same settings — shell, magnetic, vortex, gravity — and watch one form obey four different laws. Or load Accretion disk for a hot ring orbiting a black hole.
- Solo the Beat voice and sweep Toroidal mode n — hear resonances pass through as the two mode frequencies drift in and out of step.
The mathematics (optional)
The torus runs on four physical laws, and the Model selector switches between them. None of it is decorative — here is the actual mathematics behind each, with an honest note on where it is exact and where it is a faithful model rather than a full simulation.
Vibrating shell
The surface is a drumhead wrapped into a ring. Its natural notes are the standing waves of the wave equation on that curved surface — the Laplace–Beltrami eigenvalue problem:
It separates into a wave around the ring (ei nφ) and a poloidal profile Θm,n(θ) we solve numerically. Tension (B₀) and density (ρ) set the wave speed c, so a tighter, lighter membrane rings higher — just like a real drum; on a fat torus the modes lean toward the longer outer rim, and the partials come out inharmonic, like a bell.
Exact — these are the torus's true vibration eigenfrequencies (checked against the analytic thin-ring limit).
Magnetic field
A tokamak-style field threads the ring; each line winds around the tube q times per lap — q is the safety factor. The travelling waves are shear-Alfvén waves:
Where n and m meet a rational surface (q = m⁄n) the mode resonates — you can watch and hear it lock. The helical crest cos(mθ − nφ) is the genuine ideal-MHD kink displacement — the m = 1 kink buckling off-axis is the shape that became the brand's mark.
Exact — the dispersion, the field-line winding at q and the kink shape are all real; the wave amplitude is illustrative.
Vortex ring
A smoke ring. Every parcel of air is carried by the vorticity in the core through the Biot–Savart law:
That same law makes the ring push itself forward at U = (Γ ⁄ 4πR)(ln 8R⁄a − ¼), and it traps a bubble of air — the ring's atmosphere — that the smoke rolls around and travels with, which is why a smoke ring can cross a room without falling apart.
Exact velocity field (checked: centre speed Γ⁄2R, correct self-propulsion); the smoke is advected tracer particles, not a full fluid solve.
Gravitational disk
Stars orbit at angular rate Ω(r). A flat rotation curve — the fingerprint of dark matter — is Ω ∝ 1⁄r. Nudge a star radially and it bounces at the epicyclic frequency:
The spiral arms are a density wave: a rigid m-armed pattern turning at its own speed Ωp while stars stream through it (which is why the arms don't wind up). The arms live between the Lindblad resonances, where a star's radial bounce beats against the pattern:
Real orbital dynamics, epicyclic frequency and resonances; the arms are a kinematic density wave, not a live N-body self-gravity simulation.
Fractal — user manual
SOE · Fractal — escape-time sets in 2D and distance-estimated solids in 3D · structure that repeats at every scale
A fractal is a shape whose detail never runs out: zoom in and the same kinds of form reappear, smaller, without end. This studio holds two families. In 2D it draws escape-time sets — for every pixel it asks how quickly a simple repeated sum runs away to infinity, and colours by the answer. In 3D it raymarches distance-estimated solids — for every pixel it walks a ray forward in safe steps until it grazes the surface of a fractal volume, then lights it. Both run themselves: a slow tour drifts through the 2D set, a slow orbit turns the 3D form. Touch anything and you take over; let go and it carries on.
2D set / 3D bulb
The toggle at the top of the panel switches the whole studio between the flat escape-time gallery and the raymarched 3D gallery. Each mode keeps its own form list, palette and controls; switching is instant and loses nothing.
Navigating the space
Both galleries run themselves, but you can take the controls at any time — touch anything and you take over; let go and it carries on.
In 2D (the flat escape-time sets):
- Mouse wheel — zoom in and out, centred on the cursor. Keep going to fall endlessly into the boundary.
- Click and drag — pan across the set.
- Auto-dive — turn it on and the view descends into the boundary by itself, re-finding the edge as it goes.
In 3D (the raymarched solids):
- Left-click and drag — orbit: circle the form, which turns on its axis as you move.
- Right-click and drag — free-look: hold your position and turn your gaze.
- Mouse wheel — fly in and out (dolly toward or away).
- Touch — one finger orbits; two fingers free-look, and pinch to fly.
Fast 32 / Deep 64 — precision (2D)
Escape-time maths runs on the graphics card in single precision by default — fast, and crisp for the first few thousand-fold of zoom, after which the numbers run out of digits and the detail smears into blocks. Deep 64 swaps in an emulated double precision (two 32-bit floats carried per number), pushing that floor far deeper so the boundary stays sharp much further down. It costs some frame rate and currently applies to the Mandelbrot set; the other forms stay on Fast.
Fractal — choosing a form
- Form — the active fractal. In 2D: Mandelbrot (the parent set, z → z² + c), Julia (fixed c, the seed varies), Burning Ship (absolute values before squaring — rigging and hulls), Tricorn (the conjugate Mandelbrot), Multibrot (z → zⁿ, a higher-order parent) and Newton (the root basins of z³ − 1). In 3D: Mandelbulb, Mandelbox, Menger Sponge and Sierpiński (tetrahedron).
- Preset (3D only) — curated viewpoints. Pick one and the camera jumps to a flattering angle, distance, power and palette for that form (e.g. Box · Looking in, Sponge · Corner). Choosing a form by hand, or letting the tour advance, clears the preset back to “— jump to view —”.
- Cinematic tour / Auto-orbit — the self-running motion. In 2D the default is an edge-seek dive: the view descends toward fractal-boundary detail, and when you drag, scroll or click it re-aims and keeps going. Switch on the Cinematic tour instead to drift a slow zoom through each form in turn; in 3D the button turns the form on the spot. Either way it yields the moment you take control and resumes when you let go.
- Tour dwell — how long the tour lingers on each form before moving on, from a quick six seconds to a slow thirty.
- Bulb power (3D, Mandelbulb) — the exponent n in the bulb's z → zⁿ + c. Eight is the classic bulb; lower for fat, simple lobes, higher for a dense, spiky crown. The tour gently breathes this value.
Parameter — tuning the maths
- Detail (iterations) — how hard the studio looks. In 2D it's the escape-count ceiling: raise it to sharpen filaments deep in a zoom, lower it if the frame rate drops. In 3D it's the number of ray steps: more carves cleaner edges, fewer runs faster.
- Palette — the colour map: Spectrum, Ember, Ice or the house Cream & blue. It applies to both modes.
- Palette shift — rotates the colours through the band; the Drift button rotates them slowly on their own.
- Julia c (real / imag) (2D, Julia) — the fixed seed that defines which Julia set you see. Tiny moves redraw the whole shape.
- Power (multibrot) (2D, Multibrot) — the exponent n; the set gains roughly n − 1 axes of symmetry.
View — moving the camera
In 2D, drag to pan and scroll to zoom toward the cursor — keep zooming to fall into the boundary, where the detail is endless (single-precision maths sets the practical floor). In 3D, drag to orbit (left–right turns, up–down tilts) and scroll to dolly. You can now push the camera through the surface and into the structure — fly into the hollow centre of the sponge, the cavities of the box, the gaps of the tetrahedron. Reset returns the form to its framed starting view.
Readout
The strip reports the live Form, the Zoom depth (2D) or camera distance (3D), the Center or orbit angle, the active Iterations, and the FPS — your guide when trading detail for smoothness.
Things to try
- In 2D, sit on Mandelbrot, switch Drift on, and let the tour fall into the boundary with the colour band breathing as it descends.
- Flip to 3D bulb and run the presets end to end to meet all four solids from their best angle.
- On the Menger Sponge or Mandelbox, scroll all the way in until the surface opens and you are inside the structure, then let auto-orbit turn the walls around you.
- On the Mandelbulb, drag the power by hand from two to twelve and watch the lobes split and multiply.
- Tilt the 3D camera to a steep angle, release, and let the orbit hold that elevation — it resumes from wherever you leave it.
The maths
The 2D sets share one engine: iterate a simple rule on a complex number and watch whether it stays bounded or escapes to infinity. The classic Mandelbrot rule is
Points that never escape form the black body of the set; the colour outside counts how many steps escape took, smoothed so the bands flow. Change the rule and a different classic appears — Julia fixes c and varies the start, Burning Ship takes |Re z| and |Im z| first, Tricorn conjugates (z̄² + c), Multibrot raises the power (zp + c), and Newton hunts a polynomial's roots instead of testing escape.
The 3D forms can't be solved that way, so they are raymarched: each pixel fires a ray and, at every point along it, a distance estimator returns a safe distance to the nearest surface —
so the ray leaps that far, again and again, until it grazes the fractal, where the surface normal, ambient occlusion and a blue rim light give it depth. The Mandelbulb folds space in spherical coordinates (radius raised to a power, angles multiplied); the Mandelbox folds it with box and sphere reflections; the sponge and tetrahedron fold it with plain reflections. The same idea throughout: structure that repeats at every scale, lit so you can walk into it.
Exact mathematics — these are the sets and solids themselves, computed point by point, not a simulation of anything.
Resonance — user manual
SOE · Resonance — standing waves, Chladni figures and Lissajous curves · the field made visible
What this is
Resonance drives a surface — a plate, a sheet of water, a field of light — with a single pure frequency and lets you watch where it holds still and where it moves. At most frequencies the surface just shudders. At special ones, the resonant modes, the motion locks into a standing pattern: still lines (nodes) where nothing moves, and cells between them that heave in and out. Sprinkle grains on a plate and they migrate off the moving cells and gather on the still lines, tracing the pattern in sand. Those are Chladni figures — you are looking at the shape of a frequency.
Each pattern is named by two whole numbers, the mode (m, n) — how many half-waves fit across the plate in each direction. Whole-number modes are exactly why a string sounds musical: the same integer ratios that make a plate ring make an octave, a fifth, a third. Resonance lets you hear the tone, see its plate, and read the interval it belongs to, all at once.
Quick start
- Leave Medium on Particles, and in the Sound group press Sine on so you can hear the drive.
- Turn the Frequency dial — drag it up or down, or scroll over it — slowly upward. For most of the range the grains just jitter.
- When the state readout flips to resonant, the grains snap onto a clean figure — that's a mode. Use the mode ▸ arrow to jump straight between resonant frequencies.
Every resonant frequency is a different sand figure. Stepping through the modes is stepping through a frequency's hidden geometry.
The controls
The panel is a set of groups; each control is named exactly as it appears.
Plate shape
- Plate shape — Square, Circle or Triangle. Each is a genuinely different vibrating plate with its own family of modes — the square's free-edge beam modes, the circle's Bessel rings and spokes, the equilateral triangle's exact modes — so the same frequency draws a different figure on each.
Frequency
- Frequency — a dial for the single tone driving the surface, shown in hertz. Drag it up or down, or scroll over it, to change the tone in 1 Hz steps (hold Shift for a faster sweep); the dial spins as you go. The readout reads resonant when you land on a mode and drifts otherwise.
- ◂ mode ▸ — step to the previous or next resonant mode (m, n). The cleanest way to tour the figures without hunting frequency by hand.
Drive
- Amplitude — how hard the surface is driven (×). More amplitude throws the grains harder and sharpens the figure; too much and they scatter off it.
- Re-scatter — toss the grains back into an even layer so a fresh figure can form cleanly.
- Re-scatter on sweep — when on, the grains re-scatter automatically each time you cross into a new mode.
Time
- Play speed — slows or freezes the simulation (× — 0 = paused, 1 = full speed). Drop it low to watch the grains crawl toward the nodes.
Sound
- Sine on — play a pure sine tone at the current frequency, so you hear what you're seeing.
- Volume — tone level.
Medium
- Particles / Waves / Light — what the standing wave is made visible in. Particles is the classic sand plate, grains migrating to the nodes. Waves shows the surface itself heaving. Light renders the field as luminance.
- Grains — for Particles, how many grains sit on the plate. More grains, a denser figure.
- Surface mesh — show the driven surface as a mesh beneath the active medium.
- Colour — the palette for the active medium. A side readout also maps the tone onto a visible colour as an honest analogy — sound sits far below light, so it is an illustrative correspondence, not a physical conversion.
View
- Reset view — return the camera to straight-on. Otherwise drag to orbit, scroll to zoom — the plate is a real surface in space you can look across.
Lissajous
- Lissajous window — alongside the plate, the curve traced by two frequencies held at a whole-number ratio (m:n). A 1:2 ratio — the octave — draws a figure-eight; 2:3, a fifth, draws a tidier knot. The Pythagorean intervals are exactly the ratios that close into a stable curve.
Things to try
- Walk the modes — step ▸ from the lowest mode upward. Low modes are simple crosses and rings; high modes are intricate lattices. Complexity climbs with frequency.
- Particles → Waves → Light on the same mode — the node lines stay put while the look changes completely. The pattern is the frequency, not the medium.
- Hold a mode and drop Amplitude — the figure softens as the drive weakens, then sharpens again as you raise it.
- Sine on, then sweep slowly — the ear catches the resonance a moment before the grains finish gathering. Hearing and seeing the same instant.
- Lissajous at 1:2, then 2:3, then 3:4 — octave, fifth, fourth. The simpler the ratio, the simpler the curve. That is consonance, drawn.
The mathematics (optional)
A real Chladni plate is free at its edges, so its modes are not the simple clamped half-waves you might guess — each plate shape has its own exact solution, and the sand gathers on the nodal lines φ = 0 where the surface displacement cancels.
Square plate
A free plate's figures are built from free–free beam shapes — the vibration of a bar with loose ends — set by the transcendental condition
with the plate's pattern a product of two such beams, one each way across it. The degeneracy between (m, n) and (n, m) at equal frequency is what lets the crosses and loops look so organic.
Circular plate
On a disc the modes split into rings and spokes — a Bessel function radially, a cosine around:
where D is the number of nodal diameters and λ is a zero of J′D — the free-edge condition that makes the rim an antinode; the nodal circles sit at the zeros of JD.
Triangular plate
The equilateral triangle is one of the very few shapes with an exact closed form (Lamé's solution), because it tiles the plane by reflection. Its free-edge modes are symmetric combinations of three plane waves — the A2 “C-functions” — and their frequencies fall out as
the hexagonal-lattice signature of three-fold symmetry.
Exact — all three plate spectra are the true free-edge eigenmodes (validated to machine precision: the beam roots, the Bessel zeros, and the triangle's exact modes). The sand's drift to the nodes is a faithful over-damped model rather than a full time-domain elastic solve, and the colour readout is an analogy, not physics.