Spatial Sound voor app-ontwikkelaars voor Windows, Xbox en Hololens 2
Notitie
Deze documentatie is bedoeld voor een doelgroep voor ontwikkelaars. Zie Ruimtelijk geluid inschakelen in Windows 10voor ondersteuning van eindgebruikers voor het inschakelen van ruimtelijk geluid op uw apparaat.
Microsoft Spatial Sound is de platformniveauoplossing van Microsoft voor ondersteuning voor ruimtelijk geluid op Xbox, Windows en HoloLens 2, waardoor zowel surround- als uitbreidingsgeluiden (boven of onder de listener) mogelijk zijn. Ruimtelijk geluid kan worden gebruikt door Windows-bureaublad-apps (Win32) en UWP-apps (Universal Windows Platform) op ondersteunde platforms. Met de API's voor ruimtelijk geluid kunnen ontwikkelaars audioobjecten maken die audio uit posities in 3D-ruimte verzenden. Met dynamische audioobjecten kunt u audio verzenden vanaf een willekeurige positie in de ruimte, die na verloop van tijd kan veranderen. U kunt ook opgeven dat audioobjecten geluid verzenden van een van de 17 vooraf gedefinieerde statische kanalen (8.1.4.4) die echte of gevirtualiseerde luidsprekers kunnen vertegenwoordigen. De werkelijke uitvoerindeling wordt door de gebruiker geselecteerd en kan worden geabstraheerd van Microsoft Spatial Sound-implementaties; audio wordt gepresenteerd aan bestaande luidsprekers, hoofdtelefoons en ontvangers van het thuistheater zonder dat er code of inhoudswijzigingen nodig zijn. Het platform biedt volledige ondersteuning voor realtime Dolby Atmos-codering voor zowel HDMI- als stereohoofdtelefoonuitgang, DTS:X voor Hoofdtelefoons en Windows Sonic for Headphones-codering voor stereohoofdtelefoons. Ten slotte houden Microsoft Spatial Sound-apps zich aan het systeemmixbeleid en worden hun audio ook gecombineerd met niet-ruimtelijk bewuste apps. Microsoft Spatial Sound-ondersteuning is ook geïntegreerd in Media Foundation; apps die gebruikmaken van media foundation kunnen Dolby Atmos-inhoud zonder extra implementatie afspelen.
Ruimtelijk geluid met Microsoft Spatial Sound ondersteunt tv's, thuistheaters en geluidsbalken die Dolby Atmos ondersteunen. Ruimtelijk geluid kan ook worden gebruikt met elk paar hoofdtelefoons waarvan de consument eigenaar kan zijn, met audio die door het platform wordt weergegeven met behulp van Windows Sonic for Headphones, Dolby Atmos voor Hoofdtelefoons of DTS Headphone:X.
Microsoft Spatial Sound inschakelen
Of een gebruiker nu een ontwikkelaar of consument is, moet een gebruiker Microsoft Spatial Sound op het apparaat inschakelen om ruimtelijk geluid te kunnen horen.
Ramen
Op Windows-pc's wordt dit gedaan via de eigenschappenpagina voor een bepaald geluidsuitvoerapparaat. Selecteer een uitvoerapparaat in het configuratiescherm van Sound en klik op Apparaateigenschappen. In het gedeelte Ruimtelijk geluid van de pagina, als het apparaat ruimtelijk geluid ondersteunt, kunt u een van de beschikbare indelingen selecteren in de ruimtelijke geluidsindeling vervolgkeuzelijst.
U kunt Microsoft Spatial Sound ook inschakelen door met de rechtermuisknop op het pictogram Volume op de taakbalk te klikken.
Xbox
Op Xbox zijn microsoft Spatial Sound-mogelijkheden altijd beschikbaar voor de consument en worden deze ingeschakeld via de instellingen-app onder Algemeen -> Volume & audio-uitvoer.
De HDMI-audioknop is gevuld met alle indelingen die worden ondersteund door de Audio Video Receiver (AVR) of Soundbar of de tv die rechtstreeks is aangesloten op uw Xbox-console. De optie Optische audio is alleen beschikbaar op oudere Xbox-consoles en niet op Xbox Series X|S en hoger.
Houd er rekening mee dat het selecteren van de opties "Dolby Atmos voor thuistheater (alleen HDMI)" of "DTS:X voor thuistheater (alleen HDMI)" in HDMI-audio de gebruiker vraagt om Dolby Access- of DTS Sound Unbound-apps te downloaden en installeren als deze nog niet zijn geïnstalleerd
Selecteer Dolby Atmos voor Headphones, DTS Headphone:X of Windows Sonic for Headphones in de Headset-indeling vervolgkeuzelijst onder Headset-audio
Wanneer Microsoft Spatial Sound niet beschikbaar is (bijvoorbeeld bij het afspelen op ingesloten stereoluidsprekers van een laptop of als de gebruiker Microsoft Spatial Sound niet expliciet heeft ingeschakeld per hierboven), is het aantal beschikbare dynamische objecten dat wordt geretourneerd door ISpatialAudioClient::GetMaxDynamicObjectCount voor een toepassing 0.
HoloLens 2
Op HoloLens 2 is Microsoft Spatial Sound standaard ingeschakeld en wordt hardware-DSP-offload gebruikt die speciaal is ontworpen voor Windows Sonic for Headphones.
Microsoft Spatial Sound and Audio Middleware
Veel app- en gameontwikkelaars gebruiken oplossingen voor audiorenderingsengines van derden, waaronder vaak geavanceerde ontwerp- en controlehulpprogramma's. Microsoft werkt samen met verschillende van deze oplossingsproviders om Microsoft Spatial Sound te implementeren in hun bestaande ontwerpomgevingen. Dit betekent vaak dat de API's die hier worden besproken, worden geabstraheerd vanuit de weergave van de app; ze worden verpakt als DSP-invoegtoepassingen (Digital Signal Processing) die de app kan instantiëren en die de audio-implementer van de app kan gebruiken om naar wens te mixen op een Microsoft Spatial Sound-kanaalbed, submix of afzonderlijke stemmen te verzenden naar dynamische invoegtoepassingen voor objectexemplaren. Neem contact op met de provider van uw audio-middlewareoplossing voor hun ondersteuningsniveau voor Microsoft Spatial Sound.
Microsoft Spatial Sound voor Audio Renderers
Veel audio-renderers richten zich op een WASAPI-eindpunt (Windows Audio Session API) IAudioClient eindpunt, waarbij de toepassing buffers van gemengde en indelingsconforme audiogegevens naar een WASAPI-audiosink invoert; de geleverde buffers worden vervolgens gebruikt voor menging met andere clients, uiteindelijke verwerking op systeemniveau en rendering.
Ruimtelijke eindpunten voor Microsoft Spatial Sound worden geïmplementeerd als ISpatialAudioClient, die veel overeenkomsten heeft met IAudioClient-. Het ondersteunt statische geluidsobjecten die een kanaalbed vormen, met ondersteuning voor maximaal 8.1.4.4 kanalen (8 kanalen rond de listener – Links, Rechts, Midden, Links, Side Right, Side Right, Back Left, Back Right en Back Center; 1 low frequency effects channel; 4 kanalen boven de listener; 4 kanalen onder de listener). En het ondersteunt dynamische geluidsobjecten, die willekeurig in 3D-ruimte kunnen worden gerangschikt.
Het algemene implementatiecoderingspatroon voor ISpatialAudioClient is:
- Statische en/of dynamische audioobjecten maken.
- Voer de audiobuffer van elk object in, zodat het systeem het kan weergeven.
- Werk de 3D-posities van dynamische objecten op aanvraag bij, zo vaak (of zelden) als de app wenst.
Houd er rekening mee dat de huidige uitvoerindeling (luidsprekers of hoofdtelefoons; Windows Sonic for Headphones, Dolby Atmos of DTS Headphone:X) wordt geabstraheerd vanuit de bovenstaande implementatie: de app-ontwikkelaar kan zich richten op ruimtelijk geluid zonder dat het hoeft te worden gedraaid op basis van de indeling. Apps die wel willen dat hun gedrag afwijkt op basis van de uitvoerindeling, kunnen een query uitvoeren op de indeling die wordt gebruikt, maar de abstractie betekent dat een app niet is vereist om deze indelingen te verwerken.
Microsoft Spatial Sound Integration met Audio Renderers
Omdat ISpatialAudioClient een audio-sink is die gegevens verbruikt, heeft een audio-renderer verschillende opties voor het werken met en leveren van audiogegevens. Er zijn drie veelgebruikte integratietechnieken (en voor titels met audio-middleware ziet u mogelijk equivalente plug-ins die beschikbaar worden gesteld op basis van deze opties):
- 7.1.4 panners en mastering voice: Renderers die al ondersteuning bieden voor 7.1-eindpunten, kunnen ervoor kiezen om gewoon ondersteuning toe te voegen voor de vier extra hoogtekanalen die de ISpatialAudioClient statisch kanaalbed ondersteunt. Elke kanaalpanning die ze eerder hebben gedaan (waarschijnlijk al gebruikmaken van x,y, z-coördinaten) kunnen worden bijgewerkt zodat deze hoogtekanalen nu worden opgenomen. Dit biedt vaak de minste onderbreking van renderer- en app-audiowerkstromen, signaal, stroom en mixbesturing. Houd er rekening mee dat de volledige app-mix ruimtelijk wordt gemaakt, dus zelfs stereomuziek kan worden gezien als 'externalized' van de listener.
- Bestaand eindpunt onderhouden, plus voeg een 7.1.4-bus (en panners) toe: Sommige titels kunnen ervoor kiezen om twee eindpunten te onderhouden: hun bestaande stereo WASAPI-eindpunt (voor 'direct naar oren' inhoud die niet bedoeld is om ruimtelijk te worden gemaakt) naast een ISpatialAudioClient statisch kanaalbed dat 7.1.4 ondersteunt (of zelfs tot 8.1.4.4). Natuurlijk biedt het beheren van interacties tussen twee combinaties extra uitdagingen voor makers van inhoud, hoewel synchronisatie wordt gehandhaafd, omdat zowel WASAPI- als ISAC-exemplaren op een bepaald moment dezelfde buffergrootte en klok gebruiken voor verwerking.
- Dynamische geluidsobjecten gebruiken voor bepaalde stemmen of submixen: Het aanbieden van misschien de meest gedetailleerde/nauwkeurige positionering, maar mogelijk het creëren van mixdoorzichtigheid, deze techniek omvat het gebruik van ISpatialAudioClient dynamische geluidsobjecten. Houd er rekening mee dat de metagegevens plus audiobuffer aan de renderer worden geleverd, zodat deze geluiden ondoorzichtig zijn voor de rest van de app-mix. Aangezien er bovendien een beperkt aantal beschikbare dynamische geluidsobjecten zijn, moet de renderer overwegen prioriteitstechnieken te implementeren: co-locatie van geluid, samenvoegen met het statische kanaalbed, enzovoort. Games hebben deze techniek vaak gebruikt voor individuele "held" geluiden, zoals een helikopter die zich boven de listener beweegt.
Renderers kunnen ook combineren en matchen tussen deze benaderingen.
Gevolgen voor Microsoft Spatial Sound Runtime-resources
Op Windows en Xbox varieert het aantal beschikbare stemmen op basis van de indeling die wordt gebruikt. Dolby Atmos-indelingen ondersteunen 32 totale actieve objecten (dus als een 7.1.4-kanaalsbed in gebruik is, kunnen 20 extra dynamische geluidsobjecten actief zijn). Windows Sonic for Headphones ondersteunt 128 totale actieve objecten, waarbij het LFE-kanaal (Low Frequency Effects) niet daadwerkelijk wordt geteld als een object- dus wanneer een 8.1.4.4-kanaalsbed wordt gebruikt, kunnen 112 dynamische geluidsobjecten actief zijn.
Voor Universal Windows Platform-apps die worden uitgevoerd op Xbox One-gameconsoles, wordt realtime codering uitgevoerd (voor Dolby Atmos voor Home Theater, Dolby Atmos voor Hoofdtelefoons, DTS:X voor Home Theater, DTS Headphone:X en Windows Sonic for Headphones) zonder CPU-kosten.
Vanaf de 2303 Xbox OS-update en Game Development Kit (GDK) worden de resourcelimieten op Xbox bijgewerkt naar de volgende waarden:
Formatteren | Max. statische objecten (kanaalbed) | Maximum aantal dynamische objecten Xbox Series X|S, UWP-apps & >=2303 GDK |
Maximum aantal dynamische objecten Xbox Series X|S, XDK & <2303 GDK |
Maximum aantal dynamische objecten Xbox One |
---|---|---|---|---|
Dolby Atmos voor Home Theater (HDMI) | 12 (7.1.4) | 20 | 20 | 20 |
DTS:X voor Home Theater (HDMI) | 17 (8.1.4.4) | 20 | 20 | 16 |
Dolby Atmos (Headphones) | 17 (8.1.4.4) | 128 | 20 | 16 |
DTS Headphone:X (Hoofdtelefoon) | 17 (8.1.4.4) | 200 | 20 | 16 |
Windows Sonic (Hoofdtelefoon) | 17 (8.1.4.4) | 220 | 20 | 15 |
Vanaf de release van mei 22621 voor Windows build 22621 worden de resourcelimieten voor Windows bijgewerkt naar de volgende waarden:
Formatteren | Max. statische objecten (kanaalbed) | Maximum aantal dynamische objecten Ramen |
Maximum aantal dynamische objecten HoloLens 2 |
---|---|---|---|
Dolby Atmos home theater (HDMI) | 12 (7.1.4) | 20 | N.V.T |
DTS:X voor thuisbioscoop (HDMI) | 17 (8.1.4.4) | 32 | N.V.T |
Dolby Atmos (Headphones) | 17 (8.1.4.4) | 128 | N.V.T |
Dolby Atmos (ingebouwde luidsprekers) | 17 (8.1.4.4) | 128 | N.V.T |
DTS Headphone:X (Hoofdtelefoon) | 17 (8.1.4.4) | 128 | N.V.T |
DTS:X Ultra (ingebouwde luidsprekers) | 17 (8.1.4.4) | 128 | N.V.T |
Windows Sonic (Hoofdtelefoon) | 17 (8.1.4.4) | 128 | 31 |
Voor eerdere versies van Windows, Xbox en HoloLens zijn de volgende resourcelimieten van toepassing.
Formatteren | Max. statische objecten (kanaalbed) | Maximum aantal dynamische objecten Xbox One |
Maximum aantal dynamische objecten Ramen |
Maximum aantal dynamische objecten HoloLens 2 |
---|---|---|---|---|
Dolby Atmos voor thuisbioscoop (HDMI) | 12 (7.1.4) | 20 | 20 | N.V.T |
DTS:X voor thuisbioscoop (HDMI) | 17 (8.1.4.4) | 16 | 32 | N.V.T |
Dolby Atmos (Headphones) | 17 (8.1.4.4) | 16 | 16 | N.V.T |
Dolby Atmos (ingebouwde luidsprekers) | 17 (8.1.4.4) | N.V.T | 16 | N.V.T |
DTS Headphone:X (Hoofdtelefoon) | 17 (8.1.4.4) | 16 | 32 | N.V.T |
DTS Ultra (ingebouwde luidsprekers) | 17 (8.1.4.4) | N.V.T | 32 | N.V.T |
Windows Sonic for Headphones | 17 (8.1.4.4) | 15 | 112 | 31 |
Apps moeten ook rekening houden met de volgende gevolgen voor resources:
- bandbreedte voor opslag/schijf: lineaire inhoud die vooraf is geschreven tot 7.1.4, is doorgaans groter dan 7.1 lineaire inhoud (hoewel perceptuele codecs al vaak gebruikmaken van kanaalcorrelatie om dit veel minder te maken dan de 50% meer werkelijke kanalen van audiogegevens)
- Andere kosten voor digitale signaalverwerking: Sommige eerder globale effecten kunnen nu per dynamisch geluidsobject worden uitgevoerd. Daarnaast willen sommige makers van inhoud bepaalde DSP-effecten bijwerken om extra kanalen te ondersteunen of ze uniek te gebruiken.
Microsoft Spatial Sound and Sound Spatialization Cues
Microsoft Spatial Sound is gericht op geluidspositioneringssimulatie op een ge idealiseerde bol rond de listener. Windows Sonic for Headphones, DTS Headphone:X en Dolby Atmos implementeren sprekertoewijzing en -virtualisatie op hoofdtelefoons, maar houd er rekening mee dat veel andere aspecten van ruimtelijke geluidssimulatie, die al doorgaans op manieren waarop contentmaker is geïmplementeerd, worden overgelaten aan bestaande engines. Makers van inhoud blijven de bestaande gamehulpprogramma's en -processen gebruiken die ze eerder hebben gehad voor dergelijke ruimtelijke aanwijzingen als Doppler, op afstand gebaseerde attenuatie en filtering, occlusie en obstructie en omgevingsreverberatie.
Aanvullende informatiebronnen
- GitHub-opslagplaats met GitHub-voorbeelden voor ruimtelijke geluiden
- Dolby biedt een aantal ondersteuningsbronnen met betrekking tot Dolby Atmos en de Dolby Access-app op https://developer.dolby.com.
Ruimtelijke geluidsinterfaces
Interface | Beschrijving |
---|---|
ISpatialAudioClient | Hiermee kan een client audiostreams maken die audio verzenden vanaf een positie in 3D-ruimte. |
ISpatialAudioObject | Vertegenwoordigt een object dat audiogegevens levert die moeten worden weergegeven vanaf een positie in 3D-ruimte ten opzichte van de gebruiker. |
ISpatialAudioObjectRenderStream- | Biedt methoden voor het beheren van een stream voor ruimtelijke audioobjectweergave, waaronder het starten, stoppen en opnieuw instellen van de stream. |
ISpatialAudioObjectRenderStreamNotify- | Biedt meldingen voor ruimtelijke audioclients om te reageren op wijzigingen in de status van een ISpatialAudioObjectRenderStream. |
Notitie
Wanneer u de ISpatialAudioClient interfaces op de titel van een Xbox One Development Kit (XDK) gebruikt, moet u eerst EnableSpatialAudio- aanroepen voordat u IMMDeviceEnumerator::EnumAudioEndpoints of IMMDeviceEnumerator::GetDefaultAudioEndpointaanroept. Als u dit niet doet, wordt er een E_NOINTERFACE fout geretourneerd vanuit de aanroep om te activeren. EnableSpatialAudio is alleen beschikbaar voor XDK-titels en hoeft niet te worden aangeroepen voor Universal Windows Platform-apps die worden uitgevoerd op Xbox One, noch voor andere apparaten dan Xbox One.
Ruimtelijke geluidsstructuren
Structuur | Beschrijving |
---|---|
SpatialAudioObjectRenderStreamActivationParams | Vertegenwoordigt activeringsparameters voor een ruimtelijke audio-renderstream. |
SpatialAudioClientActivationParams | Vertegenwoordigt optionele activeringsparameters voor een ruimtelijke audio-renderstream. |
Ruimtelijke geluidsumeraties
Opsomming | Beschrijving |
---|---|
AudioObjectType- | Hiermee geeft u het type van een ISpatialAudioObject. |