Spatial Sound för apputvecklare för Windows, Xbox och Hololens 2

Anmärkning

Den här dokumentationen riktar sig till en utvecklare. Slutanvändarstöd för att aktivera rumsligt ljud på enheten finns i Så här aktiverar du rumsligt ljud i Windows 10.

Microsoft Spatial Sound är Microsoft plattformsnivå för rumsligt ljudstöd på Xbox, Windows och HoloLens 2, vilket möjliggör både surround- och höjdupphöjning (ovanför eller under lyssnarens) ljudsignaler. Rumsligt ljud kan användas av Windows desktop-appar (Win32) samt Universal Windows Platform (UWP) appar på plattformar som stöds. Api:erna för rumsligt ljud gör det möjligt för utvecklare att skapa ljudobjekt som avger ljud från positioner i 3D-utrymme. Med dynamiska ljudobjekt kan du avge ljud från en godtycklig position i rymden, vilket kan ändras med tiden. Du kan också ange att ljudobjekt avger ljud från en av 17 fördefinierade statiska kanaler (8.1.4.4) som kan representera verkliga eller virtualiserade högtalare. Det faktiska utdataformatet väljs av användaren och kan abstraheras från Microsoft Spatial Sound-implementeringar. Ljud visas för befintliga högtalare, hörlurar och hemmabiomottagare utan att behöva några kod- eller innehållsändringar. Plattformen har fullt stöd för Dolby Atmos-kodning i realtid för både HDMI- och stereohörlursutdata, DTS:X för hörlurar och Windows Sonic for Headphones-kodning för stereohörlurar. Slutligen följer Microsoft Spatial Sound-appar systemblandningsprincipen, och deras ljud blandas också med icke-rumsligt medvetna appar. Microsoft Spatial Sound-stöd är också integrerat i Media Foundation. Appar som använder Media Foundation kan framgångsrikt spela Dolby Atmos-innehåll utan ytterligare implementering.

Rumsligt ljud med Microsoft Spatial Sound har stöd för TV-apparater, hemmabio och ljudbarer som stöder Dolby Atmos. Rumsligt ljud kan också användas med valfritt par hörlurar som konsumenten kan äga, med ljud som återges av plattformen med Windows Sonic för hörlurar, Dolby Atmos för hörlurar eller DTS Headphone:X.

Aktivera Microsoft spatialt ljud

Oavsett om det är som utvecklare eller konsument måste en användare aktivera Microsoft Spatial Sound på sin enhet för att höra rumsligt ljud.

Windows

På Windows datorer görs detta via egenskapssidan för en viss ljudutdataenhet. På kontrollpanelen Sound väljer du en utdataenhet och klickar på Enhetsegenskaper. I avsnittet Spatial Sound på sidan kan du, om enheten stöder rumsligt ljud, välja något av de tillgängliga formaten i listrutan Spatial-ljudformatet.

aktivera rumsligt ljud i ljudkontrollpanelen

Du kan också aktivera Microsoft Spatial Sound genom att högerklicka på ikonen Volume i aktivitetsfältet.

aktivera rumsligt ljud från aktivitetsfältet

Xbox

På Xbox är Microsoft Spatial Sound-funktioner alltid tillgängliga för konsumenten och aktiveras via Windows Inställningar under Allmänt -> Volym- och ljudutdata.

HDMI-ljudknappen fylls i med alla format som stöds av ljudvideomottagaren (AVR), soundbar eller TV som är direkt anslutna till din Xbox. Alternativet "Optiskt ljud" är endast tillgängligt på äldre Xbox-konsoler och inte på Xbox Series X|S och senare.

Skärmbild av sidan Allmänna inställningar för volym & utdata som visar listrutan för HDMI-ljud.

Observera att om du väljer alternativen "Dolby Atmos för hemmabio (endast HDMI)" eller "DTS:X för hemmabio (endast HDMI)" i HDMI-ljud uppmanas användaren att ladda ned och installera Dolby Access- eller DTS Sound Unbound-appar om de inte redan är installerade

Skärmbild av sidan Allmänna inställningar för volym &-utdata som visar valet av DTS Digital Surround.

Välj Dolby Atmos for Headphones, DTS Headphone:X eller Windows Sonic for Headphones från listrutan Headset under Headset audio

Skärmbild av sidan Inställningar för allmänna volymer och utdata som visar möjligheten att aktivera rumsligt ljud för hörlurar.

