Som espacial para desenvolvedores de aplicativos para Windows, Xbox e Hololens 2

Observação

Esta documentação destina-se a um público de desenvolvedores. Para obter suporte ao usuário final para habilitar o som espacial em seu dispositivo, consulte Como ativar o som espacial no Windows 10.

O Microsoft Spatial Sound é a solução de nível de plataforma da Microsoft para suporte a som espacial no Xbox, Windows e HoloLens 2, permitindo pistas de áudio surround e de elevação (acima ou abaixo do ouvinte). O som espacial pode ser aproveitado por aplicativos da área de trabalho do Windows (Win32), bem como aplicativos da Plataforma Universal do Windows (UWP) em plataformas com suporte. As APIs de som espacial permitem que os desenvolvedores criem objetos de áudio que emitem áudio de posições no espaço 3D. Os objetos de áudio dinâmicos permitem que você emita áudio de uma posição arbitrária no espaço, que pode mudar com o tempo. Você também pode especificar que os objetos de áudio emitam som de um dos 17 canais estáticos predefinidos (8.1.4.4) que podem representar alto-falantes reais ou virtualizados. O formato de saída real é selecionado pelo usuário e pode ser abstraído das implementações do Microsoft Spatial Sound; O áudio será apresentado aos alto-falantes, fones de ouvido e receptores de home theater existentes sem a necessidade de qualquer alteração de código ou conteúdo. A plataforma suporta totalmente a codificação Dolby Atmos em tempo real para saída HDMI e fone de ouvido estéreo, DTS:X para fones de ouvido e codificação Windows Sonic para fones de ouvido estéreo. Finalmente, os aplicativos Microsoft Spatial Sound cumprem a política de mixagem do sistema, e seu áudio também será misturado com aplicativos sem reconhecimento espacial. O suporte ao Microsoft Spatial Sound também está integrado ao Media Foundation; aplicativos que usam o media foundation podem reproduzir conteúdo Dolby Atmos com êxito sem implementação adicional.

O som espacial com o Microsoft Spatial Sound suporta TVs, home theaters e barras de som compatíveis com Dolby Atmos. O som espacial também pode ser usado com qualquer par de fones de ouvido que o consumidor possa possuir, com áudio renderizado pela plataforma usando o Windows Sonic para fones de ouvido, Dolby Atmos para fones de ouvido ou DTS Headphone:X.

Habilitando o Microsoft Spatial Sound

Seja como desenvolvedor ou consumidor, um usuário deve habilitar o Microsoft Spatial Sound em seu dispositivo para ouvir som espacializado.

Windows

Em PCs Windows, isso é feito por meio da página de propriedades de um determinado dispositivo de saída de som. No painel de controle Som, selecione um dispositivo de saída e clique em Propriedades do dispositivo. Na seção Som espacial da página, se o dispositivo oferecer suporte a som espacial, você poderá selecionar um dos formatos disponíveis na lista suspensa Formato de som espacial.

enable spatial sound in the sound control panel

Você também pode habilitar o Microsoft Spatial Sound clicando com o botão direito do mouse no ícone Volume na barra de tarefas.

enable spatial sound from the taskbar

Xbox

No Xbox, os recursos do Microsoft Spatial Sound estão sempre disponíveis para o consumidor e são habilitados por meio do aplicativo Configurações em Geral -> Volume e saída de áudio.

O botão de áudio HDMI é preenchido com todos os formatos suportados pelo Receptor de Áudio e Vídeo (AVR) ou pela Soundbar ou pela TV que está diretamente conectada ao console Xbox. A opção "Áudio óptico" só está disponível em consoles Xbox mais antigos e não no Xbox Series X|S e superior.

Screenshot of the General Volume & Output settings page showing the HDMI audio dropdown.

Observe que selecionar as opções "Dolby Atmos para home theater (somente HDMI)" ou "DTS:X para home theater (somente HDMI)" no áudio HDMI solicitará que o usuário baixe e instale aplicativos Dolby Access ou DTS Sound Unbound, se ainda não estiverem instalados

Screenshot of the General Volume & Output settings page showing the selection of DTS Digital Surround.

Selecione Dolby Atmos para fones de ouvido, DTS Headphone:X ou Windows Sonic para fones de ouvido na lista suspensa Formato do fone de ouvido em Áudio do fone de ouvido

Screenshot of the General Volume & Output settings page showing the enabling spatial sound for headphones.

Quando o Microsoft Spatial Sound não estiver disponível (por exemplo, ao reproduzir em alto-falantes estéreo de laptop incorporados ou se o usuário não tiver habilitado explicitamente o Microsoft Spatial Sound por cima), o número de objetos dinâmicos disponíveis retornados por ISpatialAudioClient::GetMaxDynamicObjectCount para um aplicativo será 0.

HoloLens 2

No HoloLens 2, o Microsoft Spatial Sound é habilitado por padrão e usa o descarregamento de DSP de hardware projetado especificamente para o Windows Sonic para fones de ouvido.

Middleware de áudio e som espacial da Microsoft

Muitos desenvolvedores de aplicativos e jogos usam soluções de mecanismo de renderização de áudio de terceiros, que geralmente incluem ferramentas sofisticadas de criação e audição. A Microsoft fez parceria com vários desses provedores de soluções para implementar o Microsoft Spatial Sound em seus ambientes de criação existentes. Isso frequentemente significa que as APIs discutidas aqui são abstraídas da exibição do aplicativo; eles são encapsulados como plug-ins de processamento de sinal digital (DSP) que o aplicativo pode instanciar e que o implementador de áudio do aplicativo pode usar para misturar a uma cama de canal do Microsoft Spatial Sound, submixar ou enviar vozes individuais para plug-ins de instância de objeto dinâmico, conforme desejado. Consulte seu provedor de soluções de middleware de áudio para obter o nível de suporte para o Microsoft Spatial Sound.

Som espacial da Microsoft para renderizadores de áudio

Muitos renderizadores de áudio têm como alvo um ponto de extremidade IAudioClient da API de Sessão de Áudio do Windows (WASAPI), onde o aplicativo alimenta buffers de dados de áudio misturados e conformes com o formato para um coletor de áudio WASAPI, os buffers entregues são consumidos para mixagem com outros clientes, processamento final no nível do sistema e renderização.

Os pontos de extremidade espaciais do Microsoft Spatial Sound são implementados como ISpatialAudioClient, que tem muitas semelhanças com IAudioClient. Suporta objetos sonoros estáticos formando uma cama de canal, com suporte para até 8.1.4.4 canais (8 canais ao redor do ouvinte – Esquerda, Direita, Centro, Lado Esquerdo, Lado Direito, Costas Esquerda, Volta Direita e Volta Centro; 1 canal de efeitos de baixa frequência; 4 canais acima do ouvinte; 4 canais abaixo do ouvinte). E suporta objetos sonoros dinâmicos , que podem ser posicionados arbitrariamente no espaço 3D.

O padrão de codificação de implementação geral para ISpatialAudioClient é:

  • Crie objetos de áudio estáticos e/ou dinâmicos.
  • Alimente o buffer de áudio de cada objeto a cada quadro para que o sistema possa renderizá-lo.
  • Atualize as posições 3D dos objetos dinâmicos sob demanda – com a frequência (ou infrequência) que o aplicativo desejar.

Observe que o formato de saída atual (alto-falantes ou fones de ouvido; Windows Sonic for Headphones, Dolby Atmos ou DTS Headphone:X) é abstraído da implementação acima – o desenvolvedor do aplicativo pode se concentrar no som espacial sem precisar girar com base no formato. Os aplicativos que desejam que seu comportamento divirja com base no formato de saída podem consultar o formato em uso, mas a abstração significa que um aplicativo não é necessário para lidar com esses formatos.

Integração de som espacial da Microsoft com renderizadores de áudio

