Son spatial pour les développeurs d’applications pour Windows, Xbox et Hololens 2
Note
Cette documentation est destinée à un public de développeurs. Pour obtenir la prise en charge des utilisateurs finaux pour activer le son spatial sur votre appareil, consultez Comment activer le son spatial dans Windows 10.
Microsoft Spatial Sound est la solution de niveau plateforme de Microsoft pour la prise en charge du son spatial sur Xbox, Windows et HoloLens 2, ce qui permet d’entourer et d’élever (au-dessus ou en dessous de l’écouteur) des signaux audio. Le son spatial peut être utilisé par les applications de bureau Windows (Win32) ainsi que par les applications de plateforme Windows universelle (UWP) sur les plateformes prises en charge. Les API sonores spatiales permettent aux développeurs de créer des objets audio qui émettent du contenu audio à partir de positions dans l’espace 3D. Les objets audio dynamiques vous permettent d’émettre du contenu audio à partir d’une position arbitraire dans l’espace, ce qui peut changer au fil du temps. Vous pouvez également spécifier que les objets audio émettent du son à partir d’un des 17 canaux statiques prédéfinis (8.1.4.4) qui peuvent représenter des haut-parleurs réels ou virtualisés. Le format de sortie réel est sélectionné par l’utilisateur et peut être extrait des implémentations de Microsoft Spatial Sound ; l’audio sera présenté aux haut-parleurs, casques et récepteurs de cinéma à domicile existants sans avoir besoin de modifications de code ou de contenu. La plateforme prend entièrement en charge l’encodage Dolby Atmos en temps réel pour les sorties casque HDMI et stéréo, DTS :X pour casques et Windows Sonic pour casques stéréo. Enfin, les applications Microsoft Spatial Sound respectent la stratégie de mixage du système, et leur audio sera également mélangé avec des applications non spatialement conscientes. La prise en charge de Microsoft Spatial Sound est également intégrée à Media Foundation ; les applications qui utilisent media foundation peuvent lire avec succès du contenu Dolby Atmos sans implémentation supplémentaire.
Le son spatial avec Microsoft Spatial Sound prend en charge les téléviseurs, les cinémas d’accueil et les barres sonores qui prennent en charge Dolby Atmos. Le son spatial peut également être utilisé avec n’importe quelle paire de casques que le consommateur peut posséder, avec l’audio rendu par la plateforme à l’aide de Windows Sonic pour casques, Dolby Atmos pour casques ou DTS Headphone :X.
Activation du son spatial Microsoft
Qu’il s’agisse d’un développeur ou d’un consommateur, un utilisateur doit activer Microsoft Spatial Sound sur son appareil pour entendre le son spatialisé.
Windows
Sur les PC Windows, cela s’effectue via la page des propriétés d’un périphérique de sortie audio donné. Dans le panneau de configuration Sound, sélectionnez un appareil de sortie, puis cliquez sur propriétés de l’appareil. Dans la section son spatial de la page, si l’appareil prend en charge le son spatial, vous pouvez sélectionner l’un des formats disponibles dans la liste déroulante format sonore spatial.
Vous pouvez également activer Microsoft Spatial Sound en cliquant avec le bouton droit sur l’icône Volume dans la barre des tâches.
Xbox
Sur Xbox, les fonctionnalités de Microsoft Spatial Sound sont toujours disponibles pour le consommateur et sont activées via l’application Paramètres sous Général -> Volume & sortie audio.
Le bouton audio HDMI est rempli avec tous les formats pris en charge par le récepteur vidéo audio (AVR) ou la barre audio ou la tv directement connectée à votre console Xbox. L’option « Audio optique » est disponible uniquement sur les anciennes consoles Xbox et non sur Xbox Series X|S et versions ultérieures.
Notez que la sélection des options « Dolby Atmos for home theater (HDMI only) » ou « DTS :X for home theater (HDMI only) » dans l’audio HDMI invite l’utilisateur à télécharger et installer des applications Dolby Access ou DTS Sound Unbound si ce n’est pas déjà installé
Sélectionnez Dolby Atmos for Headphones, DTS Headphone :X ou Windows Sonic for Headphones dans la liste déroulante Format casque sous Casque audio
Lorsque Microsoft Spatial Sound n’est pas disponible (par exemple, lors de la lecture sur des haut-parleurs stéréo portables incorporés ou si l’utilisateur n’a pas explicitement activé Microsoft Spatial Sound par ci-dessus), le nombre d’objets dynamiques disponibles retournés par ISpatialAudioClient ::GetMaxDynamicObjectCount à une application sera 0.
HoloLens 2
Sur HoloLens 2, Microsoft Spatial Sound est activé par défaut et utilise le déchargement DSP matériel conçu spécifiquement pour Windows Sonic for Headphones.
Intergiciel spatial microsoft et intergiciel audio
De nombreux développeurs d’applications et de jeux utilisent des solutions de moteur de rendu audio tierces, qui incluent souvent des outils sophistiqués de création et d’audition. Microsoft a collaboré avec plusieurs de ces fournisseurs de solutions pour implémenter Microsoft Spatial Sound dans leurs environnements de création existants. Cela signifie fréquemment que les API abordées ici sont extraites de la vue de l’application ; ils sont encapsulés en tant que plug-ins de traitement de signal numérique (DSP) que l’application peut instancier, et que l’implémenteur audio de l’application peut utiliser pour mélanger à un lit de canal Spatial Sound Microsoft, un sous-mélange ou envoyer des voix individuelles à des plug-ins d’instance d’objet dynamique comme vous le souhaitez. Consultez votre fournisseur de solutions d’intergiciel audio pour connaître leur niveau de prise en charge de Microsoft Spatial Sound.
Microsoft Spatial Sound for Audio Renderers
De nombreux renderers audio ciblent une API WASAPI (Windows Audio Session API) point de terminaison IAudioClient, où l’application alimente les mémoires tampons des données audio mixtes et conformes au format à un récepteur audio WASAPI ; les mémoires tampons livrées sont ensuite consommées pour le mélange avec d’autres clients, le traitement final au niveau du système et le rendu.
Les points de terminaison spatiaux Microsoft Spatial Sound sont implémentés en tant que ISpatialAudioClient, qui a de nombreuses similitudes avec IAudioClient. Il prend en charge des objets sonores statiques formant un lit de canal, avec la prise en charge de 8 canaux jusqu’à 8.1.4.4 canaux (8 canaux autour de l’écouteur : gauche, droite, centre, gauche, côté gauche, retour droit et centre arrière ; 1 canal d’effets de faible fréquence ; 4 canaux au-dessus de l’écouteur ; 4 canaux sous l’écouteur). Il prend en charge objets sonores dynamiques, qui peuvent être positionnés arbitrairement dans l’espace 3D.
Le modèle de codage d’implémentation générale pour ISpatialAudioClient est le suivant :
- Créez des objets audio statiques et/ou dynamiques.
- Alimentez la mémoire tampon audio de chaque objet afin que le système puisse le restituer.
- Mettez à jour les positions 3D des objets dynamiques à la demande , aussi fréquemment (ou rarement) que l’application le souhaite.
Notez que le format de sortie actuel (haut-parleurs ou casques ; Windows Sonic for Headphones, Dolby Atmos ou DTS Headphone :X) est extrait de l’implémentation ci-dessus : le développeur d’applications peut se concentrer sur le son spatial sans avoir à pivoter en fonction du format. Les applications qui souhaitent que leur comportement diffère en fonction du format de sortie peuvent interroger le format en cours d’utilisation, mais l’abstraction signifie qu’une application n’est pas nécessaire pour gérer ces formats.
Intégration du son spatial Microsoft à des renderers audio
Étant donné que ISpatialAudioClient est un récepteur audio qui consomme des données, un renderer audio a plusieurs options pour interagir avec et fournir des données audio à celui-ci. Il existe trois techniques d’intégration couramment utilisées (et pour les titres utilisant l’intergiciel audio, vous pouvez voir des plug-ins équivalents mis à disposition en fonction de ces options) :
- 7.1.4 panners etde mastering voice : les convertisseurs qui prennent déjà en charge les points de terminaison 7.1 peuvent choisir d’ajouter simplement la prise en charge des quatre canaux de hauteur supplémentaires pris en charge par les ISpatialAudioClient lit de canal statique. Tout mouvement panoramique de canal qu’ils faisaient précédemment (probablement en tirant parti des coordonnées x,y, z) peut être mis à jour pour inclure maintenant ces canaux de hauteur. Cela offre souvent le moins de perturbations pour le convertisseur et les flux de travail audio d’application, le signal, le flux et le contrôle de mixage. Au-dessus du casque, notez que la combinaison complète de l’application sera spatialisée , de sorte que même la musique stéréo peut être perçue comme « externalisée » de l’écouteur.
- Maintenir le point de terminaison existant, ainsi qu’ajouter un bus 7.1.4 (et des panners): certains titres peuvent choisir de conserver deux points de terminaison : leur point de terminaison WASAPI stéréo existant (pour le contenu « direct aux oreilles » non destiné à être spatialisé) en même temps qu’un ISpatialAudioClient lit de canal statique prenant en charge 7.1.4 (voire jusqu’à 8.1.4.4). Bien sûr, la gestion des interactions entre deux combinaisons présente des défis supplémentaires pour les créateurs de contenu, bien que la synchronisation soit maintenue, car les instances WASAPI et ISAC actives à un moment donné utilisent la même taille de mémoire tampon et l’horloge pour le traitement.
- Utiliser des objets sonores dynamiques pour certaines voix ou sous-mélanges: offrant peut-être le positionnement le plus détaillé/précis, mais potentiellement la création d’opacité de mix, cette technique implique d’utiliser ISpatialAudioClient objets sonores dynamiques. Notez que les métadonnées plus la mémoire tampon audio sont remises au renderer. Ces sons seront donc opaques pour le reste de la combinaison d’applications. En outre, étant donné qu’il existe un nombre limité d’objets sonores dynamiques disponibles, le convertisseur devra envisager d’implémenter des techniques de hiérarchisation : culling, colocalisation sonore, fusion au lit de canal statique, et ainsi de suite. Les jeux ont fréquemment utilisé cette technique pour des sons « héros » individuels, comme un hélicoptère qui se déplace au-dessus de l’écouteur.
Les convertisseurs peuvent également combiner et faire correspondre ces approches.
Implications des ressources du runtime de son spatial Microsoft
Sur Windows et Xbox, le nombre de voix disponibles varie en fonction du format utilisé. Les formats Dolby Atmos prennent en charge 32 objets actifs totaux (par conséquent, si un lit de canal 7.1.4 est utilisé, 20 objets sonores dynamiques supplémentaires peuvent être actifs). Windows Sonic for Headphones prend en charge 128 objets actifs totaux, avec le canal LFE (Low Frequency Effects) qui n’est pas réellement compté comme un objet. Par conséquent, lorsqu’un lit de canal 8.1.4.4 est utilisé, 112 objets sonores dynamiques peuvent être actifs.
Pour les applications de plateforme Windows universelle s’exécutant sur des consoles de jeu Xbox One, l’encodage en temps réel (pour Dolby Atmos pour Home Theater, Dolby Atmos pour Casques, DTS :X pour Home Theater, DTS Headphone :X et Windows Sonic for Headphones) est effectué en matériel sans coût processeur.
À compter de la mise à jour du système d’exploitation Xbox 2303 et du Kit de développement de jeux (GDK), les limites de ressources sur Xbox sont mises à jour avec les valeurs suivantes :
Format | Max Static Objects (Channel Bed) | Max Dynamic Objects Applications Xbox Series X|S, UWP & >=2303 GDK |
Max Dynamic Objects Xbox Series X|S, XDK & <2303 GDK |
Max Dynamic Objects Xbox One |
---|---|---|---|---|
Dolby Atmos pour Home Theater (HDMI) | 12 (7.1.4) | 20 | 20 | 20 |
DTS :X pour Home Theater (HDMI) | 17 (8.1.4.4) | 20 | 20 | 16 |
Dolby Atmos (Casques) | 17 (8.1.4.4) | 128 | 20 | 16 |
DTS Headphone :X (Casques) | 17 (8.1.4.4) | 200 | 20 | 16 |
Windows Sonic (Casques) | 17 (8.1.4.4) | 220 | 20 | 15 |
À compter de la version de maintenance de mai vers Windows build 22621, les limites des ressources sur Windows sont mises à jour avec les valeurs suivantes :
Format | Max Static Objects (Channel Bed) | Max Dynamic Objects Windows |
Max Dynamic Objects HoloLens 2 |
---|---|---|---|
Dolby Atmos home theater (HDMI) | 12 (7.1.4) | 20 | N/A |
DTS :X pour le cinéma d’accueil (HDMI) | 17 (8.1.4.4) | 32 | N/A |
Dolby Atmos (Casques) | 17 (8.1.4.4) | 128 | N/A |
Dolby Atmos (haut-parleurs intégrés) | 17 (8.1.4.4) | 128 | N/A |
DTS Headphone :X (Casques) | 17 (8.1.4.4) | 128 | N/A |
DTS :X Ultra (haut-parleurs intégrés) | 17 (8.1.4.4) | 128 | N/A |
Windows Sonic (Casques) | 17 (8.1.4.4) | 128 | 31 |
Pour les versions précédentes de Windows, Xbox et HoloLens, les limites de ressources suivantes s’appliquent.
Format | Max Static Objects (Channel Bed) | Max Dynamic Objects Xbox One |
Max Dynamic Objects Windows |
Max Dynamic Objects HoloLens 2 |
---|---|---|---|---|
Dolby Atmos pour le cinéma à domicile (HDMI) | 12 (7.1.4) | 20 | 20 | N/A |
DTS :X pour le cinéma d’accueil (HDMI) | 17 (8.1.4.4) | 16 | 32 | N/A |
Dolby Atmos (Casques) | 17 (8.1.4.4) | 16 | 16 | N/A |
Dolby Atmos (haut-parleurs intégrés) | 17 (8.1.4.4) | N/A | 16 | N/A |
DTS Headphone :X (Casques) | 17 (8.1.4.4) | 16 | 32 | N/A |
DTS Ultra (haut-parleurs intégrés) | 17 (8.1.4.4) | N/A | 32 | N/A |
Windows Sonic pour Casques | 17 (8.1.4.4) | 15 | 112 | 31 |
Les applications doivent également prendre en compte les implications de ressources suivantes :
- bande passante de stockage/disque: le contenu linéaire pré-créé à 7.1.4 sera généralement supérieur à 7,1 contenu linéaire (bien que les codecs perceptuels tirent déjà parti de la corrélation des canaux pour rendre ce contenu beaucoup moins élevé que les 50% canaux plus réels de données audio)
- Autres coûts de traitement des signaux numériques: certains effets globaux précédemment peuvent maintenant devenir instancené par objet sonore dynamique. En outre, certains créateurs de contenu peuvent souhaiter mettre à jour certains effets DSP pour prendre en charge des canaux supplémentaires ou les utiliser de manière unique.
Indicateurs de spatialisation du son et du son Microsoft
Microsoft Spatial Sound se concentre sur la simulation de positionnement sonore sur une sphère idéalisée autour de l’écouteur. Windows Sonic for Headphones, DTS Headphone :X et Dolby Atmos implémentent le mappage et la virtualisation des haut-parleurs aux écouteurs, mais notez que de nombreux autres aspects de la simulation spatiale sonore, déjà implémentés de manière compatible avec le créateur de contenu, sont laissés aux moteurs existants. Les créateurs de contenu continuent d’utiliser les outils de jeu et les processus existants qu’ils ont déjà eus pour des signaux spatiaux tels que Doppler, l’atténuation basée sur la distance et le filtrage, l’occlusion et l’obstruction, ainsi que la réverbération environnementale.
Ressources additionnelles
- référentiel GitHub d’exemples De code spatial Microsoft
- Dolby offre un certain nombre de ressources de support relatives à Dolby Atmos et à l’application Dolby Access à https://developer.dolby.com.
Interfaces sonores spatiales
Interface | Description |
---|---|
ISpatialAudioClient | Permet à un client de créer des flux audio qui émettent du contenu audio à partir d’une position dans l’espace 3D. |
ISpatialAudioObject | Représente un objet qui fournit des données audio à restituer à partir d’une position dans l’espace 3D, par rapport à l’utilisateur. |
ISpatialAudioObjectRenderStream | Fournit des méthodes pour contrôler un flux de rendu d’objet audio spatial, notamment le démarrage, l’arrêt et la réinitialisation du flux. |
ISpatialAudioObjectRenderStreamNotify | Fournit des notifications pour que les clients audio spatiaux répondent aux modifications apportées à l’état d’un ISpatialAudioObjectRenderStream. |
Note
Lorsque vous utilisez les interfaces ISpatialAudioClientsur un titre XDK (Xbox One Development Kit), vous devez d’abord appeler EnableSpatialAudio avant d’appeler IMMDeviceEnumerator ::EnumAudioEndpoints ou IMMDeviceEnumerator ::GetDefaultAudioEndpoint. Si vous ne le faites pas, une erreur de E_NOINTERFACE est retournée par l’appel à Activate. enableSpatialAudio est disponible uniquement pour les titres XDK et n’a pas besoin d’être appelé pour les applications de plateforme Windows universelle s’exécutant sur Xbox One, ni pour les appareils non Xbox One.
Structures sonores spatiales
Structure | Description |
---|---|
SpatialAudioObjectRenderStreamActivationParams | Représente les paramètres d’activation d’un flux de rendu audio spatial. |
SpatialAudioClientActivationParams | Représente des paramètres d’activation facultatifs pour un flux de rendu audio spatial. |
Énumérations sonores spatiales
Énumération | Description |
---|---|
AudioObjectType | Spécifie le type d’un ISpatialAudioObject. |