Voila un petit tutorial pour le module Direct Sound de DirectX 7.
Ce module est assez simple a utilisé par rapport a DirectDraw ou Direct 3D. Pour commencer, on va apprendre a lire un fichier .WAV, j' espère bientot trouver le moyen de lire les fichiers .MP3.
1° Déclarer DirectSound
Les déclarations obligatoires:
Déclare l' objet DirectX
Public DirectX As New DirectX7
Déclare l' objet Direct Sound
Public DS As DirectSound
Déclare le buffer, la ou on va mettre le son en mémoire, pour qu 'il soit utilisable par DirectSound.
Public DSBuffer As DirectSoundBuffer
2° Créé l' objet DS
Set DS = DirectX.DirectSoundCreate("")
Utilise une Form pour créé l' objet.
DS.SetCooperativeLevel Form1.hWnd, DSSCL_PRIORITY
3° La fonction de lecture
Créé bufferDesc, le buffer principale
Dim bufferDesc As DSBUFFERDESC
Le code qui suis, difficile à comprendre, sert à informer DirectSound que l' on va utiliser le format .WAV, et créé le son à partir d' 1 fichier.
Dim waveFormat As WAVEFORMATEX
bufferDesc.lFlags = DSBCAPS_CTRLFREQUENCY Or DSBCAPS_CTRLPAN Or DSBCAPS_CTRLVOLUME Or DSBCAPS_STATIC
waveFormat.nFormatTag = WAVE_FORMAT_PCM
waveFormat.nChannels = 2
waveFormat.lSamplesPerSec = 22050
waveFormat.nBitsPerSample = 16
waveFormat.nBlockAlign = waveFormat.nBitsPerSample / 8 * waveFormat.nChannels
waveFormat.lAvgBytesPerSec = waveFormat.lSamplesPerSec * waveFormat.nBlockAlign
Ici, on charge le fichier dans le buffer, et on lance la lecture.
Set DSBuffer = DS.CreateSoundBufferFromFile(File, bufferDesc, waveFormat)
4° Fonctions complémentaires
Pour stoper la lecture
DSBuffer.Stop
Pour lire
DSBuffer.Play DSBPLAY_DEFAULT
Voila comme on me l' a demandé une fonction pour changer le volume:
Il faut utilisé l' instruction SetVolume sur le Buffer DS.
Le volume du Buffer doit theoriquement etre compris entre 0 (max) et
-5000 (min), ici il y a une fonction de régulation.
Function Volume(vol As Long)
If vol > 0 Then vol = 0
If vol < -5000 Then vol = -5000
DSBuffer.SetVolume vol
End Function
Bon, si on resume, voila le code: