Directx tuto 5 : gérer le son

Description

JE CONSIDÈRE QUE VOUS AVEZ AU MINIMUM LES CONNAISSANCES PRÉSENTES DANS MES PRÉCÉDENTS TUTORIAUX.

Salut tous les codeurs, se tuto est pour tous le monde, mais je le fais suite à la demande de gandalfkhorne, donc je vais vous expliquez comment mettre un peux de son dans vos applications directX.

Veuillez m'excuser, mais je ne sais pas encore utiliser le midi donc je ferai pour l'instant que le wav.

Source / Exemple :


Tous d abord se le format WAV (Waveform Audio Vector) à était créé par Microsoft. 8, 16 ou 32 bits avec des fréquences de 11 à 44 KHz (en général) et mono ou stéréo, c'est ce que nous allons gérer.

Pour pouvoir utiliser les fichiers au format wav il faut utiliser DirectSound, donc initialiser celui-ci en premier :

Public DS               As DirectSound               ' Explicite non ?

Ensuite il faut donner les informations nécessaires à directsound pour qu'il sache lire notre format wav :

Set DS = DX.DirectSoundCreate("")                      'Pas de problème, création de ' l'objet DirectSound

    DS.SetCooperativeLevel Form1.hWnd, DSSCL_PRIORITY   'C'est la form 1 qui 
'gère les sorties du son et que c'est notre application qui a les priorités sur les 
'autres (au niveau du son)

    If Err.Number <> 0 Then          'Dans le cas d'une erreur
                 MsgBox ("Impossible de démarrer DirectSound. Vérifiez que votre carte son est bien installée.")
                 End                          ' On arrete l'application
    End If
    
    
Dim bufferDesc As DSBUFFERDESC          'Cette variable accueille les caractéristiques 'nécessaires à la lecture.

bufferDesc.lFlags = DSBCAPS_CTRLFREQUENCY Or DSBCAPS_CTRLPAN Or DSBCAPS_CTRLVOLUME Or DSBCAPS_STATIC
'Les modes du format, la fréquence, le pan, le volume et on charge tout le fichier 
'son en mémoire avec DSBCAPS_STATIC

    Dim waveFormat As WAVEFORMATEX                      'Définition du format wav 
'dans cette variable
waveFormat.nFormatTag = WAVE_FORMAT_PCM     'PCM = Pulse Code Modulation
waveFormat.nChannels = 2                                  'Rappeler vous les vieux nous
waveFormat.lSamplesPerSec = 22050                    'devions spécifier tout cela ...
waveFormat.nBitsPerSample = 16
waveFormat.nBlockAlign = waveFormat.nBitsPerSample / 8 * waveFormat.nChannels
    
waveFormat.lAvgBytesPerSec = waveFormat.lSamplesPerSec * waveFormat.nBlockAlign

Et voilà maintenant on est prés à mettre en mémoire un fichier wav pour le jouer.

C est presque comme pour DirectDraw :

Dim MonWAV As DirectSoundBuffer        'Création d'une mémoire accueillant le 'fichier son

Set MonWAV = DS.CreateSoundBufferFromFile(App.Path & "\MonWAV", bufferDesc, waveFormat)     'On donne le path du fichier

Et voila notre fichier son est en mémoire.

Pour le jouer rien de plus simple :

MonWAV.Play DSBPLAY_DEFAULT     'Play = jouer (lol)

Et voila pas plus pour un fichier son.

Conclusion :


Voili voilou, ce tuto un peu cour vous permet de mettre du son dans votre application .....

Vous pouvez même mettre une partie de ce code dans le moteur de mon précédent tuto ......

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.