Como ISpatialAudioClient é um coletor de áudio que consome dados, um renderizador de áudio tem várias opções de como interagir e entregar dados de áudio para ele. Existem três técnicas de integração comumente usadas (e para títulos que usam middleware de áudio, você pode ver plug-ins equivalentes disponibilizados com base nessas opções):

  • 7.1.4 Panorâmicas e masterização de voz: Os renderizadores que já suportam pontos de extremidade 7.1 podem optar por simplesmente adicionar suporte para os quatro canais de altura adicionais que a cama de canal estático ISpatialAudioClient suporta. Qualquer movimento panorâmico de canal que eles fizeram anteriormente (provavelmente já aproveitando as coordenadas x,y, z) pode ser atualizado para agora incluir esses canais de altura. Isso geralmente oferece o mínimo de interrupção para os fluxos de trabalho de áudio do renderizador e do aplicativo, sinal, fluxo e controle de mixagem. Sobre fones de ouvido, observe que a mistura completa do aplicativo será espacializada – portanto, até mesmo a música estéreo pode ser percebida como "externalizada" do ouvinte.
  • Manter o ponto de extremidade existente, além de adicionar um barramento 7.1.4 (e panners): Alguns títulos podem optar por manter dois endpoints: seu endpoint WASAPI estéreo existente (para conteúdo "direto para ouvidos" que não deve ser espacializado) ao lado de uma cama de canal estático ISpatialAudioClient com suporte para 7.1.4 (ou até mesmo 8.1.4.4). É claro que o gerenciamento de interações entre duas misturas apresenta desafios adicionais para os criadores de conteúdo, embora a sincronização seja mantida, já que as instâncias WASAPI e ISAC ativas em um determinado momento usam o mesmo tamanho de buffer e relógio para processamento.
  • Use objetos de som dinâmicos para determinadas vozes ou submixagens: Oferecendo talvez o posicionamento mais detalhado/preciso, mas potencialmente criando opacidade de mixagem, essa técnica envolve o uso de objetos de som dinâmico ISpatialAudioClient . Observe que os metadados mais o buffer de áudio são entregues ao renderizador, portanto, esses sons serão opacos para o restante da combinação de aplicativos. Além disso, como há um número limitado de objetos sonoros dinâmicos disponíveis, o renderizador precisará considerar a implementação de técnicas de priorização – abate, co-localização de som, mistura ao leito de canal estático e assim por diante. Os jogos têm usado frequentemente essa técnica para sons individuais de "heróis", como um helicóptero que se moverá acima do ouvinte.

Os renderizadores também podem misturar e combinar entre essas abordagens.

Implicações de recursos do Microsoft Spatial Sound Runtime

No Windows e no Xbox, o número de vozes disponíveis varia de acordo com o formato em uso. Os formatos Dolby Atmos suportam 32 objetos ativos totais (portanto, se uma cama de canal 7.1.4 estiver em uso, 20 objetos de som dinâmicos adicionais podem estar ativos). O Windows Sonic for Headphones oferece suporte a 128 objetos ativos no total, com o canal LFE (Low Frequency Effects) não sendo realmente contado como um objeto -- portanto, quando uma cama de canal 8.1.4.4 está em uso, 112 objetos de som dinâmicos podem estar ativos.

Para aplicativos da Plataforma Universal do Windows executados em consoles de jogos Xbox One, a codificação em tempo real (para Dolby Atmos para Home Theater, Dolby Atmos para fones de ouvido, DTS:X para Home Theater, DTS Headphone:X e Windows Sonic para fones de ouvido) é realizada em hardware sem custo de CPU.

A partir da atualização do 2303 Xbox OS e do Game Development Kit (GDK), os limites de recursos no Xbox são atualizados para os seguintes valores:

Formatar Max Objetos Estáticos (Cama de Canal) Máximo de objetos dinâmicos
Xbox Series X|S, aplicativos UWP & >=2303 GDK
Máximo de objetos dinâmicos
Xbox Series X|S, XDK & <2303 GDK
Máximo de objetos dinâmicos
Xbox One
Dolby Atmos para Home Theater (HDMI) 12 (7.1.4) 20 20 20
DTS:X para Home Theater (HDMI) 17 (8.1.4.4) 20 20 16
Dolby Atmos (Fones de ouvido) 17 (8.1.4.4) 128 20 16
DTS Headphone: X (fones de ouvido) 17 (8.1.4.4) 200 20 16
Windows Sonic (Fones de ouvido) 17 (8.1.4.4) 220 20 15

A partir da versão de manutenção de maio para o Windows build 22621, os limites de recursos no Windows são atualizados para os seguintes valores:

Formatar Max Objetos Estáticos (Cama de Canal) Máximo de objetos dinâmicos
Windows
Máximo de objetos dinâmicos
HoloLens 2
Home theater Dolby Atmos (HDMI) 12 (7.1.4) 20 N/D
DTS:X para home theater (HDMI) 17 (8.1.4.4) 32 N/D
Dolby Atmos (Fones de ouvido) 17 (8.1.4.4) 128 N/D
Dolby Atmos (alto-falantes embutidos) 17 (8.1.4.4) 128 N/D
DTS Headphone: X (fones de ouvido) 17 (8.1.4.4) 128 N/D
DTS:X Ultra (alto-falantes integrados) 17 (8.1.4.4) 128 N/D
Windows Sonic (Fones de ouvido) 17 (8.1.4.4) 128 31

