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 degli utenti finali per l'abilitazione del suono spaziale nel dispositivo, vedi Come attivare il suono 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 sia segnali audio surround che di elevazione (sopra o sotto il listener). Il suono spaziale può essere sfruttato dalle app desktop di Windows (Win32) e dalle app piattaforma UWP (Universal Windows Platform) (UWP) nelle 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 estratto 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 delle cuffie HDMI e stereo, DTS:X per le cuffie e la codifica Windows Sonic per cuffie per le cuffie stereo. Infine, le app Microsoft Spatial Sound rispettano i criteri di combinazione del sistema e anche l'audio verrà misto con app non con riconoscimento spaziale. Il supporto di Microsoft 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 consumer può possedere, con audio sottoposto a rendering dalla piattaforma usando Windows Sonic per cuffie, Dolby Atmos per le cuffie o DTS Headphone:X.

Abilitazione di Microsoft Spatial Sound

Sia come sviluppatore che come consumer, un utente deve abilitare Microsoft Spatial Sound sul proprio dispositivo per ascoltare suoni spazializzati.

Finestre

Nei PC Windows questa operazione viene eseguita tramite la pagina delle proprietà per un determinato dispositivo di output audio. Nel pannello di controllo Suono 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.

enable spatial sound in the sound control panel

È anche possibile abilitare Microsoft Spatial Sound facendo clic con il pulsante destro del mouse sull'icona Volume sulla barra delle applicazioni.

enable spatial sound from the taskbar

Xbox

Su Xbox, le funzionalità Audio spaziale Microsoft sono sempre disponibili per il consumer e sono abilitate tramite l'app Impostazioni 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 Xbox precedenti e non in Xbox Series X|S e versioni successive.

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

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

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

Selezionare Dolby Atmos per Cuffie, DTS Headset:X o Windows Sonic per cuffie dall'elenco a discesa Formato visore vr in Visore audio

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

Quando Microsoft Spatial Sound non è disponibile (ad esempio, quando si gioca a 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 cuffie.

Middleware audio e audio spaziale Microsoft

Molti sviluppatori di app e giochi usano soluzioni del motore di rendering audio di terze parti, che spesso includono strumenti sofisticati di creazione e controllo. 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 descritte di seguito sono astratte dalla visualizzazione dell'app; vengono incapsulati come plug-in DSP (Digital Signal Processing) di cui l'app può creare un'istanza e che l'implementatore audio dell'app può usare per combinare un letto del canale Audio spaziale Microsoft, submix o inviare singole voci ai plug-in dell'istanza dell'oggetto dinamico in base alle esigenze. Rivolgersi al provider di soluzioni middleware audio per il livello di supporto per Microsoft Spatial Sound.

Suono spaziale Microsoft per renderer audio

Molti renderer audio sono destinati a un endpoint IAudioClient (WASAPI) dell'API sessione audio di Windows, 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, l'elaborazione finale a livello di sistema e il rendering.

Gli endpoint spaziali di Microsoft Spatial Sound vengono implementati come ISpatialAudioClient, che presenta molte analogie con IAudioClient. Supporta oggetti audio statici che formano un lettore di canali, con supporto per un massimo di 8.1.4.4 canali (8 canali intorno al listener – Left, Right, Center, Side Left, Side Right, Back Left, Back Right e Back Center; 1 canale con effetti a bassa frequenza; 4 canali sopra il listener; 4 canali sotto il listener). 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( o raramente) come desidera l'app.

Si noti che il formato di output corrente (altoparlanti o cuffie; Windows Sonic per cuffie, Dolby Atmos o DTS Headphone:X) è astratta dall'implementazione precedente. Lo sviluppatore dell'app può concentrarsi sul suono spaziale senza dover pivot 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 Microsoft con 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 voce mastering: i renderer che supportano già endpoint 7.1 possono scegliere di aggiungere semplicemente il supporto per i quattro canali di altezza aggiuntivi supportati dal letto di canale statico ISpatialAudioClient . 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 minor numero di interruzioni per renderer e flussi di lavoro audio dell'app, segnale, flusso e controllo mix. Sopra le cuffie, si noti che il mix completo dell'app sarà spazializzato, quindi anche la musica stereo può essere percepita come "esternata" dal listener.
  • 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" non destinato a essere spazializzato) insieme a un letto di canale statico ISpatialAudioClient 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.
  • Usa oggetti audio dinamici per determinate voci o submix: offrendo forse il posizionamento più dettagliato/accurato, ma potenzialmente creando opacità mix, questa tecnica prevede l'uso di oggetti audio dinamici ISpatialAudioClient . 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 di Runtime del suono spaziale 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 per cuffie supporta 128 oggetti attivi totali, con il canale LFE (Low Frequency Effects) non viene effettivamente conteggiato come oggetto , quindi quando un letto di canale 8.1.4.4 è in uso, possono essere attivi 112 oggetti audio dinamici.

Per le app piattaforma UWP (Universal Windows Platform) 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 per cuffie) viene eseguita in hardware senza costi di CPU.

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

