begin process at 2010 02 09 22:55:48
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Direct X

 > DIRECTX TUTO 5 : GÉRER LE SON

DIRECTX TUTO 5 : GÉRER LE SON


 Information sur la source

Note :
Aucune note
Catégorie :Direct X Niveau :Débutant Date de création :21/06/2004 Date de mise à jour :21/06/2004 20:53:43 Vu / téléchargé :3 287 / 445

Auteur : ciberrique

Ecrire un message privé
Site perso
Commentaire sur cette source (19)
Ajouter un commentaire et/ou une note

 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

  • 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.
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 ......

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip TUTO DIRECT3D 1 : INITIALISATION
Source avec Zip Source avec une capture TUTO 11 DIRECTX : DIRECTSHOW LES VIDEO DANS VOS JEUX.
Source avec Zip Source avec une capture TUTO TILE 7 : PASSAGE À L'ISOMÉTRIQUE
Source avec Zip Source avec une capture LECTEUR DE FICHIER MS3D ASCII
Source avec Zip Source avec une capture METHODE SUPERMAP, TUTO TILES 6 !

 Sources de la même categorie

Source avec Zip Source avec une capture BREAKERBAWL par xranto
Source avec Zip JEU DE LA ROUE DE LA CHANCE par yvesdudu
Source avec Zip TUTO DIRECT3D 1 : INITIALISATION par ciberrique
Source avec Zip Source avec une capture ENVIRONEMENT 3D A LA PREMIÈRE PERSONNE. DIRECTX8 par djine
Source avec une capture Source .NET (Dotnet) APPLIQUER UNE RESOLUTION GRÂCE À DIRECTDRAW par tinux

Commentaires et avis

Commentaire de ennatijkhalil le 22/06/2004 10:44:56

merci pour les constructeure  de ce site

Commentaire de dragon_rouge le 23/06/2004 14:02:51

Super j'ai deja vu les 4 premier et se tuto sur le son tombe bien

Commentaire de ciberrique le 23/06/2004 14:10:09

Merci dragon_rouge, si vous voulez d'autre tuto, faut me dire le sujet bien sur le theme c'est directx, par contre je prefere le dire d'avance pas de 3d ...

Bon coding.

Commentaire de vlad2i le 24/06/2004 10:04:58

:P Coucou :P C'est encore moi :P

Désolé de passer pas souvent :P

(Hep boy continues comme ca hehe)

Pour info - DirectMusic pour les MIDI, DirectPlay pour les ASX, OGG, MP3

P.S. : C'est quand que tu te mets à la 3D hehe :P

Vlad (:P)

Commentaire de ciberrique le 24/06/2004 11:47:40

Héhé Vlad, c'est pas que je veux pas pour la 3d mais deja j'ai un jeu en cour (avec un EDITEUR DE NIVEAU) et ensuite un logiciel de p2p ( avec un systeme de transfert !!!)  et puis la 3d c'est mieu quand il y a une equipe, car autrement c'est encore plus de code ...

Quand à DirectMusic je savais, mais j'arrive po (snif) et DirectPlay je savais pas et les mp3 ne ralentisse pas ???

a++

Commentaire de bierman le 30/07/2004 01:46:40

bonjour,

t'es-tu penché sur la capture audio avec directsound ?

Commentaire de ciberrique le 30/07/2004 10:13:43

Non dsl je fais pas de jeu en résaux donc j'utilise pas direct sound dans le but de capturer du son dsl mais tu devrai trouver sa sur google.

Commentaire de bierman le 30/07/2004 13:29:33

ok merci

Commentaire de sergiooi le 28/01/2007 22:35:28

Super ce code . Il marche bien mais une question, pourquoi, si je l'insere dans mon projet, il me dit:"user-defined type not defined" peux tu m'aider???

merci pour tout ces bons tutos!!

Commentaire de ciberrique le 28/01/2007 22:37:28

Hum, il te dis ca ou ?
as tu pensé a mettre dx7 en ref.

Commentaire de sergiooi le 28/01/2007 22:40:07

il me dit ca quand je demarre le projet il me dit ca pour "directx7"

Commentaire de sergiooi le 28/01/2007 22:42:30

dsl  clicker mauvais bouton.....
que veux tu dire pas dx7 en ref??? je suis un peu débutant...
mais merci!!

Commentaire de ciberrique le 28/01/2007 22:44:42

Dans le menu de vb6 :
Projet/Reference
Tu coche DirectX 7 for visual basic type library.

Commentaire de sergiooi le 28/01/2007 22:50:42

un gros merci Ciberrique!!! c'était ca le probleme... heureusement quil y a ce site! MERCI!

Commentaire de ciberrique le 28/01/2007 22:52:21

De rien c'est normal, ^^.

Commentaire de sergiooi le 30/01/2007 21:51:46

Hey ! Salut!  je sais que ce n'est pas le bon topic mais je ne trouve pas ce que je cherche... :(
Connais tu un tuto sur comment coder un "IA" pour que dans un jeu tour par tour, l'ordinateur joue automatiquement.

si non  , merci quand meme!!!

Commentaire de ciberrique le 30/01/2007 22:23:15

Salut (deja un bon point tu as dis salut^^).
Alors effectivement ce n'est pas le bon topic, pour poser une question tu as une rubrique sur le forum (j'ai besoin d'aide).
Autrement, pour l'IA je dirais que je ne connais aucun tuto dessus :s.

Toutefois, suivant ce que tu veux faire j'accepte de t'aider. Mais, quand tu dis l'ordinateur joue automatiquement, ca veux dire quoi ? En gros qu'est ce que fait l'ordinateur. Ensuite tour par tour, tu veux dire que tu fais un jeu d'echec ?

Commentaire de sergiooi le 30/01/2007 22:30:59

re salut!!! non ce n'est pas un jeu d'échec, c'est un jeu de tetra master(ff9). L'ordinateur joue(choisis une place et si elle est libre, joue la carte). jutilise des frames pour la couleurs des cartes(bleu pour player , rouge pour cpu et gris pour case libre) et j'ai mis des picturebox au milieu de chaque frames (pour afficher la carte).
si tu peux m'éclairer un peu ce serais tres apprécié et surtout ,merci d'avance!!

Commentaire de ciberrique le 30/01/2007 22:54:11

Je ne vois pas le probleme en faite.

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,920 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales