Недавно на сайте Audiokinetic (создатели аудиодвижка Wwise) вышла моя статья о синтезе динамического дождя в Wwise. Я предлагаю прочитать ее перевод.


Процедурно генерируемый дождь

Недавно на сайте Audiokinetic (создатели аудиодвижка Wwise) вышла моя статья о синтезе динамического дождя в Wwise. Я предлагаю прочитать ее перевод.

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

После удачного эксперимента с природой (пример в заключении этой статьи), мне пришла идея создать динамическую погоду, которая бы могла меняться в зависимости от параметров игры. Здесь я решил пойти тем же способом - сначала анализ, а затем реализация.

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

Исследования

Просто анализируя записи дождя, мне было довольно сложно понять, как такой звук можно синтезировать, поэтому я решил поискать исследования по синтезу звука воды. Я нашел исследования под названием "Toward Animating Water with Complex Acoustic Bubbles”. 

Основные выводы, которые я сделал:

  1. Звук жидкостей происходит от звука множества пузырей (капли воды);

  2. Звук капли - это модулированная по питчу синусоида, длительностью около 10-20мс с мягкой атакой;

  3. Частота синусоиды выше, чем выше к поверхности воды, где образуется звук;

  4. Чем более правильной шарообразной формы образуется пузырь (капля), тем меньше модуляция питча синусоиды.

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

Основываясь на этих мыслях я создал первую модель дождя в секвенсоре Ableton Live, на синтезаторах Serum.

Я решил звук дождя поделить на несколько составляющих: 

  1. Легкие высокочастотные бурления;

  2. Среднечастотное бурление;

  3. Стереошум;

  4. Звук отдельных капель дождя

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

Реализация в Wwise

Следующим шагом нужно было перенести каждый слой в синтезаторы Wwise.

1. Boiling

В синтезаторе Wwise Synth One в генераторе шума я выбрал White Noise. Затем с помощью Random Modulator я промодулировал громкость. В результате такой модуляции звук приобритает гранулярность.

Далее, я добавляю параметрический эквалайзер, который состоит из 2х band-pass фильтров:

  • первый фильтр формирует основной тембр звука

  • второй добавляет случайные пики в средних частотах (имитирует звук пузырей).

Для формирования случайной частоты второго фильтра я добавил Random Modulation на парметр частоты среза фильтра.

Затем я добавляю еще один эквалайзер для того, чтобы доработать звук: High Pass и Low Pass фильтры.

В заключение я добавил еще плагин - Wwise Harmoniser. Он добавляет едва заметную тональную составляющую. Это необязательный шаг, но мне понравилось как он окрашивает тембр.

2. Low boiling

Этот слой создан на основе Pink Noise в Wwise Synth One. Для создания звука бурления капель дождя используется Parametric EQ со случайной частотой среза второго фильтра.

Параметр Frequency так же, как и в Boiling модулируется Random modulator с частотой больше 100Hz.

В Wwise я хотел создать систему динамического дождя, который меняется под воздействием одного параметра Rain_intensity. Этот параметр изменяет множество параметров контейнеров. В слое Low Boiling эта RTPC изменяет и громкость контейнера и параметры фильтров.

3. Stereo Noise

Этот слой создает иллюзию реального дождя. Для того, чтобы создать широкое стерео, я сделал два отдельных синтезатора Synth One с шумом. Оба контейнера (левый и правый) обрабатываются на Blend-е эквалайзером.
В зависимости от интенсивности дождя (Rain_intensity) в игре, этот слой не только становится громче или тише, но и меняет параметр частоты среза фильтра:

4. Звук отдельных капель дождя

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

Основа сделана на том же синтезаторе Synth One. Используется только один осциллятор с синусоидальной волной.

Громкость модулируется простой ADSR модуляцией, с похожими параметрами, как я делал в прототипе и на прототип в Serum параметрами:

Для того чтобы простой тон, менял свою высоту, параметр Transpose модулируется Envelope-модуляцией.

Следующий шаг - сделать рандомизацию параметров питча, громкости и частоты появления звука капель. Для этого прекрасно подойдет Random Container с рандомизированными параметрами Pitch, Volume и Trigger Rate.

И еще, чтобы добавить ощущения, что капли звучат с разных сторон, я сделал 3D Position со случайными значениями панорамы (Left/Right).

Выводы

Система процедурно генерируемого дождя может быть частью большей большей системы динамически сменяющейся погоды. Для этого нужно воссоздавать другие звуки природы.

Например, вот один из моих экспериментов, где я занимался воссозданием звуков природы для игры World of Tanks. В видео ниже вы услышите звуки природы , которые созданы только на синтезаторах Serum. Следующий шаг перенести все звуки из Serum в Wwise.

Большое спасибо за то, что прочитали эту статью. Надеюсь, такой подход будет полезен в ваших проектах. В следующий раз я расскажу о том, как мы используем Wwise для построение звуковых систем в игре World of Tanks.