Постараюсь объяснить на пальцах.
Хоть интегратор и аналоговый, но сбрасывается из цифры.
Все цифровые ошибки в частоте сброса вылезают в виде частотной
модуляции.
Для получения нужной частоты есть несколько путей.
Первый вариант - делать ее кратной клоку, в этом случае ошибка
увеличивается с ростом частоты и на высоких нотах становится значительной,
но побочных компонентов в спектре не будет. Так сделано в Roland Juno.
Второй вариант - не кратной клоку (аккумулятор с переполнением). Тогда каждый период будет завершаться либо на такт раньше, либо
на такт позже, но в среднем частота будет иметь нужную точность
независимо от клока (точность будет определяться разрядностью
аккумулятора). Проблема в том, что последовательность округлений к
тому или иному такту будет не случайной, а повторяющейся, периодической, что вылезает в спектре в виде побочных негармонических составляющих.
Грубо говоря, частота постоянно скачет между соседними дискретными значениями так, чтобы в среднем дать нужную частоту. Но скачет
слишком предсказуемо (пилообразно), давая палки (spurs) в спектре.
Можно сделать так, чтобы эти скачки были непредсказуемыми,
промодулировав частоту шумом. Уровень шума поднимется,
но мусор в спектре заметно опустится.
Если значение аккумулятора использовать не напрямую, а как индекс
в таблице с волновой формой (и выводить уже значение из таблицы),
то получится типичный цифровой осциллятор. В немузыкальном
мире это зовется DDS (Direct Digital Synthesis).
Третий вариант - выводить при помощи DDS наружу синусоиду,
хорошо фильтровать, подавать на аналоговый компаратор, а фронт компаратора использовать для сброса интегратора. Вот тогда
получится спектрально чистая и точная пила :-)
До третьего варианта я не добрался (хотя и осознаю его преимущества),
и собираюсь остановится на втором.
В последней демке, кстати, звучал первый вариант. Мусор при высоких
нотах не из-за aliasing-а, а из за слишком высокой дискретности
частоты на ВЧ. Грубо говоря, вместо 4400 Гц мы можем вывести или
4000 и 4800 Гц (цифры с потолка), а скачки между этими значениями при работе LFO и слышны как "шум вертолета" :-)