Dela via


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

Not

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 Microsofts lösning på plattformsnivå för stöd för rumsligt ljud på Xbox, Windows och HoloLens 2, vilket möjliggör ljudsignaler för både surround och höjd (ovanför eller under lyssnaren). Rumsligt ljud kan användas av Windows Desktop-appar (Win32) samt UWP-appar (Universal Windows Platform) 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 kommer att presenteras för befintliga högtalare, hörlurar och hemmabiomottagare utan att behöva någon 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 principen för systemblandning, och deras ljud kommer också att blandas med icke-rumsligt medvetna appar. Stöd för Microsoft Spatial Sound är också integrerat i Media Foundation; appar som använder Media Foundation kan spela upp 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 hjälp av Windows Sonic för hörlurar, Dolby Atmos för hörlurar eller DTS Headphone:X.

Aktivera Microsoft Spatial Sound

Oavsett om det är som utvecklare eller konsument måste en användare aktivera Microsoft Spatial Sound på sin enhet för att kunna 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 inställningsappen under Allmänt –> Volym & ljudutdata.

Knappen HDMI-ljud fylls i med alla format som stöds av ljudvideomottagaren (AVR) eller Ljudfältet eller TV:n som är direkt ansluten till Xbox-konsolen. Alternativet "Optiskt ljud" är bara 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 för Hörlurar, DTS-hörlurar:X eller Windows Sonic för hörlurar i Headset-format listruta under Headset-ljud

Skärmbild av sidan Inställningar för allmänna volymer & utdata som visar det aktiverande rumsliga ljudet för hörlurar.

När Microsoft Spatial Sound inte är tillgängligt (till exempel vid uppspelning 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 är särskilt utformad för Windows Sonic för hörlurar.

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 är omslutna 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 som önskas. Kontakta din leverantör av mellanprogram för ljud mellanprogram för deras supportnivå för Microsoft Spatial Sound.

Microsoft Spatial Sound för ljudåtergivningar

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

Rumsliga Slutpunkter för Microsoft Spatial Sound implementeras som ISpatialAudioClient, som 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 Sound-integrering med ljudåtergivningar

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 kanalpanorering som de tidigare gjorde (troligen redan använder x,y, z-koordinater) kan uppdateras för att nu 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.
  • Underhålla befintlig slutpunkt, plus lägga till en 7.1.4 buss (och panners): Vissa titlar kan välja att underhålla två slutpunkter: deras befintliga stereo WASAPI-slutpunkt (för "direkt till öron" innehåll som inte är avsett att rumsligas) tillsammans med en ISpatialAudioClient statisk kanal säng 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 kanske den mest detaljerade/exakta positionering, men potentiellt skapar mixopacitet, innebär den här tekniken 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

I 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 Universella Windows Platform-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 Hemmabio, 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 (kanalbädd) Maximalt antal dynamiska objekt
Xbox Series X|S, UWP-appar & >=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 build 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 Versioner av Windows, Xbox och HoloLens gäller följande resursgränser.

Format Maximalt antal statiska objekt (kanalbädd) 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:

  • Storage/discbandbredd: 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 codecs redan ofta drar nytta av kanalkorrelation för att göra detta mycket mindre än de 50% mer faktiska kanaler med ljuddata)
  • 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 and Sound Spatialization Cues

Microsoft Spatial Sound fokuserar på simulering av ljudpositionering på en idealiserad sfär runt lyssnaren. Windows Sonic for Headphones, DTS Headphone:X och Dolby Atmos implementerar talarmappning och virtualisering till hörlurar, men observera att många andra aspekter av ljud spatial simulering, som redan vanligtvis implementeras på innehållsskaparaktiverade sätt, 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.

 

Not

När du använder ISpatialAudioClient-gränssnitt på en Xbox One Development Kit-titel (XDK) måste du först anropa EnableSpatialAudio innan du anropar IMMDeviceEnumerator::EnumAudioEndpoints eller IMMDeviceEnumerator::GetDefaultAudioEndpoint. Om du inte gör det uppstår ett E_NOINTERFACE fel som returneras från anropet till Aktivera. EnableSpatialAudio är endast tillgängligt för XDK-titlar och behöver inte anropas för Universella Windows Platform-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 ljuduppräkningar

Uppräkning Beskrivning
AudioObjectType Anger typen av en ISpatialAudioObject.