Современные звуковые технологии в играх

уникальный обзор на основе материалов с «Конференции Разработчиков Игр 2003»


 

Данный материал основан на презентации, использованной при выступлении автора на «Конференции Разработчиков Игр», прошедшей в Москве в 2003 году.
Автор статьи, Алексей Меньшиков, профессиональный разработчик звуковых движков на основе 3D-звука в современных играх. Материал написан по заказу и при содействии сайта iXBT.com.

3D-звук vs. Surround Sound

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

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

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

Звук из стерео превратился в трёхмерный, потом появились  и многоканальные решения: 4-канальные, 5.1-звук, а в последнее время и 7.1.

Подробно остановимся на 3D-звуке, на его сходстве и отличии от многоканальных решений.

Само понятие «трехмерный звук» подразумевает, что источники звука располагаются в трехмерном пространстве вокруг слушателя. При этом каждый источник представляет собой в широком смысле любой объект в виртуальном игровом мире, способный производить звуки.

Вот типичный вид в 3D-шутере от третьего лица на примере игры Vivisector: Beast Inside (производитель Action Forms). Выделим основные элементы звуковой картины: Слушатель (Listener) и Источники звука (Sound Sources). Причем, некоторые из источников звука — обычные стерео, такие как фоновая музыка (в данной конкретной игре это main ambient: ветер или трек «звуки джунглей»), 8 источников создаются игровыми персонажами-монстрами, 1 источник создает непосредственно игрок — выстрел, звуки шагов и 3 случайных источника — для усиления эффекта пространства (ambient sounds) — в данном случае «джунгли»: звуки насекомых, птиц и т.п.

3D-звук нужен для более глубокого погружения пользователя в виртуальный мир игры, за счёт усиления реализма происходящего на игровой сцене. Для этого используются различные технологии, эмулирующие или гиперболизирующие поведение звука в реальном мире. Например, реверберации, отраженные звуки, окклюзии (звук, прошедший через препятствие), обструкции (звук не прошел через препятствие), дистанционное моделирование (вводится параметр удаленности источника звука от слушателя) и масса других эффектов.

Технологии ЗD-звука: позиционирование

Конечно же, восприятие звука строго индивидуально у каждого человека (оно зависит от формы уха, возраста и психологического настроя в конкретный момент). Таким образом, никогда не будет однозначного мнения о звучании той или иной звуковой карты или эффективности той или иной технологии 3D-звука. Воспроизведение же звука сильно зависит от звуковой карты и колонок, а также от конкретной реализации звукового движка в игре.

Рассмотрим, как же создается эффект 3D-звука. Начнем с простейшей технологии 2D-панорамирования. Эта технология применялась еще в DOOM от небезызвестных  ID Software — все просто: каждый моноисточник звука играется как стерео, а позиционирование создается за счет изменения громкости левого или правого каналов. В такой системе нет вертикального позиционирования, но возможна реализация эффектов, связанных, скажем, с небольшим изменением (фильтрацией высоких частот) звука, когда он находится сзади слушателя, так как в реальности мы слышим слегка заглушенный звук, если он находится за головой слушателя.

Теперь мы подошли к аппаратной реализации. На двух колонках или в наушниках звуковая карта эмулирует положение источника звука с помощью HRTF (Head Related Transfer Function). Фильтрация и другие преобразования эмулируют поведение слуховой системы человека.

HRTF (Head Related Transfer Function) — это передаточная функция, моделирующая восприятие человеком звука посредством двух ушей для определения местоположения источников в пространстве. Наши голова и туловище являются в некоторой степени препятствием, задерживающим и фильтрующим звук, поэтому ухо, скрытое от источника звука головой, воспринимает измененные звуковые сигналы, которые при "декодировании" мозгом интерпретируются соответствующим образом для правильного определения местоположения источника звука.

На слайде слева изображены три HRTF (позиция источника звука азимут 135 градусов и 36 градусов) трёх разных людей для левого и правого уха соответственно. Можно заметить определенные закономерности на всех трёх функциях. Откуда же они берутся? В большинстве своем они записываются с помощью специальных методик и специальных стереомикрофонов, которые вставляются в уши человека или специального манекена (KEMAR). Фирма Sensaura, например, использует синтетические HRTF, используя те самые закономерности, которые мы можем наблюдать на иллюстрации. Например, пик в районе 2500 Гц и спад около 5000 Гц для данной точки в пространстве. Другие фирмы используют усредненные HRTF.

По сути, вся система — это два FIR-фильтра (Finite Impulse Response), передаточная характеристика которых и есть HRTF. Так как HRTF дискретные, и хранить мегабайты HRTF для долей градуса накладно — реальное положение источника просчитывается интерполяцией HRTF.

Недостатки HRTF

1. Существенно искажают звук!

2. Могут медленно работать.

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

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

4. Лучшие результаты получаются при прослушивании в наушниках. Наушники, конечно, упрощают решение проблемы доставки одного звука к одному уху и другого звука к другому уху. Тем не менее, использование наушников имеет и недостатки:  многие люди просто не любят использовать наушники. Даже легкие беспроводные наушники могут быть обременительны.

При прослушивании в наушниках создается ощущение, что источник звука находится очень близко. Это также надо учитывать.

