Discover More Oddities at Odd.Place

Ring Lattice

A living pattern field. Rings, dots and diamonds grow out of random noise, sort themselves into crystals, collide along seams, and heal when you tear them.

What you are looking at

Underneath the drawing is a single smooth surface, a height that varies across the square, like a sheet of rubber with bumps pushed up from below. Nothing on the screen is drawn directly. The rings are contour lines, the same lines a topographic map uses to show hills. A tall bump crosses two contour levels and shows up as a ring with a dot in the middle. A shorter bump crosses only one and shows up as a dot. Where the bumps lean into each other they fuse into figure-eights and, in some regions, the hills invert into a checkerboard of diamond-shaped hollows.

The surface is never still. Each moment it is nudged by a rule that rewards bumps of two particular sizes and punishes everything else. From pure static, the surface discovers that the cheapest way to satisfy the rule is a square crystal of bumps, and it builds one. Different corners of the square start crystals at different angles and offsets, so you get grains that meet along seams. The seams slowly migrate as one crystal eats another.

A short history of patterns that make themselves

In 1900 the French physicist Henri Bénard heated a thin layer of oil from below and watched it organize itself into a honeycomb of convection cells. Lord Rayleigh worked out the theory in 1916: a uniform layer becomes unstable at a particular wavelength, and that wavelength sets the size of the cells. That idea, that a featureless system can choose a length scale for itself, runs under everything on this page.

In 1952 Alan Turing published The Chemical Basis of Morphogenesis, showing that two chemicals that react and diffuse at different rates can spontaneously form spots and stripes. Turing patterns are now used to explain the markings on fish, the spacing of hair follicles, and the ridges on the roof of a mouse's mouth. Anyone who has looked closely at a reef fish has seen one.

In 1977 Jack Swift and Pierre Hohenberg distilled convection into a compact equation that has become the workhorse of pattern formation. It has one preferred wavelength, and depending on a couple of knobs it produces stripes, hexagons or labyrinths. In 1993 Edwards and Fauve shook a dish of fluid at two frequencies at once and saw something stranger: squares, and twelve-fold quasipatterns that never repeat. In 1997 Ron Lifshitz and Dean Petrich showed that you can capture that behavior by giving the Swift–Hohenberg equation two preferred wavelengths instead of one. When those two wavelengths stand in a ratio of √2, the side and the diagonal of a square, the system favors square crystals and superlattices of big and small spots. That is the engine of Ring Lattice.

Cellular automata, and why this is not quite one

Cellular automata go back to John von Neumann and Stanislaw Ulam in the 1940s: a grid of cells, each updated from its neighbors by a fixed rule. John Conway's Game of Life, popularized by Martin Gardner in 1970, made them famous. Later work widened the neighborhoods (Kellie Evans' "Larger than Life"), made the states continuous (Bert Chan's Lenia, 2019), and stacked several ring-shaped neighborhoods together (the multiple-neighborhood automata that circulate in generative-art communities). The animation that inspired this page came from that world.

Ring Lattice takes the same spirit, every point updated from its surroundings, again and again, but uses a smooth continuous field and the physics of two-wavelength pattern formation. That is why its lines are so clean: they are contours of a smooth surface rather than edges of blocky cells.

How it works

The height u evolves under a two-mode Swift–Hohenberg equation:

∂u/∂t = r u − [ (1 + ∇²) ( (1 − m) + m (ρ² + ∇²) ) ]² u + g u² − c u³

Everything runs on your graphics card through WebGPU. Each time step applies the nonlinear terms point by point, then transforms the whole field into frequencies with a fast Fourier transform. In frequency space the stiff derivative operator becomes a simple multiplication, so it can be solved implicitly and stays stable even with large steps. Then the field is transformed back. On a 512 × 512 grid that is several hundred thousand points, many times a frame.

The drawing pass upsamples the field with smooth bicubic interpolation and draws anti-aliased bands wherever the height crosses one of the contour levels. The walls hold the edge of the field at a fixed height, which is why ripples line up parallel to the border, just as waves line up against a seawall.

Your finger or mouse doesn't paint. It creates a small current centered on the pointer, flowing inward, outward or around, and the pattern is carried along by it. The pattern's own rule keeps trying to restore its crystal, so what you see is a tug-of-war between your current and the field's preference for order. When you let go, the scar slowly heals.

Save SVG traces each contour level directly from the field with marching squares and writes them as true vector paths, ready for a plotter, a laser cutter or large-format print.

Things to try

Hearing it

Press the speaker button and the pattern makes its own sound. About thirty times a second the graphics card samples the field, and every ring is found and tracked from one moment to the next, so the sound is made of what the rings are actually doing.

The Music box mode is the alternative: a playhead sweeps the screen and plays each bump it passes, like a music-box cylinder. Everything is synthesized live in your browser, and recorded clips carry the sound with them.

Sharing your creation

Share your creation makes a 1200 × 630 picture of what's on screen and, if you like, a clip of up to 15 seconds: vertical for Reels and Stories, landscape, or square. While it records, the screen shows the exact frame being filmed and you can keep playing with the pattern. Both are posted to a page of their own on rings.odd.place, with a button that opens Ring Lattice with your exact settings. A Facebook post shows the picture; the clip plays when people open the page. To post the clip itself as a Facebook video, download it from the share window and upload it to Facebook.

Privacy

Everything runs in your browser. The site keeps simple daily counts, such as visits, shares and which buttons get used, with no cookies and no IP addresses stored. Shared pictures and clips are public at their link, and anyone can report one that shouldn't be there.

Credits

Pattern physics after Swift & Hohenberg (1977) and Lifshitz & Petrich (1997). Inspired by a cellular-automaton animation shared in the generative-art community.

Created by Jason Buchheim of Odyssey Expeditions: marine biologist, ocean photographer and immersive-media developer, building odd machines for curious minds.

Discover More Oddities at Odd.Place

Share your creation

The picture that will be shared

Recording closes this window, shows the exact frame being filmed and counts down 3, 2, 1, so you can pull, swirl and switch modes while it records. Press Esc or Stop to end early. Vertical is the shape for Facebook and Instagram Reels and Stories.

A Facebook link post always shows the picture; the clip plays when people open the share page. Facebook doesn't let websites post videos for you, so "Post clip as a Facebook video" downloads the clip and opens Facebook for you to upload it. On a phone, Share… hands the clip straight to the Facebook app. Titles can't contain links.

Feature this piece

Rights first. Only feature music you wrote, own, or hold a licence to distribute publicly. Featured files can be downloaded by anyone with the link. Don't upload commercial recordings, or MIDI arrangements of songs, unless you have the rights to share them.

The picture for the share page

The picture is taken from the screen. To show the music at work, let it play and take the picture while the pattern is moving; you can play with it during the countdown.

A new picture for a featured piece

The new picture

Listening live

How live listening differs from a loaded song. A song you load is analysed all the way through before it plays, so every touch lands exactly on its note. Live listening can only react to what it has already heard:

This browser doesn't support WebGPU yet.

Open Ring Lattice in a recent Chrome or Edge, or Safari on macOS 26 or iOS 26.