Compartilhar via


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

Nota

Esta documentação é direcionada para 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 indicações de áudio surround e 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. Objetos de áudio dinâmicos permitem emitir áudio de uma posição arbitrária no espaço, o que pode mudar ao longo do tempo. Você também pode especificar que objetos de áudio emitem 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 de Som Espacial da Microsoft; O áudio será apresentado a alto-falantes, fones de ouvido e receptores de home theater existentes sem a necessidade de alterações de código ou conteúdo. A plataforma dá suporte total à codificação do Dolby Atmos em tempo real para saída de fones de ouvido HDMI e estéreo, DTS:X para Fones de Ouvido e Codificação do Windows Sonic for Headphones para fones de ouvido estéreo. Por fim, os aplicativos do Microsoft Spatial Sound respeitam a política de combinação do sistema e seu áudio também será misturado com aplicativos não espacialmente conscientes. O suporte ao Som Espacial da Microsoft também é integrado ao Media Foundation; os aplicativos que usam a base de mídia podem reproduzir com êxito o conteúdo do Dolby Atmos sem nenhuma implementação adicional.

O som espacial com o Microsoft Spatial Sound dá suporte a TVs, home theaters e barras de som que dão suporte ao 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, o Dolby Atmos para Fones de Ouvido ou o Fone de Ouvido DTS:X.

Habilitando o Som Espacial da Microsoft

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

Windows

Em computadores Windows, isso é feito por meio da página de propriedades de um determinado dispositivo de saída de som. No painel de controle Sound, selecione um dispositivo de saída e clique propriedades do dispositivo. Na seção som espacial da página, se o dispositivo der suporte ao som espacial, você poderá selecionar um dos formatos disponíveis no formato de som espacial menu suspenso.

habilitar o som espacial no painel de controle de som

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

habilitar o som espacial da barra de tarefas

Xbox

No Xbox, os recursos de Som Espacial da Microsoft estão sempre disponíveis para o consumidor e são habilitados por meio do Aplicativo de Configurações em Geral –> Volume & saída de áudio.

O botão de áudio HDMI é preenchido com todos os formatos compatíveis com o Receptor de Vídeo de Áudio (AVR) ou a Barra de Som ou a 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 acima.

Captura de tela da página de configurações de Saída do Volume Geral & mostrando a lista suspensa de áudio HDMI.

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 estiver instalado

Captura de tela da página de configurações de Saída de & de Volume Geral mostrando a seleção do Surround Digital do DTS.

Selecione Dolby Atmos para Fones de Ouvido, Fone de Ouvido DTS:X ou Windows Sonic para Fones de Ouvido no formato Headset menu suspenso em de áudio do headset

Captura de tela da página de configurações de Saída do Volume Geral & mostrando o som espacial habilitante para fones de ouvido.

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

HoloLens 2

No HoloLens 2, o Microsoft Spatial Sound é habilitado por padrão e usa o descarregamento 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 uma parceria com vários desses provedores de soluções para implementar o Microsoft Spatial Sound em seus ambientes de criação existentes. Isso significará frequentemente que as APIs discutidas aqui são abstraídas da exibição do aplicativo; eles são encapsulados como plug-ins de DSP (processamento de sinal digital) que o aplicativo pode instanciar e que o implementador de áudio do aplicativo pode usar para se misturar a uma cama de canal de Som Espacial da Microsoft, submixar ou enviar vozes individuais para plug-ins de instância de objeto dinâmico, conforme desejado. Consulte o provedor de solução de middleware de áudio para obter o nível de suporte para o Microsoft Spatial Sound.

Microsoft Spatial Sound for Audio Renderers

Muitos renderizadores de áudio têm como alvo uma WASAPI (API de Sessão de Áudio) do Windows ponto de extremidade IAudioClient, em que o aplicativo alimenta buffers de dados de áudio mistos e em formato em um coletor de áudio WASAPI; os buffers entregues são consumidos para misturar 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. Ele dá suporte a objetos de som 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, Lateral Direito, Voltar à Esquerda, Voltar à Direita e Back Center; 1 canal de efeitos de baixa frequência; 4 canais acima do ouvinte; 4 canais abaixo do ouvinte). E dá suporte a objetos de som 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 cada buffer de áudio de cada objeto para que o sistema possa renderizá-lo.
  • Atualize as posições 3D dos objetos dinâmicos sob demanda – com a frequência (ou raramente) desejada pelo aplicativo.

