Eigendrum — это веб-инструмент, который считает и озвучивает собственные частоты барабанной перепонки любой формы. Физика простая: зажатая по краю мембрана колеблется только в определённых формах и частотах, они задаются уравнением −∇²u = λu с нулём на границе. Для почти любой формы формул нет, поэтому Eigendrum покрывает контур треугольной сеткой, строит матрицы жёсткости и массы конечного элемента и численно ищет наименьшие собственные значения Kφ = λMφ.
Точность проверяют на формах, где спектр известен точно: у круга частоты дают нули функций Бесселя, у прямоугольника — π²(m²/a² + n²/b²). Обе воспроизводятся с точностью лучше десятой доли процента. Метод конформных конечных элементов минимизирует энергию на ограниченном пространстве, поэтому ответы гарантированно слегка завышены, но никогда не занижены.
Удар по мембране важен: он возбуждает каждую моду пропорционально тому, насколько сильно эта мода движется в точке удара. Если ударить по линии, где мода стоит, она не зазвучит совсем. Это не закладывали отдельно — проекция удара на моды даёт это сама. В списке мод квадратом отмечены те, до которых конкретный удар не дотянулся. Нажатие на строку проигрывает одну моду отдельно — так слышно, как звучит одна частота формы, и ни один молоточек такого не умеет.
Кроме обводки контура, форму можно записать уравнением. r(t) — радиус за один оборот, например 1 + 0.3cos(5t) даёт пятилепестковый цветок. Параметрические x(t), y(t) доходят до форм, которые полярными координатами не описать: нефроид, яйцо. Так получаются одиннадцать ровных лепестков или суперэллипс между кругом и квадратом. Ссылка на формулу хранит саму формулу — её можно прочитать, перепечатать и отредактировать в адресной строке. Слишком тонкие фигуры, которые нельзя честно покрыть сеткой, отказываются считать, а не выдают заведомо неверные числа.
В 1966 году Марк Кац спросил, можно ли услышать форму барабана. В 1992 году Кэролин Гордон, Дэвид Уэбб и Скотт Вольперт ответили «нет», построив две разные формы с одинаковым спектром. Обе лежат в списке форм как Kac drum I и II: семь одинаковых треугольников, переставленных по-разному, одинаковая площадь и периметр, все частоты совпадают, а контуры разные.
Абсолютная высота тона зависит от размера и натяжения, затухание обертонов — от материала и воздуха, поэтому это ползунки. Перед расчётом все формы масштабируются к одной площади. Ширина молоточка тоже настраивается, время контакта фиксировано в несколько миллисекунд — мгновенный удар возбуждал бы все моды одинаково. Демпфирование релеевское, потери растут с квадратом частоты, высокие обертоны гаснут первыми, и барабан темнеет по мере звучания.
Eigendrum живёт на eigendrum.com, старое зеркало baselashraf81.github.io/eigendrum редиректит туда. Никакого бэкенда: сетка, расчёт и аудио работают в браузере. На сайте стоят Vercel Analytics, Google Analytics и Google AdSense — они оплачивают домен. Нарисованная форма хранится в адресной строке после #, браузеры не отправляют её на сервер, аналитика настроена не записывать её. Исходники с решателем и тестами — на github.com/BaselAshraf81/eigendrum.