Sonido

hero image

Hay muchas formas de usar sonido para mejorar tu aplicación. Puedes usar sonido para complementar otros elementos de la interfaz de usuario, lo que permite a los usuarios reconocer eventos de forma audible. El sonido puede ser un elemento de la interfaz de usuario eficaz para personas con discapacidades visuales. Puedes usar sonido para crear una atmósfera envolvente para el usuario; por ejemplo, puedes reproducir una banda sonora divertida en segundo plano en un juego de rompecabezas o usar efectos de sonido inquietantes para un juego de miedo o supervivencia.

Ejemplos

WinUI 2 Gallery
WinUI Gallery

Si tiene instalada la aplicación Galería de WinUI 2, haga clic aquí paraabrir la aplicación y ver Sonido en acción.

API global de sonido

La plataforma UWP proporciona un sistema de sonido fácilmente accesible que permite simplemente "invertir un cambio" y obtener una experiencia de sonido envolvente en toda la aplicación.

ElementSoundPlayer es un sistema de sonido integrado dentro de XAML y, cuando está activado en todos los controles predeterminados, se reproducen sonidos automáticamente.

ElementSoundPlayer.State = ElementSoundPlayerState.On;

El ElementSoundPlayer tiene tres estados distintos: ActivadoDesactivado y Automático.

Si se establece en Off, independientemente de dónde se ejecute la aplicación, el sonido no se reproducirá nunca. Si se establece en On, los sonidos de tu aplicación se reproducirán en todas las plataformas.

Al habilitar ElementSoundPlayer, se habilitará también automáticamente el audio espacial (sonido 3D). Para deshabilitar el sonido 3D (y seguir manteniendo el sonido activado), deshabilita SpatialAudioMode del elemento ElementSoundPlayer:

ElementSoundPlayer.SpatialAudioMode = ElementSpatialAudioMode.Off

La propiedad SpatialAudioMode puede aceptar estos valores:

  • Auto: El audio espacial se activará cuando el sonido esté activado.
  • Off: El audio espacial siempre está desactivado, incluso si el sonido está activado.
  • On: Se reproducirá audio espacial siempre.

Para obtener más información acerca del audio espacial y de cómo XAML lo controla, consulta AudioGraph: audio espacial.

Sonido para televisión y Xbox

El sonido es una parte fundamental de la experiencia en pantalla de TV y, de manera predeterminada, el estado de ElementSoundPlayer es Auto, lo que significa que solo obtendrás sonido cuando la aplicación se ejecute en Xbox. ConsultaDiseño para Xbox y TV para más detalles.

Invalidación del volumen del sonido

Todos los sonidos de la aplicación se pueden atenuar con el control Volumen. Sin embargo, los sonidos de la aplicación no se pueden reproducir a un volumen más alto que el volumen del sistema.

Para establecer el nivel del volumen de la aplicación, llama a:

ElementSoundPlayer.Volume = 0.5;

Donde el volumen máximo (en relación con el volumen del sistema) es 1.0 y el mínimo es 0.0 (esencialmente silencioso).

Estado del nivel de control

Si no se desea el sonido predeterminado de un control, se puede deshabilitar. Para ello, se utiliza la propiedad ElementSoundMode en el control.

El ElementSoundMode tiene dos estados: Off y Predeterminado. Cuando no se establece, es Default. Si se establece en Off, cada sonido que reproduzca el control se silenciará excepto para el foco.

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

¿Es este el sonido adecuado?

Al crear un control personalizado o cambiar el sonido de un control existente, es importante comprender los usos de todos los sonidos que proporciona el sistema.

Cada sonido se relaciona con una determinada interacción de usuario básica y, aunque los sonidos se pueden personalizar para reproducirse en cualquier interacción, esta sección sirve para ilustrar los escenarios en los que se deberían usar sonidos para mantener una experiencia coherente en todas las aplicaciones para UWP.

Invocar un elemento

Actualmente, el sonido desencadenado por control más común en nuestro sistema es el sonido Invoke. Este sonido se reproduce cuando un usuario invoca un control a través de una pulsación, un clic, una entrada o un espacio o si presiona el botón "A" en un controlador para juegos.

Por lo general, este sonido solo se reproduce cuando un usuario selecciona explícitamente un control simple o una parte del control a través de un dispositivo de entrada.

Para reproducir este sonido desde cualquier evento de control, solo tienes que llamar al método Play desde ElementSoundPlayer y pasar ElementSound.Invoke:

ElementSoundPlayer.Play(ElementSoundKind.Invoke);

Mostrar y ocultar el contenido

Hay muchos controles flotantes, cuadros de diálogo e interfaces de usuario descartables en XAML y, cualquier acción que desencadene una de estas superposiciones, debe llamar a un sonido Show o Hide.

Cuando una ventana de contenido de superposición se incluye en la vista, se debe llamar al sonido Show:

ElementSoundPlayer.Play(ElementSoundKind.Show);

Por el contrario, cuando se cierra una ventana de contenido de superposición (o se cierra el elemento por cambio de foco), se debe llamar al sonido Hide:

ElementSoundPlayer.Play(ElementSoundKind.Hide);

Cuando se navega entre paneles o vistas en la página de una aplicación (consulta NavigationView), normalmente hay un movimiento bidireccional. Esto significa que puedes pasar al siguiente panel o vista, o bien al anterior, sin salir de la página actual de la aplicación en la que te encuentras.

La experiencia de sonido con relación a este concepto de navegación está incluida en los sonidos MovePrevious y MoveNext.

Al pasar a una vista o un panel que se considere el siguiente elemento de una lista, llama a:

ElementSoundPlayer.Play(ElementSoundKind.MoveNext);

Y al pasar a una vista o un panel anterior de una lista que se considere el elemento anterior, llama a:

ElementSoundPlayer.Play(ElementSoundKind.MovePrevious);

Navegación hacia atrás

Al navegar de la página actual a la anterior dentro de una aplicación, se debe llamar al sonido GoBack:

ElementSoundPlayer.Play(ElementSoundKind.GoBack);

Establecer el foco en un elemento

El sonido Focus es el único sonido implícito en nuestro sistema. Esto significa que, aunque un usuario no interactúe directamente con nada, seguirá escuchando un sonido.

El enfoque se produce cuando un usuario navega a través de una aplicación, bien con el controlador para juegos, el teclado, el control remoto o el Kinect. Normalmente, el sonido de Focono se reproduce en eventos PointerEntered o al pasar el mouse por encima.

Para configurar un control para que reproduzca el sonido Focus cuando el control reciba el foco, llama a:

ElementSoundPlayer.Play(ElementSoundKind.Focus);

Recorrer sonidos Focus

Como una característica adicional para llamar a ElementSound.Focus, el sistema de sonido recorrerá cuatro sonidos diferentes en cada desencadenador de navegación. Esto significa que no se reproducirán dos sonidos de foco exactos uno detrás de otro.

La finalidad de esta característica de ciclo consiste en evitar que los sonidos de foco sean monótonos y perceptibles para el usuario. Los sonidos de foco se reproducirán más a menudo y, por lo tanto, deben ser más sutiles.

Obtener el código de ejemplo