Observe que o formato de saída atual (alto-falantes ou fones de ouvido; O 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 dinamizar com base no formato. Aplicativos que desejam que seu comportamento divergue 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 a ele. Há 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):

  • painéis 7.1.4 ede voz de domínio: renderizadores que já dão suporte a pontos de extremidade 7.1 podem optar por simplesmente adicionar suporte aos quatro canais de altura adicionais aos quais o ISpatialAudioClient cama de canal estático. Qualquer movimento panorâmico de canal que eles fizeram anteriormente (provavelmente já aproveitando coordenadas x,y, z) pode ser atualizado para incluir agora esses canais de altura. Isso geralmente oferece a menor interrupção nos fluxos de trabalho de áudio do renderizador e do aplicativo, sinal, fluxo e controle de combinação. Em fones de ouvido, observe que a combinação completa de aplicativos será espacializada, portanto, até mesmo 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 pontos de extremidade: seu ponto de extremidade WASAPI estéreo existente (para conteúdo "direto aos ouvidos" não destinado a ser espacializado) ao lado de um ISpatialAudioClient cama de canal estático que dá suporte a 7.1.4 (ou até mesmo até 8.1.4.4). É claro que o gerenciamento de interações entre duas misturas apresenta desafios adicionais aos 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.
  • Usar objetos de som dinâmicos para determinadas vozes ou submixes: oferecendo talvez o posicionamento mais detalhado/preciso, mas potencialmente criando opacidade de combinação, essa técnica envolve o uso ISpatialAudioClient objetos de som dinâmicos. Observe que os metadados e 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 de som dinâmicos disponíveis, o renderizador precisará considerar a implementação de técnicas de priorização – abate, co-localização de som, mesclagem à cama de canal estático e assim por diante. Os jogos têm usado frequentemente essa técnica para sons individuais de "herói", como um helicóptero que se moverá acima do ouvinte.

Os renderizadores também podem misturar e corresponder 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 do Dolby Atmos dão suporte a 32 objetos ativos totais (portanto, se uma cama de canal 7.1.4 estiver em uso, 20 objetos de som dinâmicos adicionais poderão estar ativos). O Windows Sonic for Headphones dá suporte a 128 objetos ativos totais, com o canal LFE (Efeitos de Baixa Frequência) 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 em execução nos consoles de jogos do Xbox One, o código 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 for Headphones) é executado em hardware sem custo de CPU.

A partir da atualização do sistema operacional Xbox 2303 e do Kit de Desenvolvimento de Jogos (GDK), os limites de recursos no Xbox são atualizados para os seguintes valores:

Formato Objetos estáticos máximos (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
Fone de ouvido DTS: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:

Formato Objetos estáticos máximos (cama de canal) Máximo de objetos dinâmicos
Windows
Máximo de objetos dinâmicos
HoloLens 2
Home theater do Dolby Atmos (HDMI) 12 (7.1.4) 20 N/A
DTS:X para home theater (HDMI) 17 (8.1.4.4) 32 N/A
Dolby Atmos (fones de ouvido) 17 (8.1.4.4) 128 N/A
Dolby Atmos (alto-falantes internos) 17 (8.1.4.4) 128 N/A
Fone de ouvido DTS:X (fones de ouvido) 17 (8.1.4.4) 128 N/A
DTS:X Ultra (alto-falantes internos) 17 (8.1.4.4) 128 N/A
Windows Sonic (Fones de Ouvido) 17 (8.1.4.4) 128 31

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

Formato Objetos estáticos máximos (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/A
DTS:X para home theater (HDMI) 17 (8.1.4.4) 16 32 N/A
Dolby Atmos (fones de ouvido) 17 (8.1.4.4) 16 16 N/A
Dolby Atmos (alto-falantes internos) 17 (8.1.4.4) N/A 16 N/A
Fone de ouvido DTS:X (fones de ouvido) 17 (8.1.4.4) 16 32 N/A
DTS Ultra (alto-falantes internos) 17 (8.1.4.4) N/A 32 N/A
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:

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

Indicações de espacialização de som e som espaciais da Microsoft

O Som Espacial da Microsoft está focado na simulação de posicionamento de som em uma esfera idealizada em torno do ouvinte. O Windows Sonic for Headphones, o DTS Headphone:X e o Dolby Atmos implementam o mapeamento e a virtualização do alto-falante 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 jogos existentes que já tiveram para indicações espaciais como Doppler, atenuação e filtragem baseadas em distância, oclusão e obstrução e reverberação ambiental.

Recursos adicionais

Interfaces de som espacial

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 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 responderem a alterações no estado de um ISpatialAudioObjectRenderStream.

 

Nota

Ao usar as interfaces ISpatialAudioClient em um título do XDK (Kit de Desenvolvimento do Xbox One), você deve primeiro chamar EnableSpatialAudio antes de chamar IMMDeviceEnumerator::EnumAudioEndpoints ou IMMDeviceEnumerator::GetDefaultAudioEndpoint. A falha ao fazer isso resultará em um erro de E_NOINTERFACE sendo 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 não Xbox One.

 

Estruturas de som 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 som espacial

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