Partilhar via


Som Espacial para programadores de aplicações para Windows, Xbox e Hololens 2

Observação

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

O Microsoft Spatial Sound é a solução a nível de plataforma da Microsoft para suporte a som espacial na Xbox, Windows e HoloLens 2, permitindo tanto sinais surround como de elevação (acima ou abaixo do ouvinte). O som espacial pode ser aproveitado por aplicações de ambiente de trabalho Windows (Win32), bem como por aplicações da Plataforma Universal do Windows (UWP) em plataformas suportadas. As APIs de som espacial permitem que os desenvolvedores criem objetos de áudio que emitem áudio a partir de posições no espaço 3D. Os objetos de áudio dinâmicos permitem-lhe emitir áudio a partir de uma posição arbitrária no espaço, que pode mudar ao longo do tempo. Você também pode especificar que os 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 utilizador e pode ser abstraído das implementações do Microsoft Spatial Sound; o áudio será apresentado a colunas, auscultadores e recetores de cinema em casa existentes sem necessidade de alterações de código ou conteúdo. A plataforma suporta totalmente a codificação Dolby Atmos em tempo real tanto para saída HDMI como estéreo, DTS:X para auscultadores e codificação Windows Sonic para auscultadores estéreo. Por fim, as aplicações Microsoft Spatial Sound cumprem a política de mistura do sistema, e o seu áudio também será misturado com aplicações não com consciência espacial. O suporte ao Microsoft Spatial Sound também está integrado no Media Foundation; as aplicações que utilizam o Media Foundation conseguem reproduzir conteúdos Dolby Atmos sem implementação adicional.

O som espacial com o Microsoft Spatial Sound suporta TVs, sistemas de cinema em casa e barras de som que suportam Dolby Atmos. O som espacial também pode ser usado com qualquer par de headphones que o consumidor possua, com áudio renderizado pela plataforma usando Windows Sonic for Headphones, Dolby Atmos for Headphones ou DTS Headphone:X.

Ativação do Microsoft Spatial Sound

Quer seja como programador ou consumidor, o utilizador deve ativar o Microsoft Spatial Sound no seu dispositivo para ouvir som espacializado.

Windows

Nos PCs Windows, isto é feito através 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 em propriedades do dispositivo. Na secção Som Espacial da página, se o dispositivo suportar som espacial, pode selecionar um dos formatos disponíveis a partir do menu pendente Formato de Som Espacial.

ativar o som espacial no painel de controle de som

Também pode ativar Microsoft Som Espacial clicando com o botão direito no ícone Volume na barra de tarefas.

ativar o som espacial na barra de tarefas

Xbox

No Xbox, as capacidades do Som Espacial da Microsoft estão sempre disponíveis para o consumidor, sendo ativadas nas Definições do Windows em Geral e >Volume e saída de áudio.

O botão de áudio HDMI está preenchido com todos os formatos suportados pelo Recetor de Áudio e Vídeo (AVR), barra de som ou pela TV que está diretamente ligada à sua consola Xbox. A opção "Áudio ótico" está disponível apenas em consolas Xbox mais antigas e não na Xbox Series X|S e versões superiores.

Captura de tela da página Configurações gerais de volume & saída 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 Configurações gerais de volume & saída mostrando a seleção de DTS Digital Surround.

Selecione Dolby Atmos para Headphones, DTS Headphone:X ou Windows Sonic para Headphones no menu pendente formato Headset sob Áudio para auscultadores

Captura de ecrã da página de definições de Volume Geral & Saída, mostrando a ativação de som espacial para auscultadores.

Quando o Microsoft Spatial Sound não está disponível (por exemplo, ao reproduzir em colunas estéreo integradas de um portátil, ou se o utilizador não tiver ativado explicitamente o Microsoft Spatial Sound mencionado acima), o número de objetos dinâmicos disponíveis devolvidos por ISpatialAudioClient::GetMaxDynamicObjectCount para uma aplicação será 0.

HoloLens 2

No HoloLens 2, o Microsoft Spatial Sound está ativado por defeito e utiliza offload DSP de hardware concebido especificamente para Windows Sonic para auscultadores.