När Microsoft Spatial Sound inte är tillgängligt (till exempel när du spelar till inbäddade stereohögtalare för bärbara datorer, eller om användaren inte uttryckligen har aktiverat Microsoft Spatial Sound per ovan), kommer antalet tillgängliga dynamiska objekt som returneras av ISpatialAudioClient::GetMaxDynamicObjectCount till ett program att vara 0.

HoloLens 2

På HoloLens 2 är Microsoft Spatial Sound aktiverat som standard och använder DSP-avlastning för maskinvara som utformats särskilt för Windows Sonic for Headphones.

Microsoft Spatial Sound and Audio Middleware

Många app- och spelutvecklare använder tredjepartslösningar för ljudrenderingsmotor, som ofta innehåller avancerade redigerings- och auditionverktyg. Microsoft har samarbetat med flera av dessa lösningsleverantörer för att implementera Microsoft Spatial Sound i sina befintliga redigeringsmiljöer. Detta innebär ofta att DE API:er som beskrivs här abstraheras från appens vy. de omsluts som DSP-plugin-program (Digital Signal Processing) som appen kan instansiera och som appens ljudimplementerare kan använda för att blanda till en Microsoft Spatial Sound-kanalbädd, undermix eller skicka enskilda röster till plugin-program för dynamisk objektinstans efter behov. Kontakta din leverantör av ljudmellanprogram för att höra om deras stöd för Microsoft Spatial Sound.

Microsoft Spatial Sound för ljudåtergivningar

Många ljudåtergivningar riktar in sig på en Windows API för ljudsession (WASAPI) IAudioClient slutpunkt, där programmet matar buffertar med blandade och formatkonforma ljuddata till en WASAPI-ljudmottagare. De levererade buffertarna förbrukas sedan för blandning med andra klienter, slutlig bearbetning på systemnivå och rendering.

Microsoft Spatial Sound-slutpunkter implementeras som ISpatialAudioClient, vilket har många likheter med IAudioClient. Den stöder statiska ljudobjekt som bildar en kanalbädd, med stöd för upp till 8.1.4.4 kanaler (8 kanaler runt lyssnaren – vänster, höger, mitten, vänster sida, sida höger, bakåt vänster, bakåt höger och bakåt center; 1 lågfrekvent effektkanal; 4 kanaler ovanför lyssnaren; 4 kanaler under lyssnaren). Och den stöder dynamiska ljudobjekt, som godtyckligt kan placeras i 3D-utrymme.

Det allmänna implementeringskodningsmönstret för ISpatialAudioClient är:

  • Skapa statiska och/eller dynamiska ljudobjekt.
  • Mata in varje objekts ljudbuffert varje bildruta så att systemet kan återge den.
  • Uppdatera dynamiska objekts 3D-positioner på begäran – så ofta (eller sällan) som appen vill.

Observera att det aktuella utdataformatet (högtalare eller hörlurar; Windows Sonic for Headphones, Dolby Atmos eller DTS Headphone:X) är abstrakt från implementeringen ovan – apputvecklaren kan fokusera på rumsligt ljud utan att behöva pivotera baserat på format. Appar som vill att deras beteende ska skilja sig åt baserat på utdataformat kan köra frågor mot det format som används, men abstraktionen innebär att en app inte krävs för att hantera dessa format.

Microsoft spatial ljudintegrering med ljudrenderare

