» » Программирование&Музыка: Delay, Distortion и модуляция параметров. Часть 4

 

Программирование&Музыка: Delay, Distortion и модуляция параметров. Часть 4

Автор: admin от 22-10-2016, 13:05, посмотрело: 374

Всем привет! Вы читаете четвертую часть статьи про создание VST-синтезатора на С#. В прошлых частях мы генерировали сигнал, применяли к нему амплитудную огибающую и фильтр частот.


В этот раз мы рассмотрим эффекты Distortion — искажение сигнала, знакомое любому электрогитаристу и Delay (оно же эхо).


Множество различных интересных звучаний можно получить, если менять (модулировать) значения параметров составляющих частей синтезатора (генератора, фильтра, эффектов) во времени. Рассмотрим вариант, как это можно сделать.


Исходный код написанного мною синтезатора доступен на GitHub'е.


Программирование&Музыка: Delay, Distortion и модуляция параметров. Часть 4

Скриншот VST плагина GClip



Цикл статей



  • Понимаем и пишем VSTi синтезатор на C# WPF

  • ADSR-огибающая сигнала

  • Частотный фильтр Баттервота

  • Delay, Distortion и модуляция параметров


  • Оглавление



  • Клиппинг, искажения, овердрайв и дисторшн

  • Кодим эффект дисторшн

  • Дилэй и реверберация

  • Кодим эффект дилэя

  • Модуляция параметров

  • Пишем класс LFO

  • Интерфейс IParameterModifier и использование актуального значения параметра

  • Заключение

  • Список литературы


  • овердрайвом. Линк на аудиопримеры знаменитых эффектов.


    Овердрайв отличается более плавным ограничением амплитуды, нежели у дисторшна. Овердрайв еще называют Soft Clipping, а дисторшн, соответственно, Hard Clipping. Овердрайв на гитарах применяют в более "спокойных" жанрах типа инди-рока, поп-рока и тому подобных.


    Программирование&Музыка: Delay, Distortion и модуляция параметров. Часть 4

    Примерное сравнение эффектов Distortion (Hard Clipping) и Overdrive (Soft Clipping)


    Клиппингом называют нежелательные артефакты (щелчки), при превышении цифровой амплитуды в 0 dB. Есть эффекты, реализующий "чистый" (не эмулируя какие-либо аналоговые педальки или преампы) дисторшн сигнала. Например, плагин GClip (в начале статьи как раз его скрин) просто математически обрезает входящий сигнал по амплитуде.


    первой статье). Класс Distortion будет наследовать класс SyntageAudioProcessorComponentWithParametersДилэй, оно же эхо — эффект повторения сигнала с задержкой. Обычно под дилеем понимают четкое повторение (многократные повторения) сигнала. Войдите в арку, переход — вы услышите, как короткий громкий звук будет отражен несколько раз, теряя громкость. Если же стоять в концертном зале, с гораздо сложной архитектурой и отражающими звук поверхностями, чем арка в доме — вы уже можете не услышать четких повторений, а плавно затухающий звук.


    Реверберация — это процесс постепенного уменьшения интенсивности звука при его многократных отражениях. Принятое время реверберации — время, за которое уровень звука уменьшается на 60 dB. В зависимости от устройства комнаты/зала время реверберации и звуковая картина могут очень сильно отличаться.


    Слушать всегда лучше, чем читать про звук. А можно и посмотреть.


    Следует упомянуть про реализацию эффекта реверберации посредством свертки (Convolution Reverb). Суть в том, что имея на руках специальный файл, "описывающий" нужное нам помещение (импульсный отклик), можно совершенно точно воспроизвести реверберацию от нужного звука в этом помещении.


    Для получения импульсных откликов (их называют просто импульсы/impulses, которых очень много в сети) нужно установить микрофон в нужном помещении, включить запись и воспроизвести звук — "импульс" — вернее, максимально приближенное к нему явление: например, какой-нибудь предельно резкий удар; записать эхо нашего импульса.


    Мы получили способ полностью воссоздать акустику помещения — по крайней мере в той степени, в какой нам это гарантирует неизменность звука при неизменности импульсной функции. Не все параметры процесса определяются импульсной функцией, но большинство важных для человека — всё же определяется.


    Схожим образом делают импульсные отклики гитарных кабинетов, для использования их в реампинге гитар на компьютере.


    звуке выстрела "лазерного пистолета" можно отчетливо слышать, как основная частота меняется с высокой на низкую.


    По идее, про все наши параметры (класс Parameter) знает хост, они существуют не только внутри нашей архитектуры. В хосте можно сделать автоматизацию параметра, чтобы менять их со временем.


    Программирование&Музыка: Delay, Distortion и модуляция параметров. Часть 4

    Автоматизация параметров в FL Studio 12. Сверху трек "Cerbera" — дорожка с нотами для синтезатора Sytrus, ниже треки с графиками изменения параметров (Vocodex, Flangus, Delay, Reverb) добавленных VST-эффектов на данном треке синтезатора


    Конечно, такая автоматизация очень удобна и очень часто используется при создании музыки. Но такая автоматизация будет работать только при проигрывании трека, ее сложно настраивать. Если мы хотим, чтобы какой-то параметр менялся при каждом нажатии ноты, или просто постоянно менялся по какому-либо закону? Логичнее сделать автоматизацию уже в самом плагине — будет больший простор для работы создания звука.


    Обычно в синтезаторах есть специальная часть/блок/модуль, отвечающий за модулирование параметров. Ее так и называют, блок модуляции или матрица модуляции. Модуляция параметров похожа на модулирование амплитуды ADSR-огибающей из 2-й статьи. Только теперь представьте, что вместо огибающей можно придумать вообще любой закон изменения параметра, и модулировать любой параметр в плагине (который подразумевает, что его можно модулировать).


    В качестве "закона" обычно берут огибающие и LFO (Low Frequency Oscillator — по сути, такой же осциллятор, но его семплы используются как множители для модуляции а не как звуковая волна). Во многих синтезаторах можно вручную нарисовать график изменения параметров, или собрать его из заранее заготовленный паттернов.


    Программирование&Музыка: Delay, Distortion и модуляция параметров. Часть 4

    Блок модуляции в синтезаторе Sylenth1. Есть две ADSR-огибающие, два LFO-генератора и модуляция на основе других источников (типа Velocity от нажатия ноты). Для каждого источника можно указать два модулируемых параметра и "степень модулирования" как промежуточный множитель (крутилка слева от имени параметра).


    Программирование&Музыка: Delay, Distortion и модуляция параметров. Часть 4

    Матрица модулирования в синтезаторе Serum. Каждая строка описывает пару "источник — модулируемый параметр" с дополнительными настройками (тип модуляции, множитель "количества", кривая и так далее).


    Программирование&Музыка: Delay, Distortion и модуляция параметров. Часть 4

    Огибающие и LFO в синтезаторе Massive. Можно вручную нарисовать кривую изменения, из отдельных паттернов/кусочков.


    musicdsp.org с большим архивом исходников различных штук синтеза и обработки звука, преимущественно на С++, дерзайте!


    Спасибо всем заинтересовавшимся! Уверен, мои статьи будут видны из гугла и помогут начинающим войти в мир программирования музыки и обработки сигналов. Спасибо за ваши комментарии, в особенности спасибо Refridgerator.


    Всем добра!
    Удачи в программировании!


    Аудиопримеры знаменитых эффектов
  • wikisound.org/Дисторшн

  • A Bit About Reverb

  • Исходники различных алгоритмов DSP

  • Советы по программированию синтезаторов


  • Источник: Хабрахабр

    Категория: Программирование

    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

    Добавление комментария

    Имя:*
    E-Mail:
    Комментарий:
    Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
    Введите два слова, показанных на изображении: *