Son

Image Hero

Il existe de nombreuses façons d’utiliser le son pour améliorer votre application. Vous pouvez utiliser des sons pour compléter d’autres éléments de l’interface utilisateur, afin de permettre aux utilisateurs de reconnaître les événements par un son. Le son peut être un élément d’interface utilisateur efficace pour les personnes souffrant de handicaps visuels. Vous pouvez utiliser le son pour créer une atmosphère qui immerge totalement l’utilisateur ; par exemple, vous pouvez lire une bande son distrayante en arrière-plan d’un jeu de puzzle ou utiliser des effets sonores menaçants pour un jeu d’horreur/de survie.

Exemples

Galerie WinUI 2
Galerie WinUI 2

Si vous disposez de l’application Galerie WinUI 2, cliquez ici pour ouvrir l’application et voir Son en action .

API Son globale

UWP fournit un système audio aisément accessible, qui vous permet de bénéficier d’une expérience audio immersive dans l’ensemble de votre application par le simple actionnement d’un commutateur.

ElementSoundPlayer est un système audio intégré dans le code XAML qui, une fois activé, déclenche la lecture automatique de sons par tous les contrôles par défaut.

ElementSoundPlayer.State = ElementSoundPlayerState.On;

ElementSoundPlayer a trois états différents : On Off et Auto.

S’il est défini sur Off, aucun son ne sera émis, quelle que soit la plateforme sur laquelle votre application s’exécute. Si le système audio est défini sur On, les sons de votre application seront émis sur chaque plateforme.

L’activation de l’objet ElementSoundPlayer entraîne également l’activation automatique de l’audio spatial (son 3D). Pour désactiver le son 3D (tout en gardant le son activé), désactivez la propriété SpatialAudioMode de l’objet ElementSoundPlayer :

ElementSoundPlayer.SpatialAudioMode = ElementSpatialAudioMode.Off

La propriété SpatialAudioMode peut accepter les valeurs suivantes :

  • Auto : l’audio spatial est activé quand le son est activé.
  • Off : l’audio spatial est toujours désactivé, même si le son est activé.
  • On : l’audio spatial est toujours lu.

Pour plus d’informations sur l’audio spatial et la façon dont XAML le gère, voir AudioGraph - Audio spatial.

Son pour télévision et Xbox

Le son constitue un aspect essentiel de l’expérience d’interface à 3 mètres (« 10-foot ») et par défaut, l’état de ElementSoundPlayer est Auto, ce qui signifie que vous n’entendrez le son que si votre application est exécutée sur Xbox. Pour plus d’informations, consultez Conception pour Xbox et TV.

Remplacement du volume sonore

Tous les sons au sein de l’application peuvent être atténués avec le contrôle Volume. Cependant, le volume des sons de l’application ne peut pas être plus élevé que le volume système.

Pour définir le niveau de volume de l’application, appelez :

ElementSoundPlayer.Volume = 0.5;

où le volume maximal (par rapport au volume système) est de 1,0, et le volume minimal de 0,0 (silencieux).

État du niveau d’un contrôle

Si le son par défaut d’un contrôle n’est pas souhaité, il peut être désactivé. Ceci se fait via l’élément ElementSoundMode sur le contrôle.

ElementSoundMode a deux états : Off et Default. Quand il n’est pas défini, il a la valeur Default. S’il est défini sur Off, chaque son lu par le contrôle sera désactivé, sauf pour le focus.

<Button Name="ButtonName" Content="More Info" ElementSoundMode="Off"/>
ButtonName.ElementSoundState = ElementSoundMode.Off;

Est-ce le son approprié ?

Quand vous créez un contrôle personnalisé ou que vous changez le son d’un contrôle existant, il est important de bien comprendre les utilisations de tous les sons fournis par le système.

Chaque son est associé à une interaction utilisateur simple spécifique, et même si vous pouvez personnaliser les sons pour n’importe quelle interaction, cette section montre les scénarios qui nécessitent l’utilisation de sons pour garantir une expérience cohérente dans l’ensemble des applications UWP.

Appel d’un élément

Le son le plus courant déclenché par un contrôle dans notre système actuel est le son Invoke. Ce son est émis quand un utilisateur appelle un contrôle via un appui, un clic, une sélection de la touche Entrée ou de la barre d’espace, ou un appui sur la touche « A » d’un boîtier de commande.

En règle générale, ce son est émis seulement quand un utilisateur cible explicitement un contrôle simple ou une partie d’un contrôle via un périphérique d’entrée.

Pour lire ce son à partir d’un événement de contrôle quelconque, il vous suffit d’appeler la méthode Play à partir de ElementSoundPlayer et de passer en entrée ElementSound.Invoke :

ElementSoundPlayer.Play(ElementSoundKind.Invoke);

Affichage et masquage de contenu

Le code XAML offre de nombreux menus volants, boîtes de dialogue et interfaces utilisateur révocables, et toute action déclenchant l’une de ces superpositions doit appeler un son Show ou Hide.

Quand une fenêtre de contenu superposée s’affiche, le son Show doit être appelé :

ElementSoundPlayer.Play(ElementSoundKind.Show);

À l’inverse, quand une fenêtre de contenu superposée se ferme (ou n’est plus au premier plan), le son Hide doit être appelé :

ElementSoundPlayer.Play(ElementSoundKind.Hide);

La navigation entre les panneaux ou les vues d’une page de l’application (voir NavigationView) donne généralement lieu à un mouvement bidirectionnel. Cela signifie que vous pouvez accéder à la vue/au panneau suivants ou précédents sans quitter la page de l’application sur laquelle vous vous trouvez.

L’expérience audio associée à ce concept de navigation est représentée par les sons MovePrevious et MoveNext.

Lors de l’accès à une vue/un panneau considérés comme l’élément suivant d’une liste, appelez :

ElementSoundPlayer.Play(ElementSoundKind.MoveNext);

Lors de l’accès à une vue/un panneau considérés comme l’élément précédent d’une liste, appelez :

ElementSoundPlayer.Play(ElementSoundKind.MovePrevious);

Navigation vers l’arrière

Lors de l’accès à la page précédente d’une application à partir d’une page donnée, le son GoBack doit être appelé :

ElementSoundPlayer.Play(ElementSoundKind.GoBack);

Placement du focus sur un élément

Le son Focus est le seul son implicite dans notre système. Cela signifie que quand un utilisateur n’interagit directement avec aucun élément, il entend quand même un son.

Le placement du focus se produit quand un utilisateur parcourt une application, que ce soit au moyen d’un boîtier de commande, d’un clavier, d’une télécommande ou de Kinect. En règle générale, le son Focusn’est pas émis lors des événements PointerEntered ou de pointage avec la souris.

Pour configurer un contrôle afin qu’il lise le son Focus quand il reçoit le focus, appelez :

ElementSoundPlayer.Play(ElementSoundKind.Focus);

Émission successive de différents sons de focus

En complément de l’appel de l’élément ElementSound.Focus, le système audio émet successivement par défaut 4 sons différents sur chaque déclencheur de navigation. Cela signifie que le système n’émettra pas deux fois de suite les deux mêmes sons de focus.

Cette fonctionnalité de lecture successive est destinée à empêcher que les sons de focus ne deviennent monotones ou gênants pour l’utilisateur ; les sons de focus sont ceux qui seront émis le plus souvent et doivent donc être les plus subtils.

Obtenir l’exemple de code