Я создаю эмуляцию синтезатора Roland Juno-106 с помощью WebAudio. Живая версия WIP здесь.
Я повесил трубку о том, как бороться с обновлением фильтра, если частота отсечки или размер модуляции огибающей изменяется во время атаки или выпуска, когда фильтр одновременно модулируется огибающей. Этот код находится здесь. Текущая реализация не отвечает, как аналоговый синтезатор, но я не могу понять, как его вычислить.
В реальном синтезе фильтр изменяется немедленно, как определено обрезанием частоты, количеством модуляции огибающей и текущей ступени в огибающей, но рампа вверх или вниз также продолжается плавно.
Как бы я смоделировал это поведение?