Draw any shape and Eigendrum solves the physics rather than faking it — the actual Laplacian eigenvalue problem, played back as the mode mix that outline permits.
It overlays a lattice of right-isosceles triangles on whatever you draw, trims and repairs the mesh to fit the boundary, and solves −∇²u = λu with u = 0 at the edge — the Laplacian eigenvalue problem, by P1 finite elements. A generalized eigenvalue system (stiffness matrix against mass matrix) gives up its lowest 16 eigenpairs by block inverse iteration, and each frequency falls out as the square root of an eigenvalue. Draw a circle and the overtones land on ratios of Bessel-function zeros, because that’s what a real circular drum does; nobody typed that in.
Tap the drawing and the timbre shifts with where you hit, and that’s physics, not decoration: every mode has its own nodal lines — places on the membrane that never move — and a strike excites a mode in proportion to how far it displaces the surface at that exact point. Land the mallet on a nodal line and the mode stays silent. Solo any of the sixteen modes by pressing its row, or write the outline as a formula — polar r(t) or parametric x(t), y(t) — parsed by a hand-written recursive-descent parser rather than eval’d, since a shape can arrive as untrusted input in a shared link.
The best feature is the isospectral pair, and it’s worth telling correctly, because it is routinely told wrong: Mark Kac asked “Can one hear the shape of a drum?” in a 1966 paper — he posed the question, he didn’t answer it. The answer, a definite no, came 26 years later from Carolyn Gordon, David Webb and Scott Wolpert, who built two different outlines, a hook and an arrow, both assembled from the same seven right-isosceles triangles, with identical spectra. Eigendrum ships both, labelled “Kac drum I/II” after the question rather than the people who solved it, and doesn’t just assert the theorem: solving both live, it reports all 16 frequencies agreeing to within 1.0e-7 percent.
It’s free, MIT-licensed, and genuinely serverless — no build step, no backend, nothing uploaded or tracked, and it runs off a bare index.html. The honesty extends to limits: a hairline sliver or a self-crossing outline gets refused outright rather than solved wrong, and a 2,000-unknown mesh takes about 700ms in a background worker; finer meshes for elaborate hand-drawn or equation-drawn shapes take longer.