Suoni

hero image

Esistono molti modi per usare i suoni per migliorare la tua app. Puoi usare i suoni per integrare altri elementi dell'interfaccia utente, consentendo agli utenti di riconoscere gli eventi a orecchio. I suoni possono essere un elemento dell'interfaccia utente efficace per gli utenti con problemi di vista. Puoi usare i suoni per creare un'atmosfera coinvolgente per l'utente, ad esempio puoi riprodurre una colonna sonora bizzarra come sottofondo di un gioco puzzle o usare effetti sonori minacciosi per un gioco horror o di sopravvivenza.

Esempi

Raccolta WinUI 2
WinUI Gallery

Se hai l'app Raccolta WinUI 2 installata, fai clic qui per aprire l'app e vedere Suono in azione.

API globale per i suoni

La piattaforma UWP offre un sistema audio facilmente accessibile che ti consente di cambiare semplicemente un'opzione per ottenere un'esperienza audio immersiva in tutta l'app.

ElementSoundPlayer è un sistema audio integrato in XAML e con l'attivazione vengono riprodotti automaticamente suoni per tutti i controlli predefiniti.

ElementSoundPlayer.State = ElementSoundPlayerState.On;

ElementSoundPlayer ha tre diversi stati: OnOff e Auto.

Se impostato su Off, non verranno mai riprodotti suoni, indipendentemente da dove l'app viene eseguita. Se impostato su On, i suoni per l'app verranno riprodotti in tutte le piattaforme.

L'abilitazione di ElementSoundPlayer abiliterà automaticamente anche l'audio spaziale (audio 3D). Per disabilitare l'audio 3D (mantenendo comunque il suono), disabilita la proprietà SpatialAudioMode di ElementSoundPlayer:

ElementSoundPlayer.SpatialAudioMode = ElementSpatialAudioMode.Off

La proprietà SpatialAudioMode accetta questi valori:

  • Automatico: l'audio spaziale si attiva quando il suono è abilitato.
  • Off: l'audio spaziale è sempre disattivato, anche se l'audio è disabilitato.
  • On: l'audio spaziale verrà riprodotto sempre.

Per altre informazioni sull'audio spaziale e su come XAML lo gestisce AudioGraph - Audio spaziale.

Suoni per TV e Xbox

I suoni sono un elemento fondamentale dell'esperienza di interazione da 3 metri e lo stato di ElementSoundPlayer è Auto per impostazione predefinita e questo significa che sentirai suoni solo quando l'app è in esecuzione su Xbox. Per altri dettagli, vedere Progettazione per Xbox e TV.

Override del volume dei suoni

Tutti i suoni all'interno dell'app possono essere abbassati con il controllo Volume. Tuttavia, i suoni nell'app non possono avere un volume più alto del volume di sistema.

Per impostare il livello di volume dell'app, chiama:

ElementSoundPlayer.Volume = 0.5;

Dove il volume massimo (rispetto al volume di sistema) è 1,0 e il volume minimo è 0,0 (fondamentalmente disattivato).

Stato del livello del controllo

Se non si vuole usare il suono predefinito di un controllo, è possibile disabilitarlo tramite ElementSoundMode nel controllo.

ElementSoundMode ha due stati: Off e Predefinito. Se non viene impostato, è Default. Se impostato su Off, tutti i suoni riprodotti dal controllo verranno disattivati tranne lo stato attivo.

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

È il suono giusto?

Durante la creazione di un controllo personalizzato o la modifica dei suoni per un controllo esistente, è importante capire gli utilizzi di tutti i suoni forniti dal sistema.

Ogni suono si riferisce a una determinata interazione utente di base e, anche se i suoni possono essere personalizzati per la riproduzione con qualsiasi interazione, le informazioni in questa sezione servono per illustrare gli scenari in cui si dovrebbero usare i suoni per mantenere un'esperienza coerente in tutte le app UWP.

Richiamare un elemento

Il suono più comune attivato da un controllo nel nostro sistema oggi è il suono Invoke. Questo suono viene riprodotto quando un utente richiama un controllo tramite tocco/clic/INVIO/spazio o premendo il pulsante 'A' in un game pad.

Questo suono viene di solito riprodotto solo quando un utente seleziona esplicitamente un controllo semplice o parte di un controllo tramite un dispositivo di input.

Per riprodurre questo suono da qualsiasi evento del controllo, chiama semplicemente il metodo Play da ElementSoundPlayer e passa ElementSound.Invoke:

ElementSoundPlayer.Play(ElementSoundKind.Invoke);

Visualizzare e nascondere contenuto

Ci sono molti riquadri a comparsa, finestre di dialogo ed elementi di interfaccia utente chiudibili in XAML e qualsiasi azione che attiva una di queste sovrimpressioni dovrebbe chiamare un suono Show o Hide.

Quando viene visualizzata una finestra di contenuto in sovrimpressione, dovrebbe essere chiamato il suono Show:

ElementSoundPlayer.Play(ElementSoundKind.Show);

Viceversa, alla chiusura di una finestra di contenuto in sovrimpressione (o alla sua scomparsa quando si tocca lo schermo), deve essere chiamato il suono Hide:

ElementSoundPlayer.Play(ElementSoundKind.Hide);

Durante lo spostamento tra i pannelli o le visualizzazioni all’interno di una pagina dell’app (vedi NavigationView), i movimenti sono in genere bidirezionali, vale a dire che puoi passare alla visualizzazione o al pannello successivo o a quello precedente senza uscire dalla pagina dell'app corrente.

L'esperienza audio per questo concetto di spostamento è inclusa nei suoni MovePrevious e MoveNext.

Per lo spostamento verso una visualizzazione o un pannello considerato l'elemento successivo in un elenco, chiama:

ElementSoundPlayer.Play(ElementSoundKind.MoveNext);

Per lo spostamento verso una visualizzazione o un pannello in un elenco considerato l'elemento precedente, chiama:

ElementSoundPlayer.Play(ElementSoundKind.MovePrevious);

Spostamento all'indietro

Per lo spostamento dalla pagina corrente alla pagina precedente all'interno di un'app, deve essere chiamato il suono GoBack:

ElementSoundPlayer.Play(ElementSoundKind.GoBack);

Spostamento dello stato attivo su un elemento

Il suono Focus è l'unico implicito nel nostro sistema. Questo significa che un utente non sta interagendo direttamente con alcun elemento, ma sente comunque un suono.

Gli eventi di stato attivo si verificano quando un utente si sposta all'interno di un'app tramite game pad, tastiera, telecomando o Kinect. In genere, il suono Focusnon viene riprodotto per eventi PointerEntered o di passaggio del puntatore del mouse.

Per configurare un controllo per la riproduzione del suono Focus quando il controllo riceve lo stato attivo, chiama:

ElementSoundPlayer.Play(ElementSoundKind.Focus);

Riproduzione ciclica di più suoni per lo stato attivo

Come funzionalità aggiunta alla chiamata di ElementSound.Focus, per impostazione predefinita il sistema audio riprodurrà ciclicamente 4 suoni diversi per ogni trigger di spostamento. Questo significa che non verranno mai riprodotti in successione due suoni uguali per lo stato attivo.

Lo scopo è evitare che i suoni per lo stato attivo diventino monotoni e vengano notati dall'utente. I suoni per lo stato attivo sono quelli che verranno riprodotti più di frequente e quindi dovrebbero essere i più discreti.

Scaricare il codice di esempio