Миксуем биточки в Unity 5.0

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

Чтобы этого добиться, мы сделали шаг назад и перелопатили с нуля кучу всего того, что лежит за пределами настроек и управления ассетами и звуковыми файлами. Нам пришлось сделать свой выбор по части кодеков и при этом убедиться, что вам, чуваки, станет в масть юзать кучу качественных звуков в вашей гаме без запарок с системными ресурсами. Я попытаюсь более детально побазарить об этом в следующем посте, ну а ща давайте побалакаем о самой крутанской штуке в плане звука, которая появится в Unity 5.0 – аудиомикшер (AudioMixer).

наша первая ходочка

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

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

с фига ли микшер?

У уважаемых людей возникнет вопрос – с фига ли выбрали микшер в качестве первой наикрутейшей фичи в версии 5.0? Ну тут все просто – раньше-то у нас все было по-лоховски, не было возможности чотко миксовать звуки по категориям в Юнити этом нашем. Звуки можно было проигрывать в AudioSource, а эффекты можно было накидывать в виде компонентов, и послушать звуки с этими эффектами можно было только накидав их в игру и слушать их всех разом, применив эффект на слушалку (AudioListener)..

Мы порешали скинуть эту работу на AudioMixer, и пока мутили все это дело, смогли продвинуть микшер на более высокий уровень, еще больше замутить всяких фич, потипу как в DAW, чтоб красиво работать вообщем.

категории звуков

CategoryExamples_edited

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

Это очень мазово и важно! Важно иметь возможность задавать настроение  и усиливать погружение в игру с помощью аудиомикса. Хороший микс и музыка могут заставить игрока испытать полный спектр эмоций, создать атмосферу и бла-бла-бла, бла-бла-бла, трул-ла-ла.

микширование в unity

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

MixerWindow_edited

Каждый AudioMixer может содержать определенную иерархию категорий, которые называются АудиоГруппами (AudioGroups). Можно обозревать сие в виде схемы, или в виде, более традиционном для музыкальной или видеоиндустрии – как стандартная микшерная консоль.

dsp

SingleStripКонечно AudioMixer эт не только создание и настройка иерархии. Если пишешь музычку/дизайнишь, знаешь, что в микшере обычно можно и эффектиков понавешивать – их есть и у нас. Эффекты (DSP) последовательно вешаются в инсерты микшера, все как обычно.

Вот такие киски! Теперь можно не только конструировать всякие схемы роутинга и иерархии микширования, но и нахлобучивать любые DSP из доступных в любом месте цепочки аудиосигнала, улучшая звуковую картину и делая ее более достоверной или наоборот. Можно обрабатывать эффектом и только небольшую часть сигнала, ну т.е. через посылы – об этом далее.

Но, что если есть желание заюзать не только DSP, встроенные в Unity? Ранее это поддерживалось эксклюзивно через скрипт OnAudioFilterRead, который позволял обрабатывать аудиосемплы напрямую через твои скрипты.

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

ConvolutionReverb

Unity теперь будет поддерживать кастомные DSP-плагины, т.е. юзеры смогут креативить собственные плаги и юзать их – они же юзеры. Или даже продавать их на нашей барахолке (Asset Store). Короче перед нами новый светлый дивный мир с неограниченными возможностями. Хочешь накодь свой собственный синтезатор и совмести его с какой-нить внешней тулзой типа Pure Data, или еще чего. Можно поддержку сайдчейна (sidechain) реализовать и пользовать где угодно в миксе в каких надо ситуациях. Мощща!

Что еще круто, что можно применять настройки в стеке эффектов аудиогруппы в любом месте стека. Можно даже нефигово так повысить громкость – мы теперь позволяем поднимать до +20 дБ. В инспекторе (Inspector) теперь даже появилась визуальная шкала-индикатор громкости, позволяющая наблюдать, как изменяется сигнал при настройке.

AtenuationMetering

В свовокупности с нелинейными DSP, посылами/возвратами и нашим новым Ducking insert (ниже объясню чой-та за зверь), это получается мегаофигительный пульт управления полетами всех ваших звуков по миксу даже с бодуна.

смены настроения

Помните, выше я вел базар о контроле за настроением игрока и бла-бла-бла?Это можно замутить путем запуска и остановки определенных кусков музыки, эмбиента или звуков в нужное время игрового процесса, в зависимости от условий или того, что происходит в гаме. Другой вариант – это рулить настройками микшера, плавно переключая их когда надо тудой-судой. Типа там чето потише, чето погромче, бац – эффект какой возник, бац – другой, и т.п.

