Audio buses

Введение

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

Аудиосистема Godot позволяет создавать любое количество аудио шин и добавлять к каждой шине любое количество эффектов. Только мощность устройства на котором запущена ваша игра, может ограничить используемое количество шин и эффектов до того, как производительность начнет падать.

Decibel scale

Звуковой интерфейс Godot сделан специально для профессионалов звукового дизайна. С этой целью он использует шкалу децибел.

Для тех, кто не знаком с ней, это можно объяснить следующими фактами:

  • Шкала децибел (дБ) — это относительная шкала. Она представляет собой отношение мощностей звука с применением десятичного логарифма умноженного на 20 (20 × log10(P/P0)).

  • На каждые 6 дБ амплитуда звука удваивается или уменьшается вдвое. На 12 дБ изменяется в 4 раза, на 18 дБ - изменяется в 8 раз, 20 дБ - изменяется в 10 раз, 40 дБ - изменяется в 100 раз и т.д.

  • Так как шкала логарифмическая, то полное уменьшение громкости (без звука) не может быть осуществлено.

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

  • Чтобы избежать клиппинга, ваш звуковой микс должен быть настроен таким образом, чтобы выход мастер шины (подробнее об этом позже) никогда не превышал 0 дБ.

  • Каждые 6 дБ ниже предела 0 дБ звуковая энергия * уменьшается вдвое *. Это означает, что громкость звука при -6 дБ вдвое меньше, чем при 0 дБ. -12 дБ вдвое ниже, чем -6 дБ и так далее.

  • При работе с децибелами считается, что звук не слышен в диапазоне от -60 до -80 дБ. Таким образом ваш рабочий диапазон в целом находится между -60 дБ и 0 дБ.

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

Audio buses

Аудиошины можно найти на нижней панели редактора Godot:

../../_images/audio_buses1.png

An audio bus (also called an audio channel) can be considered a place that audio is channeled through on the way to playback through a device's speakers. Audio data can be modified and re-routed by an audio bus. An audio bus has a VU meter (the bars that light up when sound is played) which indicates the amplitude of the signal passing through.

Шина распложеная слева - это * мастер шина *. Эта шина выводит микс на ваши динамики, поэтому, как упоминалось выше в разделе * Шкала децибел *, убедитесь, что уровень вашего микса не достигает 0 дБ на этой шине. Остальные аудиошины могут иметь гибкую маршрутизацию. После обработки звука они посылают его на заданную шину. Шину назначения можно указать для любой аудиошины, кроме мастер. При маршрутизации звук всегда передается от шин справа к шинам слева. Это позволяет избежать бесконечных петель маршрутизации.

../../_images/audio_buses2.png

На изображении выше выход * Bus 2 * направлен на шину * Master *.

Воспроизведение аудио через шину

Для проверки проигрывания аудио на шине, создайте узел AudioStreamPlayer, загрузите аудиоданные и выберите целевую шину для воспроизведения:

../../_images/audio_buses3.png

Затем, переключите свойство Playing в значение On и звук будет воспроизведён.

См.также

Вам также может быть интересно прочитать Аудио потоки.

Adding effects

Аудиошины могут содержать всевозможные эффекты. Эти эффекты обрабатывают звук и применяются по порядку.

../../_images/audio_buses4.png

Попробуйте их все, чтобы понять, как они изменяют звук. Далее следует краткое описание доступных эффектов:

Усилитель

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

BandLimit и BandPass

Это резонансные фильтры, которые блокируют частоты вокруг точки Cutoff. BandPass можно использовать для имитации звука, проходящего через старый телефон или мегафон. Модулируя частоту BandPass можно имитировать звук гитарной педали wah-wah, как в Voodoo Child (Slight Return) Джими Хендрикса.

Хор

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

Компрессор

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

Компрессор имеет множество применений. Например:

  • Его можно использовать на главной шине для сжатия всего микса.

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

  • Он может быть использован как * sidechained *. Это означает, что он может снизить уровень одного сигнала, используя уровень другой звуковой шины как порог. Этот метод очень распространен в видеоиграх, для приглушения уровня музыки или звуковых эффектов, когда необходимо выделить другие звуки.

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

Примечание

Если ваша цель - предотвратить превышение сигналом заданной амплитуды, а не уменьшить динамический диапазон сигнала, то, вероятно, лучше использовать: ref: limiter <doc_audio_buses_limiter>, чем компрессор.

Задержка

Добавление эффекта «echo» с петлей обратной связи можно использовать вместе с * Reverb * для имитации широких комнат, каньонов и т. п., где отражения звука далеки друг от друга.

Искажение

Для искажения звука Godot предлагает несколько типов искажений: * overdrive *, * tan * и * bit crushing *. Ихможно использовать для имитации звука, проходящего через некачественный динамик или устройство.

Эквалайзер

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

EQ6, EQ10, EQ21

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

Фильтр

Фильтр - это контейнер для остальных фильтров, и его не следует использовать напрямую.

HighPassFilter

Обрезает частоты ниже определенной * Cutoff * частоты. HighPassFilter используется для уменьшения басов в сигнале.

HighShelfFilter

Подавляет все частоты выше определенной * Cutoff * частоты.

Ограничитель

Limiter похож на compressor, но он менее гибкий и предназначен для предотвращения превышения амплитуды сигнала над заданным пороговым значением в дБ. Добавление ограничителя в шину Master является защитой от искажений.

LowPassFilter

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

LowShelfFilter

Уменьшение всех частоты ниже определенной * Cutoff * частоты.

Режекторный фильтр

В отличие от BandPassFilter, он удаляет полосу звука из частотного спектра на заданной частоте * Cutoff *.

Панель

Panner позволяет регулировать стереобаланс сигнала между левым и правым каналами (наденьте наушники, чтобы прослушать этот эффект).

Фэйзер

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

PitchShift

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

Record

Эффект «Record» позволяет записывать звук, проходящий через шину, в файл.

Реверберация

Reverb имитирует комнаты разных размеров. Он имеет настраиваемые параметры, которые можно настроить для имитации звука в конкретной комнате. Реверберация обычно применяется в : ref: Areas <class_Area> (см.: Ref: Reverb bus <doc_audio_streams_reverb_buses>) или для придания ощущения «камерности» всем звукам.

SpectrumAnalyzer

Этот эффект не изменяет звук, вместо этого вы добавляете его к шинам, если требуется анализ спектра. Обычно он используется для аудиовизуализации. Демо-проект, использующий его, можно найти здесь <https://github.com/godotengine/godot-demo-projects/tree/master/audio/spectrum> __.

StereoEnhance

Этот эффект использует несколько алгоритмов для улучшения стереофонического спектра сигнала.

Автоматическое отключение шин

Нет необходимости отключать шины вручную, когда они не нужны. Godot определяет, что на шине нет сигнала в течение нескольких секунд, и отключает её (включая все эффекты).

../../_images/audio_buses5.png

Отключенные шины имеют синюю шкалу уровня сигнала вместо красно-зеленой.

Перестановка шин

Stream Player использует имена шин для идентификации, что позволяет добавлять, удалять и перемещать шины, сохраняя ссылку на них. Однако, если шина будет переименована, ссылка будет потеряна, и Stream Player будет выводить звук на Master. Эта система была выбрана потому, что перестановка шин - более распространенный процесс, чем их переименование.

Компоновка шин

Компоновка шины по умолчанию автоматически сохраняется в файле res: // default_bus_layout.tres. Пользовательские схемы шин могут быть сохранены и загружены с диска.