Использование акустических систем позволяет обойти большинство проблем при прослушивании в наушниках, но и порождает новые: на первый взгляд непонятно, как можно использовать колонки для воспроизведения бинаурального звука. То есть звука, предназначенного после HRTF преобразования для прослушивания в наушниках, когда часть сигнала предназначена только для одного уха, а другая часть для другого. Как только мы подключим вместо наушников колонки, наше правое ухо начнет слышать не только звук, предназначенный для него, но и часть звука, предназначенную для левого уха. Одним из решений такой проблемы является использование crosstalk cancellation (для краткости CC), дословно "исключение вхаимного проникновения".

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

На многоколоночной системе (4.1, 5.1), звук распределен по динамикам, которые расположены вокруг головы слушателя. Звук, приходящий из того или иного динамика, позиционируется ими и дает пользователю возможность локализировать его.

В принципе, достаточно обычного панорамирования — несколько потоков (в зависимости от числа колонок) которые играют одновременно на всех колонках, но с разной громкостью — этим и создается эффект. В качестве примера можно привести реализацию Dolby Digital. Там используются 6 или 8 потоков в зависимости то конфигурации 5.1 или 7.1.

Технология Sensaura MultiDrive, Creative  CMSS (Creative Multispeaker Surround Sound) воспроизводит звук с использованием HRTF функций через четыре или более колонок (и в каждом звуковом поле применяются собственный алгоритм crosstalk cancellation).

Каждая пара колонок создает фронтальную и тыловую полусферу соответственно. Так как воспроизводимые звуковые поля основаны на применении HRTF-функций, каждое из создаваемых sweet spot (мест, с наилучшим восприятием звучания) способствует хорошему восприятию звучания от источников по сторонам от слушателя, а также от движущихся источников по оси фронт/тыл. Благодаря большому углу перекрытия результирующее место с наилучшим восприятием звука (sweet spot) покрывает область с гораздо большей площадью.

Если бы не применялись алгоритмы crosstalk cancellation (CC) никакого позиционирования источников звука не происходило бы. Вследствие использования HRTF-функций на четырех колонках для технологии MultiDrive необходимо использовать алгоритмы CC для четырех колонок, требующие чудовищных вычислительных ресурсов.

Главный минус использования HRTF  на тыловых колонках — это необходимость точного позиционирования тыловых колонок относительно фронтальных. В противном случае никакого толка от HRTF на четырех колонках не будет. Место для фронтальных колонок давно зарезервировано около монитора. Место для сабвуфера можно выбрать любым, обычно это где-то в углу и на полу. А вот тыловые колонки пользователи располагают там, где считают удобным для себя. Не каждый захочет расположить их строго за спиной и далеко не у всех есть свободное место для такого расположения.

Не стоит забывать и о больших объемах вычислений при расчете HRTF и СС для четырех колонок. Поэтому, скажем, компания Aureal, использовала технику панорамирования на тыловых колонках. Объясняется это именно отсутствием строгих ограничений на расположение тыловых колонок в пространстве.

А вот, например, NVIDIA использует Dolby Digital 5.1 для вывода 3D звука. После позиционирования, весь звуковой поток кодируется в АС-3 формат, и выводиться по цифровому выходу на внешний декодер (например, на домашний кинотеатр).

Min/Max Distance, Air Effects, Macro FX

Одной из основных фич звукового движка являются дистанс-эффекты. Чем дальше источник звука удаляется от слушателя, тем тише он становиться. Рассмотрим некоторые модели, которые используются в современных системах. Об одной, самой простейшая, мы уже упоминали — это просто уменьшение громкости в зависимости от расстояния: звуковой дизайнер должен задать некую относительную дистанция (Минимальную), после преодоления которой интенсивность звука начнет затухать. Пока источник находиться в переделах Минимальной дистанции, он только меняет положение, но никаких дистанс-эффектов не происходит, но после её прохождения звук теряет половину интенсивности (-6 дБ) при удалении на каждый метр от Минимальной Дистанции. Звук будет продолжать затухать, пока не достигнет определенной Maximum distance. Это означает, что звук очень далеко, чтобы быть слышимым. После достижения этого порога звук продолжает затухать до нулевой громкости, но, в принципе, такие звуки можно отключать, чтобы не занимать лишних ресурсов. Чем дальше Maximum distance, тем, соответственно, дольше источник будет слышимым.

Громкость звука можно представить графиком, в большинстве случает это логарифмическая зависимость. Преимущества такой модели таковы, что  дизайнер может различать громкие и тихие источники звука. У каждого источника Min и Max Distance разные. Например, комар и самолет: комара уже не слышно через 50 см, а звук самолета слышно еще несколько километров.

A3D EAX HF Rolloff

A3D API расширил distance-модель DirectSound3D моделированием затухания высоких частот — также, как это происходит в реальном мире при поглощение ВЧ атмосферой, по логарифмическому закону — приблизительно 0,05 дБ на метр (для выбранной относительно частоты: 5000 герц по умолчанию). Однако, если вокруг туман, соответственно, воздух будет плотнее. Поэтому затухание высоких частот будет происходить интенсивнее. ЕАХ3 предоставляет еще более низкоуровневые возможности для моделирования атмосферных эффектов: там задается 2 референс частоты — для низких и высоких частот. Соответственно изменяться их влияние в зависимости от параметров окружения (environment).

MacroFX

