Condividi tramite


Suono spaziale per sviluppatori di app per Windows, Xbox e Hololens 2

Nota

Questa documentazione è destinata a un pubblico di sviluppatori. Per il supporto dell'utente finale per abilitare l'audio spaziale nel dispositivo, vedere Come attivare l'audio spaziale in Windows 10.

Microsoft Spatial Sound è la soluzione a livello di piattaforma di Microsoft per il supporto audio spaziale su Xbox, Windows e HoloLens 2, abilitando segnali audio sia di contorno che di elevazione (sopra o sotto il listener). L'audio spaziale può essere sfruttato dalle app desktop (Win32) Windows e dalle app Piattaforma UWP (Universal Windows Platform) su piattaforme supportate. Le API audio spaziali consentono agli sviluppatori di creare oggetti audio che emettono audio dalle posizioni nello spazio 3D. Gli oggetti audio dinamici consentono di generare audio da una posizione arbitraria nello spazio, che può cambiare nel tempo. È anche possibile specificare che gli oggetti audio generano suoni da uno dei 17 canali statici predefiniti (8.1.4.4) che possono rappresentare altoparlanti reali o virtualizzati. Il formato di output effettivo è selezionato dall'utente e può essere astratta dalle implementazioni di Microsoft Spatial Sound. L'audio verrà presentato agli altoparlanti, alle cuffie e ai ricevitori home theater senza dover apportare modifiche al codice o al contenuto. La piattaforma supporta completamente la codifica Dolby Atmos in tempo reale per l'output HDMI e per le cuffie stereo, DTS:X per le cuffie e la codifica di Windows Sonic per le cuffie stereo. Infine, le app Microsoft Spatial Sound rispettano i criteri di combinazione del sistema e anche l'audio verrà miscelato con le app non spatialmente consapevoli. Microsoft supporto di Spatial Sound è integrato anche in Media Foundation. Le app che usano media foundation possono riprodurre correttamente contenuti Dolby Atmos senza implementazioni aggiuntive.

Audio spaziale con Microsoft Spatial Sound supporta televisori, home theater e sound bar che supportano Dolby Atmos. Il suono spaziale può essere usato anche con qualsiasi coppia di cuffie che il consumatore possa possedere, con l'audio elaborato dalla piattaforma usando Windows Sonic per cuffie, Dolby Atmos per cuffie o DTS Headphone:X.

Abilitazione del suono spaziale Microsoft

Sia come sviluppatore che come consumer, un utente deve abilitare Microsoft Suono spaziale nel dispositivo per ascoltare il suono spazializzato.

Windows

In Windows PC, questa operazione viene eseguita tramite la pagina delle proprietà per un determinato dispositivo di output audio. Nel pannello di controllo Sound selezionare un dispositivo di output e fare clic su Proprietà dispositivo. Nella sezione Audio spaziale della pagina, se il dispositivo supporta il suono spaziale, è possibile selezionare uno dei formati disponibili dall'elenco a discesa formato audio spaziale.

abilitare l'audio spaziale nel pannello di controllo audio

È anche possibile abilitare Microsoft Suono spaziale facendo clic con il pulsante destro del mouse sull'icona Volume nella barra delle applicazioni.

abilitare l'audio spaziale dalla barra delle applicazioni

Xbox

Su Xbox, le funzionalità di Microsoft Spatial Sound sono sempre disponibili per l'utente e sono abilitate tramite le Impostazioni di Windows in Generale - Volume e output audio.

Il pulsante audio HDMI viene popolato con tutti i formati supportati dal ricevitore audio (AVR) o dalla soundbar o dalla TV collegata direttamente alla console Xbox. L'opzione "Audio ottico" è disponibile solo nelle console di Xbox precedenti e non in Xbox Series X|S e versioni successive.

Screenshot della pagina Impostazioni Generali Volume e Output che mostra il menu a tendina audio HDMI.

Si noti che selezionando le opzioni "Dolby Atmos per il home theater (solo HDMI)" o "DTS:X per home theater (solo HDMI)" nell'audio HDMI verrà richiesto all'utente di scaricare e installare le app Dolby Access o DTS Sound Unbound se non è già installato

Schermata della pagina di impostazioni generali del volume e dell'output che mostra la selezione di DTS Digital Surround.

Selezionare Dolby Atmos per Cuffie, DTS Headphone:X o Windows Sonic per Cuffie dal menu a discesa Formato cuffie sotto Headset audio

Screenshot della pagina Impostazioni Generali Volume e Output che mostra l'abilitazione del suono spaziale per le cuffie.