Para versões anteriores do Windows, Xbox e HoloLens, os seguintes limites de recursos se aplicam.

Formatar Max Objetos Estáticos (Cama de Canal) Máximo de objetos dinâmicos
Xbox One
Máximo de objetos dinâmicos
Windows
Máximo de objetos dinâmicos
HoloLens 2
Dolby Atmos para home theater (HDMI) 12 (7.1.4) 20 20 N/D
DTS:X para home theater (HDMI) 17 (8.1.4.4) 16 32 N/D
Dolby Atmos (Fones de ouvido) 17 (8.1.4.4) 16 16 N/D
Dolby Atmos (alto-falantes embutidos) 17 (8.1.4.4) N/D 16 N/D
DTS Headphone: X (fones de ouvido) 17 (8.1.4.4) 16 32 N/D
DTS Ultra (alto-falantes integrados) 17 (8.1.4.4) N/D 32 N/D
Windows Sonic para Fones de Ouvido 17 (8.1.4.4) 15 112 31

Os aplicativos também devem considerar as seguintes implicações de recursos:

  • Largura de banda de armazenamento/disco: O conteúdo linear pré-criado para a versão 7.1.4 normalmente será maior do que o conteúdo linear da versão 7.1 (embora os codecs perceptivos já aproveitem a correlação de canais para fazer isso muito menos do que os 50% mais canais reais de dados de áudio)
  • Outros custos de processamento de sinal digital: Alguns efeitos anteriormente globais podem agora tornar-se instâncias por objeto de som dinâmico. Além disso, alguns criadores de conteúdo podem desejar atualizar alguns efeitos DSP para oferecer suporte a canais adicionais ou usá-los exclusivamente.

Dicas de espacialização de som e som da Microsoft

O Microsoft Spatial Sound é focado na simulação do posicionamento do som em uma esfera idealizada ao redor do ouvinte. O Windows Sonic para fones de ouvido, o DTS Headphone:X e o Dolby Atmos implementam o mapeamento e a virtualização de alto-falantes para fones de ouvido, mas observe que muitos outros aspectos da simulação espacial de som, já normalmente implementados de maneiras habilitadas para criadores de conteúdo, são deixados para os mecanismos existentes. Os criadores de conteúdo continuam a usar as ferramentas e processos de jogo existentes que já tiveram anteriormente para pistas espaciais como Doppler, atenuação e filtragem baseadas em distância, oclusão e obstrução e reverberação ambiental.

Recursos adicionais

Interfaces Sonoras Espaciais

Interface Descrição
ISpatialAudioClient Permite que um cliente crie fluxos de áudio que emitem áudio de uma posição no espaço 3D.
ISpatialAudioObject Representa um objeto que fornece dados de áudio a serem renderizados a partir de uma posição no espaço 3D, em relação ao usuário.
ISpatialAudioObjectRenderStream Fornece métodos para controlar um fluxo de renderização de objeto de áudio espacial, incluindo iniciar, parar e redefinir o fluxo.
ISpatialAudioObjectRenderStreamNotify Fornece notificações para clientes de áudio espacial para responder a alterações no estado de um ISpatialAudioObjectRenderStream.

 

Observação

Ao usar as interfaces ISpatialAudioClient em um título do Xbox One Development Kit (XDK), você deve primeiro chamar EnableSpatialAudio antes de chamar IMMDeviceEnumerator::EnumAudioEndpoints ou IMMDeviceEnumerator::GetDefaultAudioEndpoint. Se isso não for feito, um erro de E_NOINTERFACE será retornado da chamada para Ativar. EnableSpatialAudio só está disponível para títulos XDK e não precisa ser chamado para aplicativos da Plataforma Universal do Windows em execução no Xbox One, nem para dispositivos que não sejam do Xbox One.

 

Estruturas Sonoras Espaciais

Estrutura Descrição
SpatialAudioObjectRenderStreamActivationParams Representa parâmetros de ativação para um fluxo de renderização de áudio espacial.
SpatialAudioClientActivationParams Representa parâmetros de ativação opcionais para um fluxo de renderização de áudio espacial.

 

Enumerações de sons espaciais

Enumeração Descrição
AudioObjectType Especifica o tipo de um ISpatialAudioObject.