Найти тему
Тихий Уголок

Настройка FMOD Микшера в Unity

Оглавление

перевод оригинальной статьи Алессандро Фама - FMOD Mixer in Unity

Всеми функциями микшера FMOD можно управлять через Unity. В этом руководстве мы будем изменять громкость шин, VCA, а также запускать снепшоты (snapshots) прямо из Unity с помощью кода.

Скачайте проект Unity & FMOD для этого руководства. Если после открытия проекта у вас возникнут какие-либо ошибки, удалите файл FMODStudioCache.asset, поскольку он содержит старый путь к проекту FMOD Studio.

Видео версия туториала (на английском языке):

***

Оглавление

  • Регулятор громкости FMOD Studio Bus в Unity
  • Объявление шины FMOD
  • Захват шины
  • Регулировка громкости шины
  • регулятор громкости FMOD Studio VCA в Unity
  • Запуск снепшотов (snapshots) FMOD в Unity

***

Регулятор громкости FMOD Studio Bus в Unity


Регуляцию громкости шины в Unity можно получить за три простых шага:

  1. Объявление шины
  2. Захват шины
  3. Регулировка громкости шины

Давайте подробнее рассмотрим эти шаги.

Объявление шины FMOD

Как и в случае с простыми экземплярами событий (далее истансов)(Instance), мы должны сначала объявить шину:

FMOD.Studio.Bus bus;

Захват шины

Теперь мы можем вызвать желаемую шину в методе Unity Start():

bus = FMODUnity.RuntimeManager.GetBus( "bus:/MusicBus" );

bus: / MusicBus - это строка, которая относится к группам, созданным на вкладке маршрутизации в FMOD Studio Mixer. Мы можем скопировать этот путь, щелкнув правой кнопкой мыши по группе и выбрав опцию Copy Path:

FMOD Studio Bus “Copy Path”
FMOD Studio Bus “Copy Path”

Регулировка громкости шины

В методе Update() теперь мы можем установить желаемую громкость для шины. Команда Bus.setVolume. setVolume принимает число с плавающей запятой в диапазоне от 0 (без звука) до 1 (полная громкость). Конечно, также можно работать со шкалой дБ. Поэтому мы объявляем переменных типа float:

[ SerializeField ] [Range( -80f , 10f )]
private float busVolume;
private float volume;

busVolume - это float переменная, которой мы можем управлять с помощью ползунка в инспекторе. Она должна представлять собой желаемое значение громкости в дБ. Также мы используем формулу для преобразования дБ в линейную шкалу с помощью переменной volume:

volume = Mathf.Pow( 10.0f , busVolume / 20f );

Полный скрипт работы с шиной выглядит так:

***

регулятор громкости FMOD Studio VCA в Unity

FMOD Studio дает нам возможность связывать шины с конкретными VCA каналами. Это полезно, например, когда мы хотим отдельно регулировать громкость музыки и звуковые эффекты. С точки зрения кода регулятор громкости VCA работает так же, как звуковые шины. Но на этот раз мы объявляем VCA канал:

FMOD.Studio.VCA vca;

Вместо GetBus() используем GetVCA():

vca = FMODUnity.RuntimeManager.GetVCA( "vca:/MusicVCA" ) ;

Затем мы снова используем метод setVolume(), чтобы изменить громкость VCA:

vca.setVolume(volume);

Полный скрипт для VCA выглядит так:

***

Запуск снепшотов (snapshots) FMOD в Unity

Снепшоты (snapshots) также ведут себя в основном как обычные события (далее ивенты) (events). Запуск снепшотов (snapshots) абсолютно похож на ручное воспроизведение 2D / 3D ивентов из кода.

Сначала мы объявляем инстанс снепшота
(snapshot):

FMOD.Studio.EventInstance snapshot;

Затем мы создаем инстанс и воспроизводим или останавливаем его в методе Unity Update():

void Update ( )
{
if (Input.GetKeyDown(KeyCode.Space))
{
snapshot = FMODUnity.RuntimeManager.CreateInstance( "snapshot:/FilterMusic" );
snapshot.start();
}
else if (Input.GetKeyDown(KeyCode.LeftControl))
{
snapshot.stop(FMOD.Studio.STOP_MODE.ALLOWFADEOUT);
snapshot.release();
}
}

Как видите, меняется только путь ивента. Вместо event: / теперь мы используем snapshot: /, чтобы указать правильный путь. Взгляните на прилагаемый проект, чтобы поэкспериментировать со снепшотами (snapshots).

#unity #unity3d #fmod #audioengine #gamedev #sounddesign #саунддизайн