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

Анализ и реализация в Wwise.

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

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

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

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

Работа системы динамического процедурно генерированного дождя

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

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

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

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

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

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

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

  • легкие высокочастотные бурления;
  • среднечастотное бурление;
  • стереошум;
  • звук отдельных капель дождя.

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

Прототип дождя на синтезаторах Serum

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

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

Boiling

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

Первый слой в Wwise

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

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

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

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

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

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

Low boiling

Звук среднечастотного бурления

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

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

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

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

Stereo Noise

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

Звук стерео шума в Wwise

В зависимости от интенсивности дождя (Rain_intensity) в игре, этот слой не только становится громче или тише, но и меняет параметр частоты среза фильтра:

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

Слой синтезированных капель дождя в Wwise

Точно так же, как и в прототипе на 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.

1212 показов
2.8K2.8K открытий
13 комментариев

Пластмассовый мир победил.

Ответить

А статья топ конечно, автор красава

Ответить

Спасибо, рад, что Вам понравилось

Ответить

А можно в двух словах объяснить, что такое Wwise, и какие могут быть практические примеры её применения? Гугл показал, что это какой-то аудиодвижок, но всё как-то очень запутанно.

Ответить

Это очень круто, теперь хочется научиться работать на этом 

Ответить

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

Ответить

Спасибо

Ответить