Большинство измерений HRTF производятся в так называемом дальнем поле (far field), что существенным образом упрощает вычисления. Но, при этом, если источники звука располагаются на расстоянии до 1 метра от слушателя, то есть в ближнем поле (near field), тогда функции HRTF плохо справляются со своей работой. Именно для воспроизведения звука от источников в ближнем поле с помощью HRTF-функций и создана технология MacroFX. Идея в том, что алгоритмы MacroFX обеспечивают воспроизведение звуковых эффектов в near-field, в результате можно создать ощущение, что источник звука расположен очень близко к слушателю, так, будто источник звука перемещается от колонок вплотную к голове слушателя, вплоть до шепота внутри уха слушателя. Достигается такой эффект за счет очень точного моделирования распространения звуковой энергии в трехмерном пространстве вокруг головы слушателя из всех позиций в пространстве и преобразование этих данных с помощью высокоэффективного алгоритма.

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

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

Doppler, Volumetric Sound Sources (ZOOM FX),  Multiple Listeners

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

Volumetric Sound Sources

Современные системы воспроизведения позиционируемого 3D-звука используют HRTF-функции для создания виртуальных источников звука, но эти синтезированные виртуальные источники являются точечными. В реальной жизни звук зачастую исходит от больших по размеру источников или от композитных источников, которые могут состоять из нескольких индивидуальных генераторов звука. Большие по размерам и композитные источники звука позволяют использовать более реалистичные звуковые эффекты, по сравнению с возможностями точечных источников.

Так, точечный источник звука хорошо применим при моделировании звука от большого объекта удаленного на большое расстояние (например, движущийся поезд). Но в реальной жизни, как только поезд приближается к слушателю, он перестает быть точечным источником звука. Однако в модели DS3D поезд все равно представляется как точечный источник звука, а значит, страдает реализм воспроизводимого звука (то есть мы слышим звук скорее от маленького поезда, нежели от огромного состава громыхающего рядом).

Впервые технологию объемных источников звука ввела Aureal в A3D API 3.0. Потом эстафету перехватила Sensaura с технологией ZoomFX. Технология ZoomFX решает эту проблему, а также вносит представление о большом объекте, например поезде как собрание нескольких источников звука (композитный источник, состоящий из шума колес, шума двигателя, шума сцепок вагонов и т.д.).

Multiple Listeners — совершенно новая технология, обусловленная появлением игровых консолей (PlayStation 2, Xbox, GameCube) и игр для них с двумя или более игроками, играющими одновременно. В качестве примера — Grand Turismo 3 (Polyphony Digital Inc.) на игровой TV-приставке PlayStation 2. Оба игрока играют на разных машинах, соответственно, находятся в разных частях игрового мира и по идее должны слышать только те звуки, которые их окружают. Конечно, они оба одновременно слышат звуки друг друга, но эта технология заметно упрощает реализацию. К сожалению, не один современный (аппаратный) API не поддерживает Multiple Listeners. Описываемая технология есть только в одном коммерческом звуковом API — FMOD. Более подробно об этом читайте чуть ниже.

Технологии 3D звука: wavetracing vs reverbs

Примерно в 1997-1998 годах в каждая из фирм-производителей чипов выбрали себе технологии, за которыми, как они считали, будущее. Aureal, лидер тогдашнего рынка, пошел по пути создания максимального реализма в играх с помощью Wavetracing. Компания Creative решила, что реализма можно достичь с помощью предрасчитанных ревербераций (пресетов) и выпустила EAX. Creative купила Ensoniq / EMU в 1997, производителя и разработчика профессиональных студийных эффект процессоров — поэтому технология реверберации у них уже была. Когда появилась Sensaura, они взяли за основу ЕАХ, назвали свою версию EnvironmentFX и занялись другими технологиями: MultiDrive, ZoomFX и MacroFX. Всех позже появилась компания NVIDIA (разработчик железной начинки для приставки MS X-Box), воплотившая для позиционирования 3D-звука уникальное real-time аппаратное кодирование в Dolby Digital 5.1.

Wavetracing

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

  • прямой путь к слушателю (direct path)
  • первичные отражения (1st order reflections)
  • вторичные отражения (2nd order or late reflections), путь вторично и более раз отраженного звука
  • звуки могут так же проходить сквозь объекты, такие, как вода или стены (occlusions или звук, прошедший сквозь препятствие).

Алгоритмы обсчета путей распространения звуковых волн Wavetracing компании Aureal анализирует геометрию описывающую трехмерное пространство для определения путей распространения звуковых волн в режиме реального времени, после того, как они отражаются и проходят сквозь пассивные акустические объекты в трехмерной окружающей среде.

Геометрический движок или geometry engine в интерфейсе A3D это уникальный механизм по своей возможности моделирования отраженных и прошедших сквозь препятствия звуков. Геометрический движок оперирует с данными на уровне геометрических примитивов: линий, треугольников и четырехугольников (звуковой геометрии).

Звуковой полигон (audio polygon) имеет местоположение, размер, форму, а также свойства материала из которого он сделан. Форма полигона и его местоположение в пространстве связаны с источниками звука и слушателем, влияя на определение того, как каждый в отдельности звук отражается или проходит сквозь полигон. Свойства материала, из которого состоит полигон, могут изменяться от полностью прозрачного для звуков до полностью поглощающего или отражающего.

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

