Смекни!
smekni.com

Методы позиционирования и сжатия звука (стр. 33 из 47)

Существует масса звуковых интерфейсов, таких, как DS3D, QMDX, QMixer, A3D 1.x и 2.0 и звуковые API третьих фирм, таких как HMI, EAR, Diamondware и другие. Если программист выбрал для использования интерфейс "Фирмы Х" (при этом он может также использовать более чем один API для конкретного приложения) это совсем не означает, что вы должны обязательно использовать аппаратное обеспечение "Фирмы Х" что бы все работало.

Что сбивает с толку, так это знание того, какой звуковой движок поддерживает данный API.

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

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

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

Большинство разработчиков убедились в очевидном преимуществе использования таких API, как DS3D, QMixer и QMDX, которые не являются зависимыми от производителя аппаратного обеспечения и, следовательно, будут прекрасно работать с любой 3D звуковой картой.

Что такое "Panning"?

Panning (панорамирование) -- этот термин происходит от простого устройства, изобретенного Лесом Полом (Les Paul) в далеких 50-х годах, которое использовалось для расположения моно фонических звуковых дорожек в явно определенное положение слева/справа в стерео звуковом поле.

"Panoramic Potentiometer" (или для краткости "Pan Pot", панорамный потенциометр) это нечто вроде регулятора баланса в стерео системе. В то время как регулятор баланса управляет всем входящим стерео сигналом и выдает отрегулированный стерео сигнал на выходе, pan pot управляет моно сигналом на входе, а на выходе выдает его разделенным на части, передавая их в выходные каналы, левый и правый.

Любой микшерский пульт стерео звука (использующийся в студии звукозаписи) имеет pan pot для каждого канала. Повернем ручку управления pan pot полностью влево и 100% сигнала (скажем в честь Леса, что это звук гитары) будет направлено в левую колонку. В результате, звук гитары будет явственно исходить из левой колонки. Повернем ручку управления pan pot полностью вправо и 100% сигнала будет исходить из правой колонки.

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

Такая же концепция панорамирования использовалась на протяжении лет в видео играх, с целью динамического расположения источников звука слева/справа в звуковом стерео поле. (Ясно, что физически pan pot не использовался, а применялся его программные эквиваленты). Такой же принцип может быть распространен на любое количество колонок. Панорамирование, использующееся в обработке 3D звука, не изменяет звуковой сигнал (например, его фазу, частоту и т.д.) осуществляя лишь простое управление пропорциями передаваемого сигнала индивидуально в каждое физическое устройство воспроизведения.

Что такое "Voice Manager"?

Термином Voice Manager (менеджер голоса) называют стандартизованный механизм для управления на аппаратном уровне каналами в 3D звуковой карте. Раньше аппаратное обеспечение оперировало всего лишь 5 каналами 3D звука, сейчас стандартным является число в 8 каналов. Основной интерфейс 3D звука DirectSound3D перекладывает работу по распределению этих ограниченных ресурсов между самыми важными звуками (те, что должны звучать в данный конкретный момент) полностью на программиста. Это очень большой объем работы. Программисты обычно предпочитают задать много (20, 30 или больше) звуковых каналов, а затем просто манипулировать ими по своему усмотрению.

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

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

Поэтому, QSound предложила Microsoft, чтобы наша схема управления распределением ресурсов была адаптирована и распространялась в качестве стандартной с тем, чтобы любой производитель мог ее использовать (также как и DS3D). Microsoft согласилась с нашим предложением, немного упростила наш метод и стала распространять систему управления распределением ресурсов под именем Voice Manager.

В чем разница между QSound, DS3D и EAX?

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

DS3D содержит:

· API

· низкоуровневый интерфейс, работающий в режиме реального времени, аппаратноог обеспечения 3D звука

· программный звуковой движок от Microsoft, работающий в режиме реального времени, носящий имя "Hardware Emulation Layer" (HEL, уровень эмуляции аппаратного обеспечения)

Идея в том, что разработчик программного обеспечения пишет приложение, используя API DS3D, который является всего лишь набором команд. Когда игра запускается, стандартная функция DS3D ищет аппаратный ускоритель (например, 3D звуковую карту). Если такая карта найдена в системе, DS3D передает вызовы 3D функций и звуковые потоки в звуковую карту для их исполнения и обработки.

Каждый отдельный производитель звуковых карт с поддержкой 3D звука, независимо от того, какая технология 3D звука используется QSound, EMU, Aureal, CRL и т.д. делает свои звуковые карты совместимыми с набором команд DS3D. Это означает, что игра, написанная под DS3D, будет производить базовое позиционирование 3D звука на любой 3D звуковой плате, используя тот звуковой движок, какой имеется. В этом прелесть DS3D; он является универсальным API, который поддерживает звуковые движки многих производителей.

Далее, если игра не нашла аппаратного обеспечения, т.е. 3D звуковой карты в данной системе, тогда DS3D использует свой собственный программный звуковой движок (HEL). Это одна из проблем DS3D; интерфейс DS3D функционален и универсален, но HEL медлителен (поглощая при этом огромное количество ресурсов CPU) и обеспечивает минимальные 3D звуковые эффекты, причем только через головные телефоны. Проблема с ресурсами центрального процессора означает, что при отсутствии аппаратного обеспечения 3D звука производительность может пострадать в такой же степени, как падает значение fps в играх при отсутствии графического акселератора.

Одним из продуктов компании QSound является звуковой движок для производителей звуковых карт. Этот звуковой движок, конечно же, совместим с интерфейсом DS3D. Конечно, процесс воспроизведения трехмерного звука гораздо сложнее, чем то, что может эмулировать DS3D HEL, но в принципе это верно для любой реально существующей на рынке технологии 3D звука. DS3D HEL никогда не был рассчитан на то, чтобы быть эквивалентом 3D звуковому движку, реализованному полностью на аппаратном уровне.

Компанией QSound также созданы комплекты для разработчиков (SDK), такие как QMDX и QMixer. Они похожи на DS3D, так как оба содержат API (набор команд) и модуль работающий в режиме реального времени, который обеспечивает программную обработку и воспроизведение стерео (QMDX) или 3D (QMixer) звука в системах не имеющих соответствующего аппаратного обеспечения. Работающий в режиме реального времени звуковой движок в обоих QM SDK оставляет DS3D HEL далеко позади с точки зрения производительности, поэтому в системах без аппаратного обеспечения для воспроизведения звука игры будут идти с хорошими значениями fps.

Тем не менее, также как и DS3D, вместе QMDX и QMixer поддерживают DS3D-совместимые ускорители, если какой-либо из них присутствует в системе. Оба эти API переводят команды напрямую в формат DS3D с тем, чтобы использовать имеющееся аппаратное обеспечение. Так, в системе с аппаратным ускорителем, интерфейсы QM больше чем просто оболочка DS3D, обеспечивающая удобное использование набора мощных функций и значительно облегчающая задачи программиста, но в то же время эти интерфейсы сохраняют универсальную поддержку аппаратного обеспечения рассчитанного только на DS3D. В действительности, наши интерфейсы идут на шаг дальше, потому что (как было показано выше) их собственные звуковые движки могут быть использованы в дополнение к имеющемуся аппаратному обеспечению, например, если 3D звуковая карта поддерживает слишком мало звуковых каналов.

QSound создала свой собственный движок реверберации звука, который совместим с интерфейсом EAX. Этот движок уже поставляется нашим OEM клиентам для использования в новых Q3D продуктах. Мы также добавили поддержку набора команд EAX в наши комплекты разработчиков (SDK): QMDX и QMixer.