Моделирование аналогового псевдослучайного сигнала LFO (фильтрация нижних частот в Javascript)

Я пишу программу Javascript для программного создания MIDI-сигналов для процедурно сгенерированной музыки, которая использует внешние входы для изменения / манипулирования звуком в ответ на изменения в окружающей среде.

Одна из вещей, которые я пытаюсь сделать, это выяснить, как запрограммировать аналоговый псевдослучайный сигнал низкочастотного осциллятора (LFO), как пунктирная линия на изображении ниже:

введите описание изображения здесь

Этот сигнал будет управлять MIDI-эффектами, такими как изменение высоты тона или модуляция.

Функция должна принимать одно значение ввода, которое контролирует, насколько сильно колеблется сигнал. Когда вход равен 0, результирующий сигнал должен быть 0 или плоской линией. И по мере увеличения входного значения сигнал должен становиться пропорционально все более и более неустойчивым.

Я чувствую, что у меня есть идея о том, как сгенерировать пошаговую функцию (например, сплошную линию на изображении выше), которая достигает этих целей, но я понятия не имею, как ее "сгладить" (т.е. отфильтровать ее по нижним частотам), чтобы получить непрерывная кривая, как пунктирная линия. В конечном итоге эта сглаженная / непрерывная / аналоговая функция будет дискретизироваться, скажем, каждые 100 мс и транслироваться как новая инструкция изменения высоты звука MIDI и т. Д.

1 ответ

Решение

Я бы просто использовал существующую библиотеку анимации, такую ​​как TweenJS. https://www.createjs.com/docs/tweenjs/modules/TweenJS.html Эти библиотеки обычно предназначены для визуального использования, но также могут использоваться и в общем.

Не проверено, но попробуйте что-то вроде этого:

const cc = {
  modwheel: 0
};
createjs.Tween.get(cc).to({modwheel: 127}, 1000);

Тогда просто соблюдайте cc.modhweel свойство каждые 100 мс или любой "кадр", который вы хотите.

Смотрите также: /questions/23057785/nelinejnaya-animatsiya-chislovogo-znacheniya-s-pomoschyu-javascriptjquery/23057794#23057794

Другие вопросы по тегам