Результатом является серьёзный шаг в сторону реализма создаваемого звука: комбинация из 3D позиционируемого звука, акустики помещений и окружающей среды и точное представление звуковых сигналов для слушателя. Моделирование окружающей среды, реализованное Aureal, пока не имеет аналогов, даже в последних версия EAX от Creative не может сравниться по набору предоставляемых возможностей.

Однако, число аппаратных потоков, выделенных на просчёт отражений по технологии Wavetracing, ограничено. Так что, как бы это ни было соблазнительно, до полного реализма технологии ещё очень далеко. Скажем, на поздние отражения просто не хватит вычислительных ресурсов, а ведь ЦПУ надо ещё и графику обслуживать. Также технология Wavetracing не является быстро реализуемым эффектом, необходимы серьезные затраты на реализацию. Так что пререндеренные "звуковые текстуры" технологии EAX рано списывать со счетов. В 3D-графике также о внедрении рендеренга в real-time по методу трассировки лучей пока что речи не идёт.

Оcclusions

Технология ЕАX и ее модель реверберации будет рассмотрена чуть ниже более подробно. А сейчас хотелось бы остановиться на эффектах окклюзии (occlusion — преграждение), возникающих при прохождении звука через препятствие. В принципе, это можно реализовать с помощью банального уменьшения громкости звука, но более реалистично Оcclusion (да и другие эффекты) реализуется с помощью НЧ-фильтра (low pass, низкочастотного).

В большинстве случаев достаточно одного типа окклюзии — звук находиться за «глухой» преградой. При этом, direct path составляющая звука будет заглушена и степень фильтрации определяется геометрическими параметрами (толщиной) и материалом, из которого сделана стенка. Так как прямого контакта источника и слушателя нет (они находятся в разных комнатах), то по этому же принципу заглушается эхо от источника.

Для достижения максимальной реалистичности разработчики звукового API из Creative вводят понятие Obstruction (помеха, препятствие). В прямом переводе с английского означает практически то же самое что и Оcclusions, но с такими дополнениями: direct path составляющая заглушается — прямого контакта со слушателем нет, но так как звук и источник находятся в одной комнате, поздние отражения (Late Reflections) не заглушаются и попадают к слушателю в неизменном виде.

И еще один тип — Exclusions (Исключение). Источник и слушатель находятся в разных комнатах, но между ними есть прямая видимость, и, как следствие, direct path полностью попадает к слушателю а вот отраженный звук пройдет через проем в стене не весь и исказится (опять-таки в зависимости от толщины, формы и свойств материала).

В любом случае,  как бы вы не реализовывали эти эффекты (с помощью Aureal A3D, Creative Labs EAX или просто вручную на собственном звуковом движке) — все равно придется трассировать геометрию (всю или только звуковую) на предмет установления прямой видимости с источником звука. А это достаточно сильный удар по производительности. Вот и получается, что почти всегда (если говорить о шутерах, 3D РПГ или любых других подобных играх, пытающихся внести максимальный реализм в звуке) надо строить упрощенную геометрию для звука. К счастью, такая геометрия строиться (почти всегда) для подсчета collision для игрока — опять таки, чтобы не трассировать всю геометрию вокруг игрока в помещении. Поэтому, достаточно сделать эту же геометрию чуть более детально для звука. Конечно же, есть и другие способы, но оставим их на совести программистов игровых движков.

Environments morphing

Еще одно новшество от Creative Labs увидело свет вместе с EAX3 в 2001 году. Это алгоритм плавного трансформирования параметров реверберации одного окружения (environment) в другой. На иллюстрации видны 2 практические реализации.

  • Первая — Position transition (позициональное): в зависимости от позиции игрока в пространстве между 2мя средами с абсолютно разными параметрами (в данном случае открытое пространство и закрытое помещение с явно металлическими стенами), плавно меняются параметры реверберации. Чем ближе игрок к выходу из помещения к открытому пространству, тем большее влияние имеют параметры реверберации для открытого пространства, и наоборот.
  • Второй тип — Threshold transition: автоматическое изменение параметров начинается тогда, когда игрок пересек некую переходную границу между помещениями.

Environments morphing — едва ли не самая важная функция среди других, относящихся к реверберации. Она позволяет безо всяких усилий быстро создавать новые пресеты для параметров реверберации. Даже если плавный переход не используется, с помощью этой функции можно создать некий средний environment (например, у нас есть Outdoor и Stone corridor) простой установкой коэффициента морфирования 0.5 мы получим нечто среднее, но звучащее совершенно по иному.

До внедрения Environments morphing, в предыдущих играх (например, в Carnivores 2), где нельзя было плавно изменять параметры (были жесткие пресеты в EAX1 и EAX2) это эмулировалось следующим образом. Создавался промежуточный environment, причем абсолютно на слух, из тех 25 пресетов, которые были доступны. Например, есть пресет пещеры (Cave) и надо сделать плавный переход в пресет Горы (Mountains). После прослушивания и изменения некоторых параметров выбирается пресет Stone Corridor, как нечто среднее. Конечно, всего этого теперь можно избежать благодаря environment morphing.

Интерфейсы и API

Теперь затронем тему выбора API для программирования звукового движка. Выбор на самом деле небольшой: Windows Multimedia, Direct Sound, OpenAL, Aureal A3D.