Quando Microsoft Spatial Sound non è disponibile (ad esempio, quando si riproduceno altoparlanti stereo portatili incorporati o se l'utente non ha abilitato esplicitamente Microsoft Spatial Sound per sopra), il numero di oggetti dinamici disponibili restituiti da ISpatialAudioClient::GetMaxDynamicObjectCount a un'applicazione sarà 0.

HoloLens 2

In HoloLens 2, Microsoft Spatial Sound è abilitato per impostazione predefinita e usa l'offload DSP hardware progettato appositamente per Windows Sonic per le cuffie.

Microsoft Spatial Sound e audio middleware

Molti sviluppatori di app e giochi usano soluzioni di motori di rendering audio di terze parti, che spesso includono strumenti sofisticati di produzione e verifica. Microsoft ha collaborato con diversi di questi provider di soluzioni per implementare Microsoft Spatial Sound negli ambienti di creazione esistenti. Ciò significa spesso che le API discusse qui sono astratte dall'interfaccia utente dell'app; sono incapsulate come plug-in di elaborazione del segnale digitale (DSP) di cui l'app può creare un'istanza e che l'implementatore audio dell'app può usare per mixare in un canale Microsoft Spatial Sound, submix o inviare voci singole a plug-in di istanze di oggetti dinamici secondo le necessità. Rivolgersi al provider di soluzioni middleware audio per il livello di supporto per Microsoft Spatial Sound.

Microsoft Suono Spaziale per Renderers Audio

Molti renderer audio sono destinati a un endpoint WASAPI (Audio Session API) Windows IAudioClient, in cui l'applicazione inserisce buffer di dati audio misti e conformi al formato a un sink audio WASAPI. I buffer recapitati vengono quindi utilizzati per la combinazione con altri client, elaborazione finale a livello di sistema e rendering.

Gli endpoint spaziali di Microsoft Spatial Sound sono implementati come ISpatialAudioClient, che presenta molte analogie con IAudioClient. Supporta oggetti audio statici che formano una base di canali, con supporto per un massimo di 8.1.4.4 canali (8 canali intorno all'ascoltatore – Sinistra, Destra, Centro, Lato Sinistro, Lato Destro, Dietro Sinistra, Dietro Destra e Dietro Centro; 1 canale per effetti a bassa frequenza; 4 canali sopra l'ascoltatore; 4 canali sotto l'ascoltatore). E supporta oggetti audio dinamici, che possono essere posizionati arbitrariamente nello spazio 3D.

Il modello di codifica di implementazione generale per ISpatialAudioClient è:

  • Creare oggetti audio statici e/o dinamici.
  • Inserire ogni fotogramma nel buffer audio di ogni oggetto in modo che il sistema possa eseguirne il rendering.
  • Aggiornare le posizioni 3D degli oggetti dinamici su richiesta, con la frequenza che desidera l'app.

Si noti che il formato di output corrente (altoparlanti o cuffie; Windows Sonic per cuffie, Dolby Atmos o DTS Headphone:X) è astratto dall'implementazione precedente: lo sviluppatore dell'app può concentrarsi sul suono spaziale senza doversi adattare in base al formato. Le app che desiderano che il comportamento divergano in base al formato di output possono eseguire query sul formato in uso, ma l'astrazione indica che un'app non è necessaria per gestire questi formati.

Integrazione del Suono Spaziale di Microsoft con i Renderer Audio

Poiché ISpatialAudioClient è un sink audio che utilizza i dati, un renderer audio offre diverse opzioni per l'interazione e la distribuzione di dati audio. Esistono tre tecniche di integrazione comunemente usate (e per i titoli che usano il middleware audio, è possibile che vengano visualizzati plug-in equivalenti resi disponibili in base a queste opzioni):

  • 7.1.4 panner e mastering vocale: i renderer che supportano già endpoint 7.1 possono scegliere di aggiungere semplicemente il supporto per i quattro canali di altezza aggiuntivi supportati dal ISpatialAudioClient letto canale statico. Qualsiasi panoramica del canale eseguita in precedenza (probabilmente già sfruttando le coordinate x,y, z) può essere aggiornata per includere ora questi canali di altezza. Questo offre spesso il minimo di interruzioni per il motore di rendering e i flussi di lavoro audio dell'applicazione, il segnale, il flusso e il controllo del mix. Con le cuffie, si noti che il mix completo dell'app sarà spazializzato, quindi anche la musica stereo può essere percepita come "esternata" dall'ascoltatore.
  • Mantenere l'endpoint esistente, oltre ad aggiungere un bus 7.1.4 (e panner): alcuni titoli possono scegliere di mantenere due endpoint: l'endpoint WASAPI stereo esistente (per il contenuto "diretto alle orecchie") insieme a un ISpatialAudioClient letto canale statico che supporta 7.1.4 (o anche fino a 8.1.4.4). Naturalmente, la gestione delle interazioni tra due combinazioni presenta sfide aggiuntive per gli autori di contenuti, anche se la sincronizzazione viene mantenuta, poiché le istanze WASAPI e ISAC attive in un determinato momento usano le stesse dimensioni del buffer e clock per l'elaborazione.
  • Usare oggetti audio dinamici per determinate voci o submixes: offrendo forse il posizionamento più dettagliato/accurato, ma potenzialmente creando opacità mix, questa tecnica prevede l'uso di ISpatialAudioClient oggetti audio dinamici. Si noti che i metadati e il buffer audio vengono recapitati al renderer, quindi questi suoni saranno opachi per il resto della combinazione di app. Inoltre, poiché sono disponibili un numero limitato di oggetti audio dinamici disponibili, il renderer dovrà prendere in considerazione l'implementazione di tecniche di definizione delle priorità: culling, co-location audio, fusione al letto del canale statico e così via. I giochi hanno usato spesso questa tecnica per i singoli suoni "eroe", ad esempio un elicottero che si muoverà sopra il listener.

I renderer possono anche combinare e trovare una corrispondenza tra questi approcci.

Implicazioni delle risorse del runtime audio spaziale di Microsoft

In Windows e Xbox, il numero di voci disponibili varia in base al formato in uso. I formati Dolby Atmos supportano 32 oggetti attivi totali (quindi se è in uso un letto di canale 7.1.4, possono essere attivi 20 oggetti audio dinamici aggiuntivi). Windows Sonic for Headphones supporta gli 128 oggetti attivi totali, con il canale LFE (Low Frequency Effects) che non viene effettivamente conteggiato come oggetto; quindi, quando è in uso una configurazione di canali 8.1.4.4, possono essere attivi 112 oggetti audio dinamici.

Per piattaforma UWP (Universal Windows Platform) app in esecuzione su console di gioco Xbox One, la codifica in tempo reale (per Dolby Atmos per Home Theater, Dolby Atmos per cuffie, DTS:X per Home Theater, DTS Headphone:X e Windows Sonic for Headphones) viene eseguita in hardware senza costi di CPU.

A partire da 2303 Xbox aggiornamento del sistema operativo e Game Development Kit (GDK), i limiti delle risorse per Xbox vengono aggiornati ai valori seguenti:

Formato Oggetti Statici Massimi (Letto del Canale) Oggetti Dinamici Massimi
Xbox Series X|S, app UWP e >=2303 GDK
Oggetti Dinamici Massimi
Xbox Series X|S, XDK & <2303 GDK
Oggetti Dinamici Massimi
Xbox One
Dolby Atmos per Cinema Domestico (HDMI) 12 (7.1.4) 20 20 20
DTS:X per Home Theater (HDMI) 17 (8.1.4.4) 20 20 16
Dolby Atmos (cuffie) 17 (8.1.4.4) 128 20 16
DTS Headphone:X (Cuffie) 17 (8.1.4.4) 200 20 16
Windows Sonic (cuffie) 17 (8.1.4.4) 220 20 15

A partire dalla versione di manutenzione di maggio per Windows build 22621, i limiti delle risorse per Windows vengono aggiornati ai valori seguenti:

Formato Oggetti Statici Massimi (Letto del Canale) Max Oggetti Dinamici
Windows
Max Oggetti Dinamici
HoloLens 2
Dolby Atmos home theater (HDMI) 12 (7.1.4) 20 N/D
DTS:X per home theater (HDMI) 17 (8.1.4.4) 32 N/D
Dolby Atmos (cuffie) 17 (8.1.4.4) 128 N/D
Dolby Atmos (altoparlanti incorporati ) 17 (8.1.4.4) 128 N/D
DTS Headphone:X (Cuffie) 17 (8.1.4.4) 128 N/D
DTS:X Ultra (altoparlanti incorporati) 17 (8.1.4.4) 128 N/D
Windows Sonic (cuffie) 17 (8.1.4.4) 128 31

Per le versioni precedenti di Windows, Xbox e HoloLens, si applicano i limiti delle risorse seguenti.

Formato Oggetti Statici Massimi (Letto del Canale) Oggetti Dinamici Massimi
Xbox One
Oggetti Dinamici Massimi
Windows
Oggetti Dinamici Massimi
HoloLens 2
Dolby Atmos per home theater (HDMI) 12 (7.1.4) 20 20 N/D
DTS:X per impianto home theater (HDMI) 17 (8.1.4.4) 16 32 Non Disponibile
Dolby Atmos (cuffie) 17 (8.1.4.4) 16 16 N/D
Dolby Atmos (altoparlanti incorporati) 17 (8.1.4.4) N/D 16 Non Disponibile
DTS Headphone:X (Cuffie) 17 (8.1.4.4) 16 32 Non Disponibile
DTS Ultra (altoparlanti incorporati) 17 (8.1.4.4) N/D 32 Non Applicabile
Windows Sonic per le cuffie 17 (8.1.4.4) 15 112 31

Le app devono considerare anche le implicazioni delle risorse seguenti:

  • larghezza di banda di archiviazione/disco: Il contenuto lineare preautorato per 7.1.4 sarà tipicamente più grande del contenuto lineare a 7.1, anche se i codec percettivi spesso sfruttano la correlazione dei canali per ridurre significativamente questa differenza, rendendola molto inferiore al 50% in più rispetto ai canali effettivi di dati audio.
  • Altri costi di elaborazione dei segnali digitali: alcuni effetti precedentemente globali possono ora diventare istanze per ogni oggetto sonoro dinamico. Inoltre, alcuni creatori di contenuti potrebbero voler aggiornare alcuni effetti DSP per supportare canali aggiuntivi o usarli in modo univoco.

Microsoft suono spaziale e segnali di spazializzazione audio

Microsoft Spatial Sound è incentrato sulla simulazione del posizionamento del suono su una sfera idealizzata intorno al listener. Windows Sonic per cuffie, DTS Headphone:X e Dolby Atmos implementano il mapping e la virtualizzazione degli altoparlanti alle cuffie, ma si noti che molti altri aspetti della simulazione spaziale del suono, già implementati in genere in modi abilitati per creatore di contenuti, vengono lasciati ai motori esistenti. I creatori di contenuti continuano a usare gli strumenti e i processi di gioco esistenti che in precedenza avevano per segnali spaziali come Doppler, attenuazione basata sulla distanza e filtro, occlusione e ostruzione e riverbero ambientale.

Risorse aggiuntive

  • repository GitHub degli esempi di Microsoft Spatial Sound
  • Dolby offre una serie di risorse di supporto relative a Dolby Atmos e all'app Dolby Access, tra cui la Knowledge Base per lo sviluppo di app e il supporto per Dolby Access .

Interfacce audio spaziali

Interfaccia Descrizione
ISpatialAudioClient Consente a un client di creare flussi audio che generano audio da una posizione nello spazio 3D.
ISpatialAudioObject Rappresenta un oggetto che fornisce dati audio di cui eseguire il rendering da una posizione nello spazio 3D rispetto all'utente.
ISpatialAudioObjectRenderStream Fornisce metodi per controllare un flusso di rendering di un oggetto audio spaziale, inclusi l'avvio, l'arresto e la reimpostazione del flusso.
ISpatialAudioObjectRenderStreamNotify Fornisce notifiche per i client audio spaziali per rispondere alle modifiche nello stato di un ISpatialAudioObjectRenderStream.

 

Nota

Quando si usano le interfacce ISpatialAudioClient su un titolo Xbox One Development Kit (XDK), è necessario prima chiamare EnableSpatialAudio prima di chiamare IMMDeviceEnumerator::EnumAudioEndpoints o IMMDeviceEnumerator::GetDefaultAudioEndpoint. In caso contrario, la chiamata a Activate restituirà un errore E_NOINTERFACE. EnableSpatialAudio è disponibile solo per i titoli XDK e non deve essere chiamato per le app piattaforma UWP (Universal Windows Platform) in esecuzione in Xbox One, né per i dispositivi non Xbox One.

 

Strutture del suono spaziali

Struttura Descrizione
SpatialAudioObjectRenderStreamActivationParams Rappresenta i parametri di attivazione per un flusso di rendering audio spaziale.
SpatialAudioClientActivationParams Rappresenta i parametri di attivazione facoltativi per un flusso di rendering audio spaziale.

 

Enumerazioni audio spaziali

Enumerazione Descrizione
AudioObjectType Specifica il tipo di ISpatialAudioObject.