Middleware Espacial de Som e Áudio 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 parcerias com vários destes fornecedores de soluções para implementar o Microsoft Spatial Sound nos seus ambientes de autoria existentes. Isto significa frequentemente que as APIs aqui discutidas são abstraídas da perspetiva da aplicação; são encapsulados como plug-ins de processamento digital de sinal (DSP) que a aplicação pode instanciar, e que o implementador de áudio da aplicação pode usar para misturar para um leito de canal Microsoft Spatial Sound, submisturar ou enviar vozes individuais para plug-ins de instância dinâmica de objetos conforme desejado. Consulte o seu fornecedor de soluções de middleware de áudio para saber o nível de suporte deles para o Microsoft Spatial Sound.

Microsoft Spatial Sound para Renderizadores de Áudio

Muitos renderizadores de áudio visam um endpoint Windows Audio Session API (WASAPI) IAudioClient, onde a aplicação alimenta buffers de dados de áudio misturados e conformes com formato para um sumidouro de áudio WASAPI; os buffers entregues são então consumidos para mistura com outros clientes, processamento final ao nível do sistema e renderização.

Os endpoints espaciais do Microsoft Spatial Sound são implementados como ISpatialAudioClient, que tem muitas semelhanças com IAudioClient. Ele suporta objetos de som estáticos que formam um leito de canais, com suporte para até 8.1.4.4 canais (8 canais ao redor do ouvinte – Esquerda, Direita, Centro, Lado Esquerdo, Lado Direito, Traseira Esquerda, Traseira Direita e Centro Traseiro; 1 canal de efeitos de baixa frequência; 4 canais acima do ouvinte; 4 canais abaixo do ouvinte). E suporta objetos dinâmicos sonoros, 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 em 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 com pouca frequência) que o aplicativo desejar.

Tenha em atenção que o formato de saída atual (altifalantes ou auscultadores; Windows Sonic for Headphones, Dolby Atmos ou DTS Headphone:X) é abstraído da implementação acima – o programador da aplicação pode concentrar-se no som espacial sem precisar de ajustar com base no formato. As aplicações que desejam que o seu comportamento divirja com base no formato de saída podem consultar o formato em uso, mas a abstração significa que uma aplicação não tem de lidar com esses formatos.

Integração do Som Espacial da Microsoft com os 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. 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):

  • 7.1.4 panners e masterização de áudio: 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 canais estática do ISpatialAudioClient suporta. Qualquer panorâmica de canal que eles fizeram anteriormente (provavelmente já aproveitando as coordenadas x, y, z) pode ser atualizada 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 mistura. Com fones de ouvido, observe que o mix completo da aplicação será espacializado – portanto, até mesmo música estéreo pode ser percebida como fora do ouvinte.
  • Manter o endpoint existente, além de adicionar um barramento 7.1.4 (e panners): Alguns títulos podem optar por manter dois endpoints: o seu endpoint estéreo WASAPI existente (para conteúdo "diretamente para os ouvidos" não destinado a ser espacializado) ao lado de um leito de canal estático ISpatialAudioClient que suporta 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 submixes: Oferecendo talvez o posicionamento mais detalhado/preciso, mas potencialmente criando opacidade de mistura, esta técnica envolve o uso de ISpatialAudioClient objetos de som dinâmicos. Observe que os metadados mais o buffer de áudio são entregues ao renderizador, portanto, esses sons serão opacos para o resto da mistura 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, colocalização de som, mistura com o leito de canal estático e assim por diante. Os jogos têm usado frequentemente esta técnica para sons individuais de "heróis", como um helicóptero que se moverá acima do ouvinte.

Os renderizadores também podem combinar entre essas abordagens.

Implicações dos Recursos de Tempo de Execução do Microsoft Spatial Sound

No Windows e Xbox, o número de vozes disponíveis varia consoante o formato utilizado. Os formatos Dolby Atmos suportam um total de 32 objetos ativos (portanto, se uma cama de 7.1.4 canais estiver em uso, 20 objetos de som dinâmicos adicionais podem estar ativos). O Windows Sonic for Headphones suporta 128 objetos ativos no total, sendo que o canal de Efeitos de Baixa Frequência (LFE) não é realmente contabilizado como objeto — por isso, quando uma cama de canal 8.1.4.4 está em uso, 112 objetos sonoros dinâmicos podem estar ativos.

Para aplicações da Plataforma Universal do Windows a correr em consolas Xbox One, a codificação em tempo real (para Dolby Atmos para Home Theater, Dolby Atmos para auscultadores, DTS:X para Home Theater, DTS Headphone:X e Windows Sonic para auscultadores) é realizada em hardware sem custo de CPU.

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