Начнём с последнего. К сожалению, Aureal A3D не успели доделать (довести до ума драйвера), поэтому на современных Windows 2000 и XP он работает плохо.

Далее, Windows Multimedia system — базовая система вывода звука, унаследованная еще с ранних Windows 3.1. Для игр ее редко используют, так как у нее большая latency, обусловленная большим буфером. Cейчас роль WinMM для игр постепенно отмирает. Однако WinMM используется в некоторых полу-профессиональных карточках, где есть специально оптимизированные WDM-драйвера.

OpenAL, разработка Loki Entertaiment как кросс платформенный АПИ, аналог OpenGL. Активно продвигался Creative Labs в качестве альтернативы Direct Sound. Идея хорошая, но реализация оставляет желать лучшего. К тому же, Loki Entertaiment недавно обанкротились. Мы очень надеемся на появление в скором времени нового альтернативного АПИ для звука, потому что OpenAL — это просто кошмар для программиста. Хотя, как не странно, совершенно недавно, NVIDIA выпустила аппаратный драйвер для OpenAL на своих чипсетах nForce.

Direct Sound и Direct Sound 3D на данный момент самый оптимальный АПИ. И реально альтернатив ему нет. Конечно, есть очень много претензий, но они настолько специфические, что в большинстве случаев просто незаметны, в конце концов, звук он выводит и этого достаточно.

Кроме этих аппаратных АПИ (то есть АПИ, в которых присутствуют аппаратные драйвера, а не эмуляция вывода через DirectSound или WinMM), существуют так называемы врапперы (программные интерфейсы, использующие уже готовый аппаратно-программный интерфейс для создания собственного интерфейса). Как правило, всегда для любой игры пишется wrapper-интерфейс.

Существует много таких API-wrappers (будем называть их так, но реально аппаратной поддержки у них нет): Miles Sound System, RenderWare Audio, GameCoda, FMOD, Galaxy, BASS, SEAL.

МilesSS наверно самый именитый — 2700 игр используют именно этот враппер. Они лицензировали технологию RSX от Intel и предлагают ее в качестве альтернативы софтварному 3D-звуку. Очень много доступных фич, но есть и недостатки — только Win32 и Mac, и очень высокая цена лицензии.

Galaxy Audio разработана для Unreal и, соответственно, используется во всех играх на Unreal-engine. Но последний Unreal 2 выпущен на OpenAL, поэтому можно сказать, что Galaxy уже нет в живых.

Game Coda и  RenderWare Audio — примерно одинаковые по весу АПИ от Sensaura и Renderware соответственно. Все поддерживают PC, PS2, GameCube и XBOX и много разных фич, но, опять таки — цена лицензии довольно высокая.

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

Появившаяся 1995 году компания Firelight Multimedia (Мельбурн, Австралия) состоящая из одного человека — Brett Paterson, уделяла больше внимания музыкальным трекерным форматам MOD, XM, IT, S3M и тогда же вышла первая версия этого АПИ (еще для ДОС). Тогда, это был бесплатный АПИ для некоммерческого использования в демках или других интерактивных приложений.

Так как технологии проигрывания трекерных форматов требуют очень быстрого кода софтварного микширования, FMOD занял лидирующее место среди АПИ, так как его микширующий код был и остается самым быстрым (провено!).

Потом, появились первые карточки с аппаратным 3D-звуком и встал вопрос о совмещения аппаратного и софтварного 3D-звука — и тут началась гонка за технологиями: поддержка Aureal A3D, Creative Labs EAX 1, EAX 2, софтварный менеджер геометрии сцены — для совместимости с А3D.

В 2000 году, компания называется Firelight Technologies и там работают уже 4 человека. В основном портируют код на консоли PS2 и XBOX.  Firelight Technologies была одна из первых компаний, которая предложила услуги audio middleware для консолей. Теперь стратегия компании нацелилась на охват как можно большего числа платформ и разработки единого интерфейса (то есть максимально совместимого и эмулирующего софтварно некоторые функции если они не доступны на какой-либо платформе).

Итак 2003 год, единственный АПИ, поддерживающий 7 (семь!) платформ PC (win32), PlayStation2, XBOX, GameCube, Linux, Mac OS (OSX) и PDA (winCE). Также единственный АПИ, поддерживающий технологию Multiple Listeners, 12 компиляторов под любой язык программирования от Visual Basic, до ассемблера, самые быстрые софтварный код микшера, быстрый декодер MP3 (к сожалению нужна дополнительная лицензия Thompson multimedia чтобы использовать MP3 для коммерческих приложений), но есть альтернатива — OGG или WMA. Вот далеко не полный список всего что есть в FMOD. Рекомендую зайти на их сайт www.fmod.org, чтобы посмотреть все, что там есть, а также цены на лицензирование. По секрету, готовиться аппаратный драйвер FMOD на нескольких платформах windows и на мобильных телефонах (PDA) — так что скоро это будет полноценный АПИ.  Возможно, FMOD постигнет участь Aureal — его купит какая-нибудь большая компания, но пока FMOD уверенно завоёвывает позиции на рынке.

«Nice to see that a lot of the things I wanted our Engineers to develop into A3D actually got done by an outside company." David Gasior / Former Technology Evangelist at Aureal» Я особо доверяю David Gasior, и полностью согласен с его высказыванием относительно FMOD. К слову, это все не коммерческая презентация FMOD, а реальное положение вещей на рынке Audio API.