Formatta Max Static Objects (Channel Bed) Max Dynamic Objects
Xbox Series X|S, app UWP & >=2303 GDK
Max Dynamic Objects
Xbox Series X|S, XDK & <2303 GDK
Max Dynamic Objects
Xbox One
Dolby Atmos per Home Theater (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 a Windows build 22621, i limiti delle risorse in Windows vengono aggiornati ai valori seguenti:

Formatta Max Static Objects (Channel Bed) Max Dynamic Objects
Finestre
Max Dynamic Objects
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.

Formatta Max Static Objects (Channel Bed) Max Dynamic Objects
Xbox One
Max Dynamic Objects
Finestre
Max Dynamic Objects
HoloLens 2
Dolby Atmos per home theater (HDMI) 12 (7.1.4) 20 20 N/D
DTS:X per home theater (HDMI) 17 (8.1.4.4) 16 32 N/D
Dolby Atmos (cuffie) 17 (8.1.4.4) 16 16 N/D
Dolby Atmos (altoparlanti incorporati) 17 (8.1.4.4) N/D 16 N/D
DTS Headphone:X (Cuffie) 17 (8.1.4.4) 16 32 N/D
DTS Ultra (altoparlanti incorporati) 17 (8.1.4.4) N/D 32 N/D
Windows Sonic per cuffie 17 (8.1.4.4) 15 112 31

Le app devono considerare anche le implicazioni delle risorse seguenti:

  • Larghezza di banda Archiviazione/disco: il contenuto lineare preautorato su 7.1.4 in genere sarà maggiore di 7,1 contenuto lineare (anche se i codec percettivi spesso sfruttano la correlazione del canale per rendere questo molto meno del 50% più canali effettivi dei dati audio)
  • Altri costi di elaborazione dei segnali digitali: alcuni effetti globali precedenti possono ora diventare istanze per ogni oggetto audio dinamico. Inoltre, alcuni creatori di contenuti potrebbero voler aggiornare alcuni effetti DSP per supportare canali aggiuntivi o usarli in modo univoco.

Segnali di spazializzazione audio e audio Microsoft

Microsoft Spatial Sound è incentrato sulla simulazione di posizionamento audio su una sfera idealizzata intorno al listener. Windows Sonic per cuffie, DTS Headphone:X e Dolby Atmos implementano il mapping degli altoparlanti e la virtualizzazione alle cuffie, ma si noti che molti altri aspetti della simulazione spaziale del suono, già implementati in genere nei 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

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 usi le interfacce ISpatialAudioClient su un titolo di Xbox One Development Kit (XDK), devi prima chiamare EnableSpatialAudio prima di chiamare IMMDeviceEnumerator::EnumAudioEndpoints o IMMDeviceEnumerator::GetDefaultAudioEndpoint. In caso contrario, verrà generato un errore E_NOINTERFACE restituito dalla chiamata a Activate. EnableSpatialAudio è disponibile solo per i titoli XDK e non deve essere chiamato per le app piattaforma UWP (Universal Windows Platform) in esecuzione su Xbox One, né per i dispositivi non Xbox One.

 

Strutture audio 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.