Jouer des fichiers WAV avec Visual Basic

On y arrive en ayant recours à des DLL.
Il y a plusieurs choses à taper, et à taper dans différents endroits.

On utilise des DLL, qui contiennent un certain nombre de fonctions. Il faut déclarer ces fonctions dans la partie "général" (là ou on déclare les variables globales) du code du module où l'on désire jouer des fichiers WAV.

La DLL que j'utilise est livrée avec Windows; donc vous n'avez pas besoin de la télécharger sur mon site.

Voici donc ce qu'il faut taper dans la partie "général" :

Declare Function waveOutGetNumDevs Lib "MMSystem" () As Integer
Declare Function sndPlaySound Lib "MMSystem" (lpsound As Any, ByVal flag As Integer) As Integer

Comme vous pouvez le constater, on déclare DEUX des fonctions contenues dans la DLL "MMSystem". La fonction "sndPlaySound" sert à jouer les fichiers WAV, et la fonction "waveOutGetNumDevs" va servir à savoir si il y a une carte son sur le P.C. C'est important, car si on essaye de lire un fichier WAV sur un P.C. dépourvu de carte son ou dont la carte son n'est pas configurée correctement, on aura un beau plantage...
Une fois ceci fait, pour jouer un fichier WAV, il suffit d'utiliser les fonctions précédements déclarées :

Stat% = waveOutGetNumDevs()
If Stat% = 0 Then
  MsgBox "Pas de carte son sur cette machine !", 16
  End
Else
  Res% = sndPlaySound(ByVal FichierSon$, 1)
End If

Le nom et le chemin d'accès complet du fichier WAV est à mettre dans la variable "FichierSon$".
Exemple : FichierSon$="D:/medias/sons/homer.wav"
NB : La variable Res% est requise par la fonction car une fonction retourne un résultat et il faut bien que le résultat aille quelque part, mais la valeur retournée n'a aucune importance pour nous (je crois que ça retourne une certaine valeur si le fichier à bien étè joué, une autre valeur si il a eu un probléme).

L'idéal, c'est de regrouper tout ça dans une petite procédure qui évitera les plantages en vérifiant la présence d'une carte son :

Sub wav(FichierSon$)
  Stat% = waveOutGetNumDevs()
  If Stat% = 0 Then
    MsgBox "Pas de carte son sur cette machine !", 16
    End
  Else
    Res% = sndPlaySound(ByVal FichierSon$, 1)
  End If
End sub

Exemple d'utilisation :

Call wav("D:/medias/sons/homer.wav")