EAX (Environmental Audio Extensions)

Теперь рассмотрим по подробнее систему EAX (Environmental Audio Extensions) от Creative Labs. Сразу оговорюсь ЕАХ — это не АПИ, не библиотека, это набор расширений для API DirectSound3D.

Реализовать EAX в игре с точки зрения программирования довольно просто — дело одного-двух дней, но настройка параметров занимает куда больше времени.

Как я уже говорил выше, мы будем рассматривать Слушателя (Listener) и Источники Звука (Sound Sources) отдельно. Система ЕАХ различает настройки параметров отдельно для Слушателя и для Источников звука. Их мы будем называть Параметры Слушателя (Listener parameters) и соответственно Параметры Источников (Sound Source Parameters).

Примерно в 1997-1998 годах Creative выпускает ЕАХ версии 1. Это примитивный набор из 26 пресетов и всего 3х параметров для более точной настройки параметров Слушателя и всего 1 параметр для настройки источников. После некоторого затишья, выходит ЕАХ версия 2. Это существенный прорыв вперед и ЕАХ2 (14 параметров для настройки слушателя и 13 для источников, включая эффекты окклюзии) практически принимают как стандарт для игр. Interactive Audio Special Interest Group (www.iasig.org) создают стандарт IASIG Level 2, который практически базируется на ЕАХ2, но с некоторыми недочетами. Дело в том, что каждая компания, которая внедряет IASIG Level2 — Microsoft Direct Sound 8, Sensaura EnvironmentFX, Aureal A3D вносит свой дополнения: другой порядок расположения параметров, разные названия параметров. Это все вносит некоторые неудобства в настройку и портирования. Я не буду долго останавливаться на ЕАХ2 — это все можно прочитать в SDK на сайте developer.creative.com.

EAX Advanced HD

В 2001 году Creative анонсирует новую звуковую карту Audigy и новые функции ЕАХ, который теперь и далее называется EAX Advanced HD. Теперь это 25 (!) параметров для точной настройки слушателя и 18 параметров для настройки источников, включая еще 2 новых эффектов окклюзии.

Итак, EAX Advanced HD (для простоты будем говорить ЕАХ3). Для начала рассмотрим параметры Слушателя. Они делятся на 2 группы: высокоуровневые и низкоуровневые.

Listener Parameters

Высокоуровневые параметры — это Environment, выбор из 26 пресетов, полностью обратно совместимых с ЕАХ версий 1 и 2. Второй параметр Environment Size — собственно размер комнаты от 1 до 100 метров. И третья подгруппа — это флаги для автоматического расчета низкоуровневых параметров в зависимости от размера комнаты; это и автоматический расчет времени задержки, и время затухания поздних отражений и т.д. Более подробно об этом можно почитать в SDK и документации, мы рассматриваем только подход.

Низкоуровневые параметры делятся на несколько подгрупп в зависимости от их действия.

Первая подгруппа — это параметры, контролирующие уровни интенсивности (громкости). Сюда входят параметры уровня громкости всех звуков (Room — master volume) и первичных (Reverb) и вторичных (Reflections), отражений масштабирующий коэффициент затухания (Room Roll-off Factor) громкости в зависимости от расстояния.

Вторая подгруппа — это параметры, влияющие на время. Тут находятся времена задержек первичных и вторичных отражений (Reverb и Reflection Delay), а так же время затухания всех отражений Decay Time (все в секундах).

В третью группу вошли параметры, отвечающие за тональный окрас звука. Это чисто субъективный термин, но дающий понять, из какого материала сделаны стены помещений, какова плотность воздуха в окружении (environment). Ведь каждый материал отражает и поглощает определенные частоты. Эти параметры по сути эмулируют поглощение и отражения звука материалом. Это относительные частоты (нижняя LF — Low Frequency и верхняя HF — High Frequency) в переделах которых будут происходить изменения. Например, металлические стены отражают больше, чем деревянные, поэтому для эмуляции металлических стен верхняя граница частоты будет ниже, чем для эмуляции дерева. Например, параметры цеха: нижняя частота 362 Гц, высокая 3762; деревянная комната: нижняя частота 99 и высокая 4900 Гц. Ну и собственно, параметры, которые контролируют влияние этих частот Room LF и HF соответственно (в децибелах). В этой же подгруппе коэффициенты затухания (Decay) для LF и HF и коэффициент поглощения высоких частот воздуха (Air Absorption HF).

Четвертая подгруппа отвечает за зернистость (granularity) отраженного звука. Слово "зернистость" не очень подходит, поэтому я предпочитаю использовать плотность. Тут находиться коэффициент диффузии 0…1 (Environment Diffusion), и параметры эха Echo Depth и Echo Time — число повторений оригинального звука во время затухания. Например, по умолчанию, Echo Time 250 мс — это значит, что эхо повторяется 4 раза в секунду. Если вы стукните в барабан в таком помещении, вы услышите повторение звука удара 4 раза в секунду. Таким образом, эта подгруппа контролирует плотность и соответственно реалистичность.

