Разработчик выпустил PartialString, синтезатор струн на честном физическом моделировании
Кристиан Бейкер, работающий по основной специальности инженером-биомедиком (ультразвук, оптика, фотоакустика), выпустил синтезатор PartialString под своим сольным проектом Different Instruments. Инструмент моделирует звук щипковой струны методом конечных разностей во времени (finite-difference time-domain, FDTD): струна хранится в памяти как список точек смещения, и на каждом шаге программа численно решает одномерное волновое уравнение, вычисляя, как возбуждение в одной точке распространяется по всей длине струны. Более низкая нота требует более длинной струны и, соответственно, большего числа точек для расчёта. Виртуальный «звукосниматель» измеряет смещение в выбранной точке струны, это и формирует звук на выходе.
Синтезатор поддерживает до 10 голосов одновременно, но реальная полифония динамически подстраивается под мощность компьютера и длину симулируемых струн: на слабых машинах число голосов автоматически ограничивается, а в нижнем регистре инструмент может звучать монофонически. Есть отдельная опция для слишком низких нот, которые заведомо перегрузят процессор даже в монофоническом режиме, их можно либо блокировать, либо автоматически транспонировать на октаву-две вверх; при этом опция не действует, если DAW выполняет офлайн-рендер (bounce/freeze) дорожек.
Из управляемых параметров: положение и форма точки возбуждения струны (оба чувствительны к velocity), LFO, качающий позицию звукоснимателя вплоть до аудиочастот (даёт эффект, похожий на амплитудную модуляцию с боковыми полосами), регулируемое время затухания с демпферами или без них. Демпферы можно настроить так, чтобы они закрывались при завершении ноты, как у фортепиано; в сочетании с длинным незадемпфированным затуханием это даёт пэдоподобные звуки. Точность симуляции тоже настраивается, при её снижении звук становится неестественным, мягким и негармоничным; точность можно задать постоянной для всех нот либо пропорциональной длине струны, чтобы разгрузить процессор на слабых компьютерах.
Отдельно отмечена проблема на Mac с процессорами Apple Silicon (серия M): если DAW собран под Intel, плагин вынужден работать через слой трансляции Rosetta 2, что заметно снижает производительность. Автор рекомендует использовать нативную под Apple Silicon (или универсальную) сборку DAW.
В разделе «About» Бейкер рассказывает предысторию: Different Instruments, его редкий побочный проект, продолжающий работу над gostringsynth, выпущенным в 2022 году. Ещё раньше, в 2009 году, он защитил магистратуру в Эдинбургском университете под руководством Стефана Бильбао, где исследовал конечно-разностные модели для музыкальных приложений; PartialString, попытка вернуться к той теме теперь, когда персональные компьютеры стали достаточно мощными для таких расчётов в реальном времени. Плагин доступен в форматах VST и Audio Units, версия 1.0.3, распространяется бесплатно или по модели «заплати сколько хочешь».
Ключевые факты
- PartialString численно решает одномерное волновое уравнение методом FDTD, моделируя физику щипковой струны, а не использует сэмплы или классический синтез
- До 10 голосов полифонии, но реальное число динамически ограничивается под мощность компьютера и длину симулируемых струн; в нижнем регистре возможен переход в монофонию
- Настраиваются позиция и форма возбуждения струны (velocity-sensitive), LFO для позиции звукоснимателя вплоть до аудиочастот, время затухания и демпферы как у фортепиано
- На Mac с Apple Silicon запуск в Intel-сборке DAW заставляет плагин работать через Rosetta 2 и заметно теряет производительность
- Автор, инженер-биомедик Кристиан Бейкер, продолжающий тему своей магистерской работы 2009 года в Эдинбурге (руководитель, Стефан Бильбао) и проекта gostringsynth (2022); PartialString v1.0.3 в форматах VST/Audio Units распространяется бесплатно или по схеме pay-what-you-want
Почему это важно
PartialString, не про ИИ, а про честное инженерное ремесло в звуковом синтезе: вместо сэмплов или упрощённых моделей колебаний плагин в реальном времени решает физическое уравнение струны методом конечных разностей. Это нишевая история одного разработчика, без претензии на массовое или индустриальное влияние, но интересная как пример доведённого до продукта академического исследования почти двадцатилетней давности.
Кому это важно
Звукорежиссёрам, саунд-дизайнерам и музыкантам, работающим с физическим моделированием звука; разработчикам аудио-плагинов, которым интересна реализация FDTD-синтеза в реальном времени на потребительском железе.
Как это применить
Плагин PartialString версии 1.0.3 в форматах VST и Audio Units можно скачать с сайта Different Instruments; распространяется бесплатно или по модели «заплати сколько хочешь». Пользователю доступны настройки позиции и формы возбуждения струны, LFO звукоснимателя, времени затухания и демпферов, а также ограничение или транспонирование слишком низких нот для контроля нагрузки на процессор; на Apple Silicon Mac важно использовать нативную сборку DAW, чтобы не терять производительность через Rosetta 2.
Можно ли доверять
Это авторский релиз независимого разработчика, а не публикация СМИ или крупной компании, поэтому независимой проверки заявлений нет. При этом источник, не анонимный маркетинг: указаны имя автора, его академический бэкграунд (магистратура в Эдинбургском университете под руководством известного специалиста по физическому моделированию звука Стефана Бильбао), предыдущий проект gostringsynth и техническое описание метода, что делает историю правдоподобной.
Риски и подводные камни
Точная симуляция низких нот (длинных струн) вычислительно тяжела, на слабых компьютерах это ограничивает число одновременно звучащих голосов или переводит нижний регистр в монофонию. Снижение точности расчёта ради экономии ресурсов делает звук неестественным, мягким и негармоничным. На Mac с Apple Silicon запуск через Intel-сборку DAW заметно снижает производительность из-за трансляции Rosetta 2.
«Different Instruments, сольный побочный проект, над которым я (очень изредка) работаю с момента выпуска gostringsynth в 2022 году.»
— Кристиан Бейкер, автор PartialString