Som

imagem Hero

Há muitas maneiras de usar o som para aprimorar o aplicativo. Você pode usar som para complementar outros elementos de interface do usuário permitindo que os usuários reconheçam eventos de maneira audível. O som pode ser um elemento de interface do usuário efetivo para pessoas com deficiências visuais. É possível usar som para criar uma atmosfera que envolva o usuário; por exemplo, convém executar uma trilha sonora extravagante em segundo plano do quebra-cabeça ou usar efeitos sonoros de suspense para um jogo de terror/sobrevivência.

Exemplos

Galeria WinUI 2
Galeria WinUI

Se você tiver o aplicativo WinUI 2 Gallery instalado, clique aqui para abrir o aplicativo e ver o Som em ação.

API de Som Global

O UWP fornece um sistema de som facilmente acessível que permite simplesmente "usar um interruptor" e obter uma intensa experiência de áudio em seu aplicativo inteiro.

O ElementSoundPlayer é um sistema de som integrado no XAML e, quando ativado em todos os controles padrão, reproduzirá sons automaticamente.

ElementSoundPlayer.State = ElementSoundPlayerState.On;

O ElementSoundPlayer tem três estados diferentes: Ligado, Desligado e Automático.

Se definido como Desativado, não importa onde seu aplicativo seja executado, o som nunca será reproduzido. Se definido como Ativado os sons de seu aplicativo serão executados em todas as plataformas.

Ao habilitar o ElementSoundPlayer, o áudio espacial (som 3D) também é habilitado automaticamente. Para desabilitar o som 3D (enquanto mantém o som), desabilite o SpatialAudioMode do ElementSoundPlayer:

ElementSoundPlayer.SpatialAudioMode = ElementSpatialAudioMode.Off

A propriedade SpatialAudioMode pode usar esses valores:

  • Automático: o áudio espacial será ativado quando o som estiver ativado.
  • Desativado: o áudio espacial estará sempre desativado, mesmo que o som esteja ativado.
  • Ativado: o áudio espacial será sempre reproduzido.

Para saber mais sobre o áudio espacial e como o XAML processa isso, veja AudioGraph – Áudio espacial.

Som de TV e Xbox

O som é uma parte essencial da experiência dos 3 metros e, por padrão, o estado do ElementSoundPlayer é Auto, o que significa que você só obterá som quando seu aplicativo estiver em execução no Xbox. Consulte Design para Xbox e TV para obter mais detalhes.

Substituição de volume do som

Todos os sons no aplicativo podem ser esmaecidos com o controle Volume. No entanto, os sons no aplicativo não podem ficar mais altos do que o volume do sistema.

Para definir o nível de volume do aplicativo, chame:

ElementSoundPlayer.Volume = 0.5;

Quando volume máximo (em relação ao volume do sistema) for 1,0 e o mínimo for 0,0 (essencialmente silencioso).

Estado de nível de controle

Se não desejar o som do padrão de um controle, ele poderá ser desabilitado. Isso é feito por meio do ElementSoundMode no controle.

O ElementSoundMode tem dois estados: Desativado e Padrão. Quando não definido, é Padrão. Se definido como Desativado, cada som que for reproduzido pelo controle será silenciado, exceto o foco.

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

Este é o som correto?

Ao criar um controle personalizado ou alterar o som de um controle existente, é importante entender os usos de todos os sons que o sistema fornece.

Cada som está relacionado a uma determinada interação básica do usuário e, embora os sons possam ser personalizados para reprodução em qualquer interação, esta seção serve para ilustrar os cenários nos quais os sons devem ser usados para manter uma experiência consistente em todos os aplicativos UWP.

Invocar um elemento

O som disparado por controle mais comum em nosso sistema hoje é o Invoke. Esse som é reproduzido quando o usuário invoca um controle por meio de um toque/clique/enter/espaço ou pressionamento do botão "A" em um gamepad.

Normalmente, esse som só é executado quando um usuário direciona explicitamente um controle simples ou parte de um controle por meio de um dispositivo de entrada.

Para reproduzir esse som de qualquer evento de controle, basta chamar o método Play de ElementSoundPlayer e transmitir ElementSound.Invoke:

ElementSoundPlayer.Play(ElementSoundKind.Invoke);

Mostrar e ocultar conteúdo

Há muitos submenus, caixas de diálogo e interfaces do usuário rejeitadas em XAML, e qualquer ação que dispare uma dessas sobreposições deve chamar o som Mostrar ou Ocultar.

Quando uma janela de conteúdo de sobreposição é exibida, o som Mostrar deve ser chamado:

ElementSoundPlayer.Play(ElementSoundKind.Show);

Por outro lado, quando uma janela de conteúdo de sobreposição é fechada (ou ignorada), o som Ocultar deve ser chamado:

ElementSoundPlayer.Play(ElementSoundKind.Hide);

Quando se navega entre os painéis ou modos de exibição na página do aplicativo (confira NavigationView), normalmente há movimento bidirecional. Ou seja, você pode passar para o modo de exibição/painel próximo ou o anterior, sem sair da página atual do aplicativo.

A experiência de áudio em torno esse conceito de navegação é englobada pelos sons MovePrevious e MoveNext.

Ao mudar para um modo de exibição/painel que é considerado o próximo item em uma lista, chame:

ElementSoundPlayer.Play(ElementSoundKind.MoveNext);

E ao mudar para um modo de exibição/painel anterior em uma lista considerado o item anterior, chame:

ElementSoundPlayer.Play(ElementSoundKind.MovePrevious);

Navegação regressiva

Ao navegar da página atual para a página anterior dentro de um aplicativo, o som GoBack deve ser chamado:

ElementSoundPlayer.Play(ElementSoundKind.GoBack);

Focar em um elemento

O som Focus é o único som implícito em nosso sistema. Ou seja, um usuário não está interagindo diretamente com nada, mas ainda ouve um som.

O foco acontece quando um usuário navega por meio de um aplicativo, que pode ser com o teclado/gamepad/remoto ou kinect. Normalmente, o som Foconão é reproduzido em eventos PointerEntered nem do mouse.

Para configurar um controle para reproduzir o som Focus quando o controle recebe foco, chame:

ElementSoundPlayer.Play(ElementSoundKind.Focus);

Exibição cíclica de sons de foco

Como um recurso adicionado à chamada de ElementSound.Focus, o sistema de som, por padrão, percorrerá por quatro sons diferentes em cada disparador de navegação. Isso significa que dois sons de foco exatos não serão reproduzidos um após o outro.

O objetivo por trás desse recurso de ciclo é evitar que os sons de foco se tornem monótonos e sejam perceptíveis pelo usuário; os sons de foco serão reproduzidos com mais frequência e, portanto, devem ser mais sutis.

Obter o código de exemplo