Одна из самых интересных подгрупп, пятая — эффекты панорамирования. С их помощью можно существенно повысить динамику отраженного звука. Зная минимально расположение комнат можно так настроить программу, чтобы считать и устанавливать направление, откуда больше всего приходят отражения. Например, учитывая положение ближайших стен к игроку. Или, представите ситуацию, что игрок находиться в пространстве без эха (на открытой местности), но слышит отраженный звук из отверстия пещеры, находящийся неподалеку. Программа может панорамировать отраженный звук, как будто он исходит из отверстия пещеры. Для этой цели существует параметр Reverb Pan (первичные отражения) и Reflections Pan (вторичные отражения). Это единичный вектор с координатами (x,y,z), изменяющимися от 0 до 1. По умолчанию все значения равны 0 — это значит, что отражения могут приходить со всех направлений. Значение 1 это экстремальный случай, означает что отражения приходят только с одного направления и поэтому, максимальное значение лимитировано по 0.7 для всех координат.

И, наконец, последняя подгруппа, Pitch Modulation effects (эффекты модуляции тона)

Эти эффекты не наблюдаются в реальных окружениях (environment). Скорее, они созданы для эмоциональной нагрузки. Например, для создания ощущения головокружения, интоксикации и т.д. Сюда входят Modulation Depth (0… 1) и Modulation Time (0.4… 4 seconds).

Sound Source Parameters

Как и параметры слушателя, параметры источников делятся на несколько подгрупп.

Первая подгруппа, аналогична первой подгруппе Слушателя — контроль уровней громкости. Тут громкость прямого пути (Direct) и дополнительная громкость поглощения высоких частот (Direct HF). И, аналогично, громкость для первичных отражений (Room) и громкость поглощения высоких частот для отраженного звука (Room HF).

Во второй подгруппе находятся 3D свойства источников звука: коэффициенты Roll-off Factor, Room Roll-off Factor и Air Absorption Factor и флаги, для автоматического расчета некоторых параметров.

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

Итак, Occlusions (Эффекты, возникающие при прохождении звука через препятствие, когда источник и слушатель разделены непреодолимой для звука преградой) parameters включают 4 параметра: Occlusion, по сути, громкость эффекта в децибелах (-10000 до 0 dB), и Occlusion LF Ratio — коэффициент поглощение низких частот (0… 1), Occlusion Room Ratio и Occlusion Direct Ratio — коэффициенты, контролирующие степень фильтрации звука прямого пути и отраженного звука.

Obstructions (И слушатель и источник находятся в одном помещении, путь прямого прохождения звука перекрыт преградой, но отраженный звук доходит до слушателя полностью). Включает в себя 2 параметра: Obstruction (громкость эффекта -10000… 0 dB) и Obstruction LF Ratio- коэффициент затухания низких частот (как в Occlusions).

И, наконец, Exclusions (Источник и слушатель находятся в разных комнатах, но в стене есть проем — прямая видимость, и, как следствие, прямой путь полностью попадает к слушателю, а вот отраженный звук доходит частично). Тут тоже два параметра, как и в Obstructions.

EAX4 (EAX Advanced HD version 4)

В марте 2003 компания Creative анонсировала EAX Advanced HD version 4, который официально появиться где-то в конце апреля или в мае 2003. К сожалению, сейчас Creative не даёт разрешения на более подробное описание их новой версии ЕАХ4 с техническими подробностями. Поэтому нам придется ограничиться абстрактным описанием. В принципе, все что мы рассмотрели для ЕАХ3 осталось справедливым и для ЕАХ4, но с небольшими изменениями — немного изменилась концепция.

Итак, что же нового в EAX Advanced HD version 4:

  • Studio quality effects
  • Multiple effect slots
  • Multiple Environments и Zoned effects

Studio quality effects

EAX4 представляет 11 звуковых эффектов студийного качества. Вы можете использовать любой из эффектов, представленных ниже для 2D и 3D источников звука.

  • AGC Compressor — автоматически выравнивает громкость источника звука
  • Auto-Wah — автоматическая версия «Wah» педали
  • Chorus — делает звук одного инструмента как звучание нескольких инструментов
  • Distortion — симулирует «overdriving» гитарный усилитель
  • Echo — вносит движение и расширяет звуковое пространство для источника
  • Equalizer — 4-х полосный эквалайзер
  • Flanger — создает эффект создания «tunneling» или «whooshing» звука (как реактивный самолет пролетает над головой) — эффект модуляции частоты входного сигнала
  • Frequency Shifter — сдвигает частоты входного сигнала на заданную величину
  • Vocal Morpher — накладывает специальные эффекты для вокала на входной сигнал (пара 4-полосных формантных фильтров, создающие эффект Vocoder, но с предустановленными сигналами модуляции)
  • Pitch Shifter — сдвигает частоту звука с сохранением гармоник и темпа
  • Ring Modulator — умножает входной сигнал на другой (модулирующий) во временной области
  • Ну и, конечно, Environment Reverb — основа ЕАХ.

Более подробно как работают некоторые эффекты можно почитать на www.harmony-central.com/Effects/effects-explained.html.

Эти эффекты дают бесконечные возможности для творчества и применения для игр. Например, эффект Flanger можно применять для звука machine gun создавая иллюзию перегрева или наоборот стрельбы быстрее в реальном режиме времени, не изменяя звуковой файл или симулировать эффект рации с помощью Distortion и Equalizer. Можно придумать множество идей, но есть одна проблема — всё это будет работать только на Audigy / Audigy 2. В любом случае, часть таких эффектов встроены в Direct Sound 8 или всегда можно эмулировать программно.

