Logo

RIPRODUZIONE DI SUONI IN VB.NET


In questo articolo vedremo due metodi di riproduzione di suoni in VB.NET: il primo metodo è semplice da usare, il secondo ha più opzioni ma è anche un po' più difficile da utilizzare.

Se dovete semplicemente far suonare una musica di sottofondo sarà sufficiente usare il primo metodo ma se dovete far suonare, per esempio, due suoni contemporaneamente allora avrete bisogno del metodo più complesso ma più potente.
Per riprodurre un file wav dal vostro computer basta utilizzare la seguente funzione
My.Computer.Audio.Play("c:\suono.wav")
'per riprodurre il file c:\suono.wav
My.Computer.Audio.Stop 'per fermare la riproduzione
Per default, il suono viene riprodotto in background, ma in realtà ci sono 3 modalità distinte :
  • AudioPlayMode.Background : riproduce un suono in background. Il codice chiamante continua a essere eseguito.
  • AudioPlayMode.BackgroundLoop : riproduce il suono in background finché non viene chiamato il metodo Metodo My.Computer.Audio.Stop. Il codice chiamante continua a essere eseguito.
  • AudioPlayMode.WaitToComplete : riproduce il suono e ne attende il completamento prima di proseguire con il codice chiamante.
My.Computer.Audio.Play("c:\suono.wav", AudioPlayMode.Background)
My.Computer.Audio.Play("c:\suono.wav", AudioPlayMode.BackgroundLoop)
My.Computer.Audio.Play("c:\suono.wav", AudioPlayMode.WaitToComplete)
Veniamo ora al secondo metodo: in questa modalità è possibile riprodurre diversi formati audio e combinarli assieme durante la riproduzione . Per fare questo è sufficiente dichiarare la seguente funzione mciSendString
Public Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Integer, ByVal hwndCallback As Integer) As Integer 
Per iniziare dobbiamo "creare" il suono da riprodurre fornendo un alias ed il persorso ove si trova il file. Poi possiamo eseguire tutte le operazioni su quel suono. Vediamo come:
Dim aliasMusica As String = "MusicaDaRiprodurre"
Dim percorsoMusica As String = "C:\suono.wma" 
'Definisco un alias e il persorso
mciSendString("Open " & Chr(34) & percorsoMusica & Chr(34) & " alias " & aliasMusica, CStr(0), 0, 0) '"Creo" il suono da riprodurre
mciSendString("play " & aliasMusica, CStr(0), 0, 0) 'Ora posso finalmente ascoltare la musica memorizzata in aliasMusica
mciSendString("pause " & aliasMusica, CStr(0), 0, 0) 'Metto in pausa la riproduzione
mciSendString("resume " & aliasMusica, CStr(0), 0, 0) 'Riprendo la riproduzione
mciSendString("stop " & aliasMusica, CStr(0), 0, 0) 'Fermo la riproduzione
mciSendString("close " & aliasMusica, CStr(0), 0, 0) 'Chiudo il "collegamento" con l'alias

Nel caso volessimo riprodurre due suoni è sufficiente "creare" 2 alias (aliasMusica1 e aliasMusica2) ed eseguire le opportune operazioni per la riproduzione.


Fonte web: https://www.fdonet.com/programmazione/vbnet/riproduzione-di-suoni-in-vb-net.aspx