Eftersom ISpatialAudioClient är en ljudmottagare som förbrukar data, har en ljudåtergivning flera alternativ för hur man interagerar med och levererar ljuddata till den. Det finns tre vanliga integreringstekniker (och för titlar som använder ljudmellanprogram kan motsvarande plugin-program göras tillgängliga baserat på dessa alternativ):

  • 7.1.4 panners och mastering voice: Renderare som redan stöder 7.1-slutpunkter kan välja att helt enkelt lägga till stöd för de fyra ytterligare höjdkanalerna som ISpatialAudioClient statisk kanalbädd stöder. Alla kanalpanoreringar som de tidigare har gjort (som troligen redan använder x, y, z-koordinater) kan nu uppdateras för att inkludera dessa höjdkanaler. Detta ger ofta minst avbrott i renderarens och appens ljudarbetsflöden, signal, flöde och mixkontroll. Observera att hela appmixen kommer att rumsligas över hörlurar – så även stereomusik kan uppfattas som "externaliserad" från lyssnaren.
  • Bibehåll befintlig endpunkt, plus lägg till en 7.1.4 buss (och pannor): Vissa titlar kan välja att bibehålla två endpunkter: deras befintliga stereo WASAPI-endpunkt (för "direkt till öron" innehåll som inte är avsett för spatialisering) tillsammans med en ISpatialAudioClient statisk kanalbädd som stöder 7.1.4 (eller till och med upp till 8.1.4.4). Att hantera interaktioner mellan två blandningar innebär naturligtvis ytterligare utmaningar för innehållsskapare, även om synkroniseringen bibehålls, eftersom både WASAPI- och ISAC-instanser som är aktiva vid en viss tidpunkt använder samma buffertstorlek och klocka för bearbetning.
  • Använd dynamiska ljudobjekt för vissa röster eller undermixer: Erbjuder möjligen den mest detaljerade och exakta positioneringen, men kan potentiellt skapa opacitet i mixen, innebär denna teknik att använda ISpatialAudioClient dynamiska ljudobjekt. Observera att metadata plus ljudbuffert levereras till renderaren, så dessa ljud blir ogenomskinliga för resten av appmixen. Eftersom det finns ett begränsat antal tillgängliga dynamiska ljudobjekt måste återgivningsverktyget överväga att implementera prioriteringstekniker – gallring, ljudsamplacering, blandning till den statiska kanalbädden och så vidare. Spel har ofta använt denna teknik för enskilda "hjälte" ljud, till exempel en helikopter som kommer att röra sig ovanför lyssnaren.

Renderare kan också blanda och matcha mellan dessa metoder.

resurskonsekvenser för Microsoft Spatial Sound Runtime

På Windows och Xbox varierar antalet tillgängliga röster beroende på vilket format som används. Dolby Atmos-format stöder totalt 32 aktiva objekt (så om en 7.1.4-kanalsbädd används kan ytterligare 20 dynamiska ljudobjekt vara aktiva). Windows Sonic for Headphones stöder totalt 128 aktiva objekt, där LFE-kanalen (Low Frequency Effects) faktiskt inte räknas som ett objekt , så när en 8.1.4.4-kanalsbädd används kan 112 dynamiska ljudobjekt vara aktiva.

För Universell Windows-plattform appar som körs på Xbox One spelkonsoler utförs realtidskodning (för Dolby Atmos for Home Theater, Dolby Atmos for Headphones, DTS:X för Home Theater, DTS Headphone:X och Windows Sonic for Headphones) i maskinvara utan CPU-kostnad.

Från och med 2303 Xbox OS-uppdateringen och Game Development Kit (GDK) uppdateras resursgränserna för Xbox till följande värden:

Format Maximalt antal statiska objekt (kanalbotten) Maximalt antal dynamiska objekt
Xbox Series X|S, UWP-appar och >=2303 GDK
Maximalt antal dynamiska objekt
Xbox Series X|S, XDK & 2303 GDK
Maximalt antal dynamiska objekt
Xbox One
Dolby Atmos för Hemmabio (HDMI) 12 (7.1.4) 20 20 20
DTS:X för Hemmabio (HDMI) 17 (8.1.4.4) 20 20 16
Dolby Atmos (hörlurar) 17 (8.1.4.4) 128 20 16
DTS-hörlurar:X (hörlurar) 17 (8.1.4.4) 200 20 16
Windows Sonic (hörlurar) 17 (8.1.4.4) 220 20 15

Från och med maj-serviceversionen till Windows version 22621 uppdateras resursgränserna för Windows till följande värden:

Format Maximalt antal statiska objekt (kanalbädd) Maximalt antal dynamiska objekt
Windows
Maximalt antal dynamiska objekt
HoloLens 2
Dolby Atmos hemmabio (HDMI) 12 (7.1.4) 20 Ej tillämpligt
DTS:X för hemmabio (HDMI) 17 (8.1.4.4) 32 Ej tillämpligt
Dolby Atmos (hörlurar) 17 (8.1.4.4) 128 Ej tillämpligt
Dolby Atmos (inbyggda talare ) 17 (8.1.4.4) 128 Ej tillämpligt
DTS-hörlurar:X (hörlurar) 17 (8.1.4.4) 128 Ej tillämpligt
DTS:X Ultra (inbyggda högtalare) 17 (8.1.4.4) 128 Ej tillämpligt
Windows Sonic (hörlurar) 17 (8.1.4.4) 128 31