Короче все AudioMixer’ы имеют возможность сохранять так называемые снапшоты (snapshots). В них записываются все текущие параметры и установки звуков данного микшера. Все ваще, от величины посыла на эффект до настроек питча может меняться когда надо между определенными тобой значениями. Вот так-то, мистер.

Snapshots

Приколись и представь, что ты тусишь такой в чистом поле, топаешь, топаешь, и вдруг за углом залазишь в пещеру – вот тут хоба – и в микшере убавилась громкость всяких там птичек с ветерком, и прибавилась громкость подземного дрона и капель со сталактитов, музычка сменилась с death-speedcore в дарк эмбиент, и реверберация стала намного сильно более гулкой от твоих шагов. И все это можно намутить без единой строки в коде.

разделение сигнала

Но особенно мощь снапшотов очевидна в комбинации с посылами (Sends), возвратами (Receives) и дакингом (Ducking).

посылы

SendDialog

Помимо традиционного назначения DSP-эффектов в инсерты – т.е. когда сигнал заходит в эффект, и выходит оттуда целиком им обработанный, ты можешь “послать” сигнал куда угодно в микшере, даже в задницу – если обзовешь так один из каналов. Посыл разветвляет твой сигнал на 2 части – одна идет далее как есть, вторая – обрабатывается сторонним эффектом, а ты можешь регулировать величину ее значимости, тупо громкость.

Становится все интереснее и интереснее! (ведь ты же об этом никогда и не знал, да, юный звукозавр?) Ну и понятное дело все эти настройки посылов в снапшотах тоже сохраняются и учитываются.

Но что же случается далее с этим вторым, ответвленным и посланным куда подальше сигналом? В данный момент в Unity у него есть два пути из сложившейся ситуации – возврат (Receive) и дакинг (Volume Ducking).

возвраты

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

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

дакинг громкости

Посылы могут также быть использованы в качестве управляющих сигналом для системы дакинга. Как и возвраты, дакинги могут быть расположены где угодно в миксе наряду с твоими DSP-эффектами.

DuckVolumeEffect

Когда посыл нацелен на эффект дакинга (Volume Ducking insert), он работает в точности как управляющий сигнал для сайдчейн-компрессора, т.е. занижается громкость звуков, на которых стоит дакинг, при проигрывании звука, с которого на дакинг идет посыл.

Как это выглядит для обывателя? Приколись и опять представь, что ты фигачишь очередной шутан на вечерок, и у тебя там прям вот бойня, пальба, взрывы, выстрелы – очень громко все. А в этот момент ты подбежал к неписю, который сообщает тебе некие важные дальнейшие целеуказания. А вокруг, напоминаю, ад сотоны, бабахи и стрельба, все очень громко. Как игроку расслышать слова непися? Делать его диалоги громче взрывов? Делать взрывы потише? По-лоховски. Игра ведь вещь интерактивная. Сейчас ты подбежал во время бабахов, а мог ведь подбежать, пока все противники срочно ушли с фронта на обед – и тут непись начнет жосско орать тебе на ухо в полной тишине? А вот с помощью дакинга, все эти взрывы-шмивы тупо временно станут потише, на тот момент, пока непись толкает свою телегу. Т.е. звук его болтовни через посыл и управляет дакингом, который приглушает все звуки под ним, все эти бабахи.

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

И самое офигенное, что ты можешь все это намутить чиста в редакторе, без единой строки кода!

на посошок

Хотя я ток чуть копнул на поверхности возможностей AudioMixer’а, выражаю надежду, что заинтересовал сим немало господ, пробудив в них желание поюзать Unity 5.0.

В Unity версии 5.0 и версиях последующих мы реально хотим ни много ни мало – сбацать будущее звука в видеоиграх, обеспечивая вас мощными тулзами для воплощения сего в жизнь. Вот такая предъява!

Всем приветы и камшоты!

Команда звукокодеров Unity

Бонусный видос: Миксуем биточки в Unity!

Это – вольный перевод статьи. Оригинал находится здесь.

  • Nikolay Abrazumov

    “юзеры смогут креативить собственные плаги и юзать их – они же юзеры. Или даже продавать их на нашей барахолке (Asset Store). Короче перед нами новый светлый дивный мир с неограниченными возможностями.”

    Ахаха! Ой спасибо!