Многие функции, к сожалению, зависят от версии браузера, например изменение громкости на лету (следовательно тремоло и ADSR) не работает в Firefox, createStereoPanner относительно нов и не везде поддерживается и т. д., поэтому было бы хорошо такие комментарии сопровождать указанием версии браузера.
Я, возможно, какую-то особенность упустил, типа буферизации. В железе на ПЛИС, я модулирую частоту NCO (на базе DDS) просто меняя значение приращения аккумулятора фазы. В этом случае и фаза не рвется. Но проблема с фазой все равно может возникнуть — при изменении громкости в VCA. Коэффициент усиления желательно менять при прохождении через ноль, иначе появляется щелчок. habrahabr.ru/post/260273
Создание синтезатора на JavaScript