Eigendrum: Hear the Eigenvalues of Any Shape You Draw
Eigendrum is a browser-based tool that solves the drumhead eigenvalue problem in real time, letting you draw any shape and hear its vibrational modes. It's a practical demonstration of FEM, spectral geometry, and the physics of sound.

Eigendrum is a browser-based tool that turns any closed shape you draw into a virtual drumhead. It solves the eigenvalue problem −∇²u = λu with u = 0 on the boundary, using a finite element method over a triangle mesh. The result: you hear the fundamental frequency and overtones of your shape, and you can even play individual modes.
The math is solid. The solver is tested against known spectra—circles (Bessel zeros) and rectangles (π²(m²/a² + n²/b²))—to better than 0.1% accuracy. Because it uses a conforming FEM, the eigenvalues are guaranteed overestimates, never under. That's a nice property for a tool that claims to be educational.
Striking a point on the drumhead excites each mode proportionally to its amplitude at that point. Hit a nodal line and that mode is silent. This isn't programmed in—it emerges from projecting the mallet onto the mode shapes. The interface even shows which modes are unreachable from your strike point, and lets you play them individually.
Beyond drawing, you can define shapes parametrically: r(t) for polar curves, or x(t), y(t) for more complex outlines. A five-lobed flower is just 1 + 0.3cos(5t). The shape is encoded in the URL, so you can share and edit it as text.
The tool also includes the famous Kac drums—two different shapes with identical spectra, proving you can't always hear the shape of a drum. It's a great interactive demonstration of spectral geometry.
Everything runs client-side: no build step, no backend. The mesh, the solve, and the audio all happen in your browser. The source is on GitHub, and the site is ad-supported to cover costs.
A strike is never one mode: it is every mode at once, in a mixture set by where your mallet landed.
Source: Eigendrum
Discussion
0 Comments
Be the first to start the discussion.