Технология пространственного звука для разработчиков приложений для Windows, Xbox и Hololens 2
Примечание.
Эта документация предназначена для аудитории разработчиков. Сведения о поддержке конечных пользователей для включения пространственного звука на устройстве см. в статье "Включение пространственного звука" в Windows 10.
Microsoft Spatial Sound — это решение на уровне платформы Майкрософт для поддержки пространственного звука в Xbox, Windows и HoloLens 2, что позволяет поддерживать звуковую подсказку как вокруг, так и высотой (выше или ниже прослушивателя). Пространственный звук можно использовать приложениями Windows desktop (Win32), а также приложениями универсальная платформа Windows (UWP) на поддерживаемых платформах. API пространственного звука позволяют разработчикам создавать звуковые объекты, которые выдают звук из позиций в трехмерном пространстве. Динамические звуковые объекты позволяют выдавать звук из произвольной позиции в пространстве, что может меняться с течением времени. Можно также указать, что звуковые объекты выдают звук из одного из 17 предварительно определенных статических каналов (8.1.4.4), которые могут представлять реальные или виртуализированные динамики. Фактический формат выходных данных выбирается пользователем и может быть абстрагирован из реализаций Пространственного звука Майкрософт; звук будет представлен существующим динамикам, наушникам и приемникам домашнего театра без каких-либо изменений кода или содержимого. Платформа полностью поддерживает кодировку Dolby Atmos в режиме реального времени для выходных данных HDMI и стереоушников, DTS:X для наушников и Windows Sonic для наушников кодировки для стереоушников. Наконец, приложения Microsoft Spatial Sound соблюдают политику смешивания системы, а их звук также будет смешанным с непространственными приложениями. Поддержка пространственного звука Майкрософт также интегрирована в Media Foundation; приложения, использующие основу мультимедиа, могут успешно воспроизводить содержимое Dolby Atmos без дополнительной реализации.
Пространственный звук с microsoft Spatial Sound поддерживает телевизоры, домашние кинотеатры и звуковые панели, поддерживающие Dolby Atmos. Пространственный звук также можно использовать с любой парой наушников, которым может принадлежать потребитель, с звуком, отрисованным платформой с помощью Windows Sonic для наушников, Dolby Atmos для наушников или DTS Headphone:X.
Включение пространственного звука Майкрософт
Независимо от того, является ли разработчик или потребитель, пользователь должен включить Microsoft Spatial Sound на своем устройстве, чтобы услышать пространственный звук.
Windows
На компьютерах с Windows это делается с помощью страницы свойств для заданного выходного устройства. На панели управления "Звук" выберите выходное устройство и щелкните свойства устройства. В разделе "Пространственный звук" страницы, если устройство поддерживает пространственный звук, можно выбрать один из доступных форматов в раскрывающемся списке "Пространственный формат звука".
Вы также можете включить пространственный звук Майкрософт, щелкнув правой кнопкой мыши значок тома на панели задач.
Xbox
В Xbox возможности пространственного звука Майкрософт всегда доступны для потребителя и включены через приложение Параметры в разделе "Общие —> громкость и звук".
Кнопка звука HDMI заполняется всеми форматами, поддерживаемыми приемником аудио -видео (AVR) или звуковой панелью или телевизором, подключенным непосредственно к консоли Xbox. Параметр "Оптический звук" доступен только в старых консоли Xbox, а не в серии Xbox X|S и выше.
Обратите внимание, что выбор параметров "Dolby Atmos для домашнего кинотеатра (только HDMI)" или "DTS:X для домашнего кинотеатра (только HDMI)" в звуке HDMI предложит пользователю скачать и установить Dolby Access или приложения DTS Sound Unbound, если они еще не установлены.
Выберите Dolby Atmos для наушников, DTS Headphone:X или Windows Sonic для наушников в раскрывающемся списке "Формат гарнитуры" в разделе "Звук гарнитуры"
Если пространственный звук Майкрософт недоступен (например, при воспроизведении на встроенных стереофонических динамиках ноутбука или если пользователь явно не включил Microsoft Spatial Sound на указанный выше), число доступных динамических объектов, возвращаемых ISpatialAudioClient::GetMaxDynamicObjectCount для приложения, будет равно 0.
HoloLens 2
В HoloLens 2 функция "Пространственный звук Майкрософт" включена по умолчанию и использует аппаратное отключение DSP, разработанное специально для Windows Sonic для наушников.
По промежуточному слоям пространственного звука и звука Майкрософт
Многие разработчики приложений и игр используют сторонние решения подсистемы отрисовки звука, которые часто включают сложные средства разработки и аудита. Корпорация Майкрософт сотрудничала с несколькими из этих поставщиков решений для реализации Microsoft Spatial Sound в существующих средах разработки. Это часто означает, что api, рассмотренные здесь, абстрагируются от представления приложения; Они упаковываются в виде подключаемых модулей цифровой обработки сигналов (DSP), которые приложение может создавать экземпляры, и которые аудиоконфератор приложения может использовать для смешивания с кроватью канала Пространственного звука Майкрософт, подмиксом или отправкой отдельных голосов в подключаемые модули динамического экземпляра объектов по мере необходимости. Обратитесь к поставщику решений по промежуточному по промежуточному слоя аудио, чтобы получить поддержку пространственного звука Майкрософт.
Пространственный звук Майкрософт для отрисовщиков звука
Многие отрисовщики звука предназначены для конечной точки IAudioClient для API сеанса аудио windows (WASAPI), где буферы веб-каналов приложений смешанных и форматированных звуковых данных в приемник звука WASAPI, а затем используются для смешивания с другими клиентами, окончательной обработки на уровне системы и отрисовки.
Пространственные конечные точки Microsoft Spatial Sound реализованы как ISpatialAudioClient, который имеет множество сходств с IAudioClient. Он поддерживает статические звуковые объекты, формируя кровать канала, с поддержкой до 8.1.4.4 каналов (8 каналов вокруг прослушивателя : слева, справа, слева, стороны, слева, назад, назад, справа и заднего центра; 1 каналы с низкой частотой; 4 канала выше прослушивателя; 4 канала ниже прослушивателя). Он поддерживает динамические звуковые объекты, которые могут быть произвольно расположены в трехмерном пространстве.
Общий шаблон кода реализации для ISpatialAudioClient :
- Создайте статические и /или динамические звуковые объекты.
- Канал аудио буфера каждого объекта для каждого кадра, чтобы система ей могли отрисовывать.
- Обновите трехмерные позиции динамических объектов по запросу — как часто (или редко) по мере необходимости приложения.
Обратите внимание, что текущий формат вывода (динамики или наушники; Windows Sonic для наушников, Dolby Atmos или DTS Headphone:X) абстрагируется от приведенной выше реализации. Разработчик приложения может сосредоточиться на пространственном звуке, не требуя сводки на основе формата. Приложения, которые хотят, чтобы их поведение разилось в зависимости от формата выходных данных, может запрашивать используемый формат, но абстракции означает, что приложение не требуется для обработки этих форматов.
Интеграция пространственного звука Майкрософт с отрисовщиками звука
Так как ISpatialAudioClient — это приемник звука, который потребляет данные, средство отрисовки звука имеет несколько вариантов взаимодействия с данными и доставки звуковых данных в него. Существует три часто используемых метода интеграции (и для названий с помощью по промежуточного слоя звука вы можете увидеть эквивалентные подключаемые модули, доступные на основе этих параметров):
- 7.1.4 panners и mastering voice: Отрисовщики, которые уже поддерживают конечные точки 7.1, могут просто добавить поддержку четырех дополнительных каналов высоты, поддерживаемых кроватью статических каналов ISpatialAudioClient . Любой сдвиг канала, который они ранее сделали (вероятно, уже использует x,y, z координаты) можно обновить, чтобы теперь включить эти каналы высоты. Это часто обеспечивает минимальное нарушение работы отрисовщика и звуковых процессов приложений, сигналов, потоков и управления смешиваниями. По наушникам обратите внимание, что полный набор приложений будет пространственным — так что даже стерео музыка может рассматриваться как "внешний" от прослушивателя.
- Поддержка существующей конечной точки, а также добавление шины 7.1.4 (и panners): некоторые заголовки могут поддерживать две конечные точки: существующую конечную точку СТЕРЕО WASAPI (для содержимого "прямой к уши", не предназначенного для пространственной обработки) вместе с кроватью статического канала ISpatialAudioClient , поддерживающей 7.1.4 (или даже до 8.1.4.4). Конечно, управление взаимодействием между двумя смешиваниями представляет дополнительные проблемы создателям содержимого, хотя синхронизация поддерживается, так как экземпляры ISAPI и ISAC, активные в определенное время, используют один и тот же размер буфера и часы для обработки.
- Используйте динамические звуковые объекты для определенных голосов или подмиксов: предлагая, возможно, наиболее подробную/точную позицию, но потенциально создавая непрозрачность, этот метод включает использование динамических звуковых объектов ISpatialAudioClient . Обратите внимание, что метаданные и звуковой буфер доставляются в отрисовщик, поэтому эти звуки будут непрозрачными для остальной части смеси приложений. Кроме того, поскольку существует ограниченное количество доступных динамических звуковых объектов, отрисовщику потребуется рассмотреть возможность реализации методов приоритизации — отбрасывания, совместного размещения звука, смешивания со статической кроватью канала и т. д. Игры часто использовали этот метод для отдельных "героев" звуков, таких как вертолет, который будет перемещаться над прослушивателем.
Отрисовщики также могут смешивать и соответствовать этим подходам.
Последствия ресурсов среды выполнения пространственных звуков Майкрософт
В Windows и Xbox количество доступных голосов зависит от используемого формата. Форматы Dolby Atmos поддерживают 32 общих активных объектов (поэтому если используется кровать канала 7.1.4, 20 дополнительных динамических звуковых объектов могут быть активными). Windows Sonic для наушников поддерживает 128 общих активных объектов, при этом канал LFE не учитывается в качестве объекта, поэтому при использовании 112 динамических звуковых объектов может быть активным, если используется 8.1.4.4 канала.
Для универсальная платформа Windows приложений, работающих на игровых консоли Xbox One, кодирование в режиме реального времени (для Dolby Atmos для домашнего театра, Dolby Atmos для наушников, DTS:X для домашнего театра, DTS Headphone:X и Windows Sonic для наушников) выполняется в оборудовании без затрат на ЦП.
Начиная с обновления ОС Xbox 2303 и пакета средств разработки игр (GDK), ограничения ресурсов на Xbox обновляются до следующих значений:
Формат | Max Static Objects (Channel Bed) | Максимальное число динамических объектов Приложения Серии Xbox X|S, UWP и >=2303 GDK |
Максимальное число динамических объектов Xbox Series X|S, XDK & <2303 GDK |
Максимальное число динамических объектов Xbox One |
---|---|---|---|---|
Dolby Atmos для домашнего театра (HDMI) | 12 (7.1.4) | 20 | 20 | 20 |
DTS:X для домашнего театра (HDMI) | 17 (8.1.4.4) | 20 | 20 | 16 |
Dolby Atmos (Наушники) | 17 (8.1.4.4) | 128 | 20 | 16 |
DTS Headphone:X (наушники) | 17 (8.1.4.4) | 200 | 20 | 16 |
Windows Sonic (Наушники) | 17 (8.1.4.4) | 220 | 20 | 15 |
Начиная с выпуска майского обслуживания до сборки Windows 22621 ограничения ресурсов в Windows обновляются до следующих значений:
Формат | Max Static Objects (Channel Bed) | Максимальное число динамических объектов Windows |
Максимальное число динамических объектов HoloLens 2 |
---|---|---|---|
Dolby Atmos домашний театр (HDMI) | 12 (7.1.4) | 20 | Н/П |
DTS:X для домашнего театра (HDMI) | 17 (8.1.4.4) | 32 | Н/П |
Dolby Atmos (Наушники) | 17 (8.1.4.4) | 128 | Н/П |
Dolby Atmos (встроенные динамики) | 17 (8.1.4.4) | 128 | Н/П |
DTS Headphone:X (наушники) | 17 (8.1.4.4) | 128 | Н/П |
DTS:X Ultra (встроенные динамики) | 17 (8.1.4.4) | 128 | Н/П |
Windows Sonic (Наушники) | 17 (8.1.4.4) | 128 | 31 |
Для предыдущих выпусков Windows, Xbox и HoloLens применяются следующие ограничения ресурсов.
Формат | Max Static Objects (Channel Bed) | Максимальное число динамических объектов Xbox One |
Максимальное число динамических объектов Windows |
Максимальное число динамических объектов HoloLens 2 |
---|---|---|---|---|
Dolby Atmos для домашнего театра (HDMI) | 12 (7.1.4) | 20 | 20 | Н/П |
DTS:X для домашнего театра (HDMI) | 17 (8.1.4.4) | 16 | 32 | Н/П |
Dolby Atmos (Наушники) | 17 (8.1.4.4) | 16 | 16 | Н/П |
Dolby Atmos (встроенные динамики) | 17 (8.1.4.4) | Н/П | 16 | Н/П |
DTS Headphone:X (наушники) | 17 (8.1.4.4) | 16 | 32 | Н/П |
DTS Ultra (встроенные динамики) | 17 (8.1.4.4) | Н/П | 32 | Н/П |
Windows Sonic для наушников | 17 (8.1.4.4) | 15 | 112 | 31 |
Приложения также должны учитывать следующие последствия ресурсов:
- служба хранилища/пропускная способность диска: линейное содержимое, предварительно созданное до 7.1.4, обычно больше 7,1 линейного содержимого (хотя перцептуальные кодеки уже используют преимущества корреляции каналов, чтобы сделать это гораздо менее 50 % более фактических каналов звуковых данных).
- Другие затраты на обработку цифровых сигналов: некоторые ранее глобальные эффекты теперь могут быть экземплярами для каждого динамического звукового объекта. Кроме того, некоторые создатели содержимого могут потребовать обновления некоторых эффектов DSP для поддержки дополнительных каналов или их уникального использования.
Подсказки пространственного звука и звука Майкрософт
Пространственный звук Майкрософт ориентирован на имитацию позиционирования звука на идеализированной сфере вокруг прослушивателя. Windows Sonic для наушников, DTS Headphone:X и Dolby Atmos реализуют сопоставление динамиков и виртуализацию на наушниках, но обратите внимание, что многие другие аспекты пространственного моделирования звука, которые уже реализованы в способах создателя контента, остаются на существующие механизмы. Создатели содержимого продолжают использовать существующие игровые инструменты и процессы, которые они ранее имели для таких пространственных сигналов, как Doppler, дистанцирование и фильтрация, окклюзии и препятствия, а также реверберации окружающей среды.
Дополнительные ресурсы
- Репозиторий GitHub для примеров пространственных звуков Майкрософт
- Dolby предлагает ряд ресурсов поддержки, связанных с Dolby Atmos и приложением Dolby Access по адресу https://developer.dolby.com.
Интерфейсы пространственного звука
Интерфейс | Description |
---|---|
ISpatialAudioClient | Позволяет клиенту создавать звуковые потоки, которые выдают звук из положения в трехмерном пространстве. |
ISpatialAudioObject | Представляет объект, предоставляющий звуковые данные для отрисовки из позиции в трехмерном пространстве относительно пользователя. |
ISpatialAudioObjectRenderStream | Предоставляет методы для управления потоком отрисовки пространственного звукового объекта, включая запуск, остановку и сброс потока. |
ISpatialAudioObjectRenderStreamNotify | Предоставляет уведомления для клиентов пространственного звука для реагирования на изменения состояния ISpatialAudioObjectRenderStream. |
Примечание.
При использовании интерфейсов ISpatialAudioClient в заголовке набора средств разработки Xbox One (XDK) необходимо сначала вызвать EnableSpatialAudio перед вызовом IMMDeviceEnumerator::EnumAudioEndpoints или IMMDeviceEnumerator::GetDefaultAudioEndpoint. Сбой этого приведет к ошибке E_NOINTERFACE, возвращаемой из вызова активации. EnableSpatialAudio доступен только для заголовков XDK и не требуется вызывать для универсальная платформа Windows приложений, работающих на Xbox One, или для любых устройств, отличных от Xbox One.
Пространственные звуковые структуры
Структура | Description |
---|---|
SpatialAudioObjectRenderStreamActivationParams | Представляет параметры активации для потока пространственной отрисовки звука. |
SpatialAudioClientActivationParams | Представляет необязательные параметры активации для потока пространственной отрисовки звука. |
Перечисления пространственных звуков
Перечисление | Description |
---|---|
AudioObjectType | Указывает тип ISpatialAudioObject. |