В сегодняшней статье я хотел бы взглянуть на волнообразование. Для тех, кто не знаком, свертывание волны - интересный тип искажения, который можно найти в нескольких известных схемах аналоговых синтезаторов. Общая идея волнообразных искажений заключается в том, что по мере того, как сигнал становится больше, он в конечном итоге отражает сам себя. Кажется, в том, что я нашел в Интернете, есть много загадок о волнообразовании, поэтому я надеюсь прояснить здесь некоторые вещи, разбив некоторые типичные цифровые техники волнообразования, а затем представив пару моих собственных модификаций на стандартные методики.
Обратите внимание, что я не буду касаться аналоговых схем преобразования сигналов в этом посте, для получения дополнительной информации по этому вопросу я рекомендую этот блог Кейта МакМиллена, а также эту статью DAFx от 2017 года, в которой содержится проницательное обсуждение схема волновода Buchla 259.
Как обычно, эта статья также доступна в виде Jupyter Notebook для программистов.
Стандартное цифровое преобразование волны
Типичный метод реализации цифрового волнового эффекта заключается в модуляции входного сигнала другой волной, часто треугольной или синусоидальной. Это означает, что статические кривые, на которые мы привыкли смотреть для нелинейных эффектов, будут простыми треугольниками или синусоидами.


Когда мы применяем этот простой метод свертывания волны к входной синусоиде, мы возвращаем ожидаемое поведение «свертывания».

Модифицированное волновое сложение 1: Насыщенность
Первая модификация, которую мы внесем в традиционный цифровой волнораскладчик, заключается в суммировании выходных данных нелинейности насыщения и нелинейности волнообразования. Хотя я не сравнивал их на математическом уровне, в ходе собственных (весьма субъективных) прослушиваний я обнаружил, что эта архитектура звучит немного больше похоже на типичный аналоговый волнораскладчик, особенно при большом количестве фолдов.

На приведенной выше диаграмме показан поток сигналов для волнообразных волн насыщения, где блок «WF» обозначает нелинейность волнообразования. Для усиления «G» я обычно использую где-то между -0,5 и -0,1. Ниже мы показываем статическую кривую и синусоидальную характеристику для насыщающего волнообразователя с гиперболическим тангенциальным насыщателем, синусоидальным волнообразователем и G=-0,2.


Хотя измененная структура может показаться незначительно отличающейся от исходной папки волны, посмотрите, как изменяется ответ при больших входных данных:

Модифицированная волновая папка 2: обратная связь
Далее, давайте изменим нашу насыщающую волну, добавив нелинейный путь обратной связи.

Эта модификация добавит нашей нелинейности интересную текстуру. В частности, это добавит немного движения, почти как резонанс, который отражает поведение вейвфолдера. Это немного сложно описать, но звуковой пример будет позже.
Ниже мы показываем динамическую характеристику волновой папки с насыщающей обратной связью, в которой как нелинейности прямой связи, так и нелинейности обратной связи являются функциями tanh, волновая структура представляет собой синусоидальную волновую функцию, а G = -0,5.

Сглаживание
Wavefolders печально известны тем, что имеют довольно корявый гармонический отклик, который может привести к серьезным искажениям наложения спектров, если с ними не обращаться должным образом. Во-первых, давайте посмотрим на гармонический отклик для традиционного цифрового волновода, как для синусоидальной, так и для треугольной волн.


Итак, во-первых, обратите внимание на форму гармонических структур для обеих волновых папок: в обоих случаях 5-я гармоника является наиболее заметной, даже больше, чем основная. Мы также видим, что треугольная форма имеет почти неограниченный гармонический отклик, что может привести к множеству искажений. Хотя мне лично не очень нравится треугольная волновая папка, если вы хотите ее использовать, я рекомендую использовать метод под названием BLAMP (я серьезно, именно так он и называется) для закругления углов треугольной функции. Вы можете прочитать больше здесь".
Далее давайте взглянем на гармонический отклик для насыщающей волны, снова с синусоидальной волной, tanh насыщением и G=-0,2.

Здесь не так много интересного, гармонический отклик почти неотличим от стандартной нелинейности tanh. Наконец, давайте рассмотрим волновую матрицу с насыщением обратной связи, снова с нелинейностями прямой и обратной связи в виде функций tanh, волновую матрицу как синусоидальную волновую функцию и G = -0,5.

Здесь мы видим гораздо более богатую гармоническую характеристику с плавно затухающими гармониками, идущими вверх по спектру. Наложение может быть проблемой здесь, но, к счастью, наш путь обратной связи вводит небольшой интегрирующий эффект, который нейтрализует некоторые из высокочастотных гармоник. Я обнаружил, что 4-кратная передискретизация сглаживает большинство артефактов алиасинга в этой системе, но я обычно использую 8-кратную просто на всякий случай.
Примеры
Как обычно, я реализовал вышеперечисленные процессоры волнообразования вместе с переменным усилением прямой и обратной связи в виде аудио-плагина (VST, AU). Не стесняйтесь проверить исходный код на GitHub и проверить демо-видео на YouTube:
Ну наконец
Как всегда, спасибо, что нашли время, чтобы проверить еще один эпизод сложной нелинейной обработки аудиосигнала. Я надеюсь, что вы вдохновились на то, чтобы попробовать наши собственные волнообразные искажения, возможно, поэкспериментировав и улучшив некоторые из архитектур, которые мы здесь обсуждали.
В следующий раз я, возможно, рассмотрю некоторые нелинейные эффекты реверберации, но я держу свои варианты открытыми…