Visualizations
273 / 500

273 · Sound

Chladni Plate

Sand dances into Chladni figures on a brass plate whose modes come from the Ritz method.

A 24 cm brass plate, clamped at its center and driven at its edge by a bow, is solved as a Kirchhoff thin plate with the Ritz method: 144 products of free-free beam functions, a stiffness matrix of bending, Poisson and twist terms, stiff penalty springs for the clamp, and a Jacobi eigen-solve spread over the first frames. The steady response at the drive frequency is a sum over 44 computed modes, and each of about 18,000 grains feels the local acceleration: where it exceeds gravity the grain hops randomly and a little downhill, so sand drains out of the antinodes and piles onto the nodal lines, while a crowding rule gives the piles some width. Off resonance the plate barely moves and the sand stays put, so figures form and reorganize only as the sweep crosses a resonance. The curve is the plate's response at the bow point and the portrait is the dominant eigenmode; press N to overlay its nodal lines and see the sand sitting on them.

Try it. Drag along the response curve to set the frequency (up and down arrows jump between resonances), drag the bow to another spot on the edge to excite different modes, click the plate to tap it and hear its modal ring, and drag across the plate to pour fresh sand. N overlays the computed nodal lines, R re-dusts the plate, M mutes; sound starts on the first click.

  • Ritz method
  • Kirchhoff plate theory
  • Jacobi eigenvalue solver
  • Modal superposition
  • Particle sand model
  • Web Audio

View the source · one module, plus a small shared runtime for sizing, the animation loop and input

Build your own

Paste this into Claude Code, Codex or any coding agent to get a simple version running, then take it wherever you like.

Build a Chladni plate simulation with JavaScript and the HTML canvas element: sand on a vibrating square plate that gathers on the lines that stay still. Put everything in a single index.html file with no libraries or build step, so I can open it directly in a browser.

Start simple:
- Make a canvas that fills the window, stays sharp on high-DPI screens (scale by devicePixelRatio), and resizes with the window. Draw a square plate in the middle on a dark background.
- Use the classic approximate mode shape for a square plate with free edges: w(x, y) = cos(n pi x) cos(m pi y) - cos(m pi x) cos(n pi y), with x and y from 0 to 1. Pick n = 3 and m = 5 to start.
- Scatter about 10,000 sand grains at random positions. Each frame, read |w| at each grain: if it is above a small threshold, nudge the grain by a random step proportional to |w|; if it is below, leave it alone. Grains drain out of the moving parts and collect where w is zero.
- Draw the grains as single light pixels into an ImageData buffer and put it on the canvas once per frame, so thousands of grains stay fast.
- Let the number keys pick different (n, m) pairs, and re-scatter the sand with R.

Once that works, make it beautiful:
- Give the plate a brushed brass look: a warm gradient, faint horizontal streaks and a soft highlight, all generated in code.
- Add a small drift down the slope of |w| so the lines sharpen, and a little shadow under each grain so the sand looks heaped.
- Animate between modes with a frequency slider: blend two neighboring mode shapes as the frequency crosses between them and watch the sand reorganize.

Explain the key ideas in short code comments. When you're done, tell me how to open it and suggest three directions I could take it next, such as computing real plate modes with the Ritz method and beam functions, playing each mode as a tone with Web Audio after a click, or driving the plate at one edge point so only some modes are excited.
PreviousEngraving RendererA moving 3D still life printed as a copperplate engraving, line by swelling line. NextTeletextA working teletext decoder: mosaic graphics, carousel pages and hidden answers.

Related visualizations

  • Music BoxSound A pinned brass drum plucks cantilever tines from a punched strip you can edit.
  • Foucault PendulumPhysics A museum pendulum ploughs a rosette into sand as the Earth turns beneath it.
  • Marimba Bar TunerPhysics Carve a rosewood bar while a finite element solver retunes its overtones to 1:4:10.
  • Falling SandSimulation Sand, water, fire, lava and plants that all react with each other.
  • Drying MudSimulation Wet clay dries and cracks into a lakebed of curling plates, primaries first.
  • CochleaSound An unrolled inner ear: traveling waves on the basilar membrane sort a chord by pitch.
  • Wandering DunesNature Crescent dunes march across a desert, built by a three-rule sand slab model.
  • Bowed StringPhysics Helmholtz motion on a bowed violin string, with a Schelleng diagram measured live.
  • Faraday WavesFluids A shaken dish of liquid locks into stripes, squares, hexagons and a 12-fold quasicrystal.

Use ← and → to move between demos. While the canvas has focus, keys go to the demo instead.

← More from Emergent Mind Labs