Multiple effect slots

Второй объявленной фичей является несколько слотов для эффектов. В эти слоты вы можете добавлять несколько из выше перечисленных эффектов одновременно. Для примера, вы можете слышать звук одновременно в нескольких окружениях (environments) или та же рация, где кроме Distortion и Equalizer еще используется и Environment Reverb, создавая иллюзию переговорного устройства в каком-то помещении с эхом.

Multiple Environments

Рассмотрим следующий сценарий. 3 источника звука находятся вокруг слушателя. Источник 1 слышен в окружении (environment) слушателя с эффектом Occlusions. Источник 2 распространяется с Obstructions и Exclusions. Третий источник с Exclusions. Все параметры могут быть установлены вызовом четырёх ЕАХ3 функций — одна для установки окружения слушателя и 3 для установки эффектов Occlusions, Obstructions и Exclusions источников (дополнительные параметры устанавливается во время этих основных установок).

Теперь, рассмотрим эту же ситуацию для ЕАХ4. Теперь у каждого источника свое окружение (environment) и у слушателя свое — основное. Звук каждого источника распространяется как по своему окружению, так и по окружению слушателя. Эффекты Occlusions, Obstructions и Exclusions источников применяются как к окружению источников, так и к окружению слушателя. То есть, мы получаем результат взаимодействия источников в своем окружении, плюс еще взаимодействие в окружении слушателя.

Конечно же, эти установки требуют большего числа вызовов функций ЕАХ4: надо установить все окружения: для источников, слушателя и эффекты для каждого источника, но зато мы получаем более реалистичное звучание — каждый из источников звучит так, как будто он находиться в разных комнатах со слушателем вместо просто звучания вне комнаты слушателя как в примере с ЕАХ3.

Zoned effects

Теперь, в СДК документации появилось еще понятие Зон, очень похожее на Room или Environment (на самом деле означает то же самое). Creative Labs рекомендуют разбивать визуальную геометрию на некие зоны, в каждой из которых будут свои свойства — свой пресет для реверберации. Если игра (программа) знает, в какой из зон находится слушатель и все источники, то можно установить соответствующие параметры автоматически. Целесообразнее разбивать на зоны в редакторе уровней, где audio designer сможет расставить идентификаторы для зон и параметры реверберации.

EAX Advanced HD 4 дает больше возможностей для создания плавных переходов между зонами. Как и в ЕАХ3, отслеживается текущая зона (environment), в которой находиться слушатель, и, когда совершается переход в другую зону, включается операция морфирования. Но теперь это уже может быть морфирование параметров в слотах, то есть необязательно каждый раз загружать параметры.

Например на слайде видны 3 зоны (3 environments). Зона 1 — некое цилиндрообразное помещение, Зона 2 — маленькое помещение с низким потолком и Зона 3 — длинный коридор. В каждом из них будет свой специфический эффект реверберации. Мы загружаем все 3 пакета с параметрами в слоты и когда нужен будет переход — плавно морфируем параметры (см. Environment Morphing).

Особо надо подчеркнуть эффекты панорамирования (Reverb / Reflections panning) и окклюзии. В эти же слоты, которые мы рассмотрели выше, можно будет загрузить несколько разных Environment Reverb-ов для каждой из Зон и динамически менять или морфировать один в другой для полной реалистичности звучания.

На иллюстрации видно, что источник звука находиться в Зоне с пресетом 3, а слушатель а зоне 2. Зона 3 соединена с зоной 2 дверным проемом (Эффект Exclusion — direct path проходит, отражения приглушаются и фильтруются). Зона 3, тем не менее, соединена с Зоной 2. Итак, прямой путь источника звука и приглушенные с помощью окклюзии (в данном случае exclusion) отражения из Зоны 3 проходят в Зону 2, отражаются тут и попадают к Слушателю. На этом можно было и закончить, но у нас есть Зона1 позади слушателя. Сейчас там нет источников звука (если бы был, то и прямой и отраженный пути попали бы на слушателя и соответственно бы провзаимодействовали с Зоной 2). Но, мы можем настроить вектора для панорамирования таким образом, что отражения из Зоны 2 будут попадать в Зону 3, взаимодействовать там и попадать обратно к слушателю. Таким образом, мы получим очень реалистичную звуковую сцену.

Ну вот, вкратце, что нас ждет в ближайшем будущем. Это все, конечно, красиво на словах, а когда все дойдет до реализации — все будет не так радужно, как бы нам хотелось. Основной проблемой будет определение в какой зоне находиться источник звука, правильная загрузка параметров ближайших зон и трассировка каждого источника на предмет Occlusions, Obstructions или Exclusions. Конечно же, совершенно необязательно включать в игру все эффекты, предлагаемые ЕАХ4. Вполне возможно, что в вашем проекте достаточно только реалистичного Environment Morphing и эффекта звука за стенкой — Occlusion.

 

При подготовке статьи использовались материалы сайта iXBT.com

Отдельное спасибо (Special Thanks)
Chen Reed // Creative Labs for GDC 2003 Slides and EAX4 SDK
Dmitry Gait // Action Forms for artwork help

 

Дополнительно

Нашли ошибку на сайте? Выделите текст и нажмите Shift+Enter

Код для блога бета

Выделите HTML-код в поле, скопируйте его в буфер и вставьте в свой блог.