För tidigare Windows, Xbox och HoloLens versioner gäller följande resursgränser.

Format Maximalt antal statiska objekt (kanalbotten) Maximalt antal dynamiska objekt
Xbox One
Maximalt antal dynamiska objekt
Windows
Maximalt antal dynamiska objekt
HoloLens 2
Dolby Atmos för hemmabio (HDMI) 12 (7.1.4) 20 20 Ej tillämpligt
DTS:X för hemmabio (HDMI) 17 (8.1.4.4) 16 32 Ej tillämpligt
Dolby Atmos (hörlurar) 17 (8.1.4.4) 16 16 Ej tillämpligt
Dolby Atmos (inbyggda talare) 17 (8.1.4.4) Ej tillämpligt 16 Ej tillämpligt
DTS-hörlurar:X (hörlurar) 17 (8.1.4.4) 16 32 Ej tillämpligt
DTS Ultra (inbyggda högtalare) 17 (8.1.4.4) Ej tillämpligt 32 Ej tillämpligt
Windows Sonic för hörlurar 17 (8.1.4.4) 15 112 31

Appar bör också överväga följande resurskonsekvenser:

  • Lagring/disc-bandbredd: Linjärt innehåll som är författat till 7.1.4 är vanligtvis större än 7.1 linjärt innehåll (även om perceptuella codec redan ofta drar nytta av kanalkorrelation för att det ska bli betydligt mindre än 50 % fler faktiska ljuddatakanaler)
  • Andra kostnader för digital signalbearbetning: Vissa tidigare globala effekter kan nu instanseras per dynamiskt ljudobjekt. Dessutom kanske vissa innehållsskapare vill uppdatera vissa DSP-effekter för att stödja ytterligare kanaler eller använda dem unikt.

Microsoft Spatial Sound och ljudrymdsbildningsledtrådar

Microsoft Spatial Sound fokuserar på ljudpositioneringssimulering på en idealiserad sfär runt lyssnaren. Windows Sonic for Headphones, DTS Headphone:X och Dolby Atmos implementerar högtalarkartläggning och virtualisering till hörlurar, men observera att många andra aspekter av ljudrumsimulering, som redan vanligtvis genomförs på sätt aktiverade av innehållsskapare, lämnas till befintliga motorer. Innehållsskapare fortsätter att använda de befintliga spelverktyg och processer som de tidigare har haft för sådana rumsliga signaler som Doppler, avståndsbaserad dämpning och filtrering, ocklusion och obstruktion och miljöåterklang.

Ytterligare resurser

Rumsliga ljudgränssnitt

Gränssnitt Beskrivning
ISpatialAudioClient Gör att en klient kan skapa ljudströmmar som avger ljud från en position i 3D-utrymme.
ISpatialAudioObject Representerar ett objekt som tillhandahåller ljuddata som ska återges från en position i 3D-utrymme i förhållande till användaren.
ISpatialAudioObjectRenderStream Innehåller metoder för att styra en spatial ljudobjektåtergivningsström, inklusive start, stopp och återställning av strömmen.
ISpatialAudioObjectRenderStreamNotify Tillhandahåller meddelanden för rumsliga ljudklienter som svarar på ändringar i tillståndet för en ISpatialAudioObjectRenderStream.

 

Obs

När du använder gränssnitten ISpatialAudioClient på en Xbox One Development Kit-titel (XDK). du måste först anropa EnableSpatialAudio innan du anropar IMMDeviceEnumerator::EnumAudioEndpoints eller IMMDeviceEnumerator:: GetDefaultAudioEndpoint. Om du inte gör det kommer ett E_NOINTERFACE-fel att returneras från anropet till Aktivera. EnableSpatialAudio är endast tillgängligt för XDK-titlar och behöver inte anropas för Universell Windows-plattform appar som körs på Xbox One eller för andra enheter än Xbox One.

 

Rumsliga ljudstrukturer

Struktur Beskrivning
SpatialAudioObjectRenderStreamActivationParams Representerar aktiveringsparametrar för en spatial ljudåtergivningsström.
SpatialAudioClientActivationParams Representerar valfria aktiveringsparametrar för en spatial ljudåtergivningsström.

 

Rumsliga ljudkategoriseringar

Uppräkning Beskrivning
AudioObjectType Anger typen av en ISpatialAudioObject.