Formato Objetos estáticos máximos (Leito de canal) Max Objetos Dinâmicos
Xbox Series X|S, aplicações UWP & =2303 GDK
Max Objetos Dinâmicos
Xbox Series X|S, XDK & 2303 GDK
Max Objetos Dinâmicos
Xbox One
Dolby Atmos para cinema em casa (HDMI) 12 (7.1.4) 20 20 20
DTS:X para cinema em casa (HDMI) 17 (8.1.4.4) 20 20 16
Dolby Atmos (Auscultadores) 17 (8.1.4.4) 128 20 16
DTS Headphone:X (fone de ouvido) 17 (8.1.4.4) 200 20 16
Windows Sonic (Auscultadores) 17 (8.1.4.4) 220 20 15

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

Formato Objetos estáticos máximos (Leito de canal) Max Objetos Dinâmicos
Windows
Max Objetos Dinâmicos
HoloLens 2
Cinema em casa Dolby Atmos (HDMI) 12 (7.1.4) 20 N/A
DTS:X para cinema em casa (HDMI) 17 (8.1.4.4) 32 N/A
Dolby Atmos (Auscultadores) 17 (8.1.4.4) 128 N/A
Dolby Atmos (alto-falantes embutidos) 17 (8.1.4.4) 128 N/A
DTS Headphone:X (fone de ouvido) 17 (8.1.4.4) 128 N/A
DTS:X Ultra (alto-falantes integrados) 17 (8.1.4.4) 128 N/A
Windows Sonic (Auscultadores) 17 (8.1.4.4) 128 31

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

Formato Objetos estáticos máximos (Leito de canal) Max Objetos Dinâmicos
Xbox One
Max Objetos Dinâmicos
Windows
Max Objetos Dinâmicos
HoloLens 2
Dolby Atmos para cinema em casa (HDMI) 12 (7.1.4) 20 20 N/A
DTS:X para cinema em casa (HDMI) 17 (8.1.4.4) 16 32 N/A
Dolby Atmos (Auscultadores) 17 (8.1.4.4) 16 16 N/A
Dolby Atmos (colunas incorporadas) 17 (8.1.4.4) N/A 16 N/A
DTS Headphone:X (Fone de ouvido) 17 (8.1.4.4) 16 32 N/A
DTS Ultra (alto-falantes integrados) 17 (8.1.4.4) N/A 32 N/A
Windows Sonic para auscultadores 17 (8.1.4.4) 15 112 31

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

  • Armazenamento/ largura de banda do disco: O conteúdo linear pré-autorizado para 7.1.4 normalmente será maior do que o conteúdo linear 7.1 (embora os codecs percetivos muitas vezes já aproveitem a correlação de canais para torná-lo muito menos do que o acréscimo de 50% em relação ao número de canais reais de dados de áudio)
  • Outros custos de processamento de sinal digital: Alguns efeitos anteriormente globais podem agora ser instanciados por objeto de som dinâmico. Além disso, alguns criadores de conteúdo podem querer atualizar alguns efeitos DSP para suportar canais adicionais ou usá-los exclusivamente.

Som Espacial Microsoft e Indícios de Espacialização Sonora

O Microsoft Spatial Sound foca-se na simulação de posicionamento sonoro numa esfera idealizada em torno do ouvinte. Windows Sonic para Auscultadores, DTS Headphone:X e Dolby Atmos implementam mapeamento de altifalantes e virtualização para auscultadores, mas note-se que muitos outros aspetos da simulação espacial sonora, já tipicamente implementados de forma habilitada por criadores de conteúdo, são deixados para os motores existentes. Os criadores de conteúdo continuam a usar as ferramentas e processos de jogo existentes 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 de som espacial

Interface Descrição
ISpatialAudioClient Permite que um cliente crie fluxos de áudio que emitem áudio a partir 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 num título do Xbox One Development Kit (XDK), deve primeiro ligar para EnableSpatialAudio antes de chamar IMMDeviceEnumerator::EnumAudioEndpoints ou IMMDeviceEnumerator:: GetDefaultAudioEndpoint. Se isso não for feito, a chamada para Ativar retornará um erro E_NOINTERFACE. EnableSpatialAudio está disponível apenas para títulos XDK, e não precisa de ser chamada para aplicações Plataforma Universal do Windows a correr em Xbox One, nem para quaisquer dispositivos não 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 som espacial

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