programmation directsound

programmation directsound - Programmation

Marsh Posté le 30-11-2001 à 18:34:06    

bonjour,  
je voudrais savoir comment faire pour jouer un fichier wav avec directsound.
quelqu'un aurait-il un bout de code ? merci

Reply

Marsh Posté le 30-11-2001 à 18:34:06   

Reply

Marsh Posté le 30-11-2001 à 18:47:30    

je connais pas spécialement directsound mais si tu veut juste lire un fichier .wav, tu peut aussi bien te servir de l'api win32 avec la fonction PlaySound. bien sur, ça n'a rien à voir au niveau perfs :)


---------------
mon site sur opengl/dx8 : www.glinfrench.fr.st
Reply

Marsh Posté le 01-12-2001 à 15:11:11    

sinon t'as un cours en anglais là :
 
http://www.2dgame.nl/Tutorial_sound_music.asp


---------------
mon site sur opengl/dx8 : www.glinfrench.fr.st
Reply

Marsh Posté le 01-12-2001 à 18:40:14    

Sinon tu as aussi le SDK (outils de développement) ou l'on explique tout ca, exemple a l'appuye (me SDK se trouve sur le site de Microsoft)

Reply

Marsh Posté le 01-12-2001 à 23:08:02    

Lecture d'un .wav (bout de code a moi un peu rectif pour que ca soit comprehensible ...)
 
c pas ce qui se fait de mieux mais si ca peut aider....
 
 

Code :
  1. class soundBuffer
  2. {
  3. ..
  4.     unsigned char *dataBuffer;
  5.     unsigned short numberOfChannel;
  6.     unsigned short avgBytePerSec;
  7.     unsigned int blockAlign;
  8.     unsigned int   sampleRate;
  9.     unsigned short nbBits;
  10.     unsigned int size;
  11. }
  12. int soundBuffer::loadFromWav(FILE *in)
  13. {
  14.     if (!in)
  15.         return SB_FILENOTFOUND;
  16.    int start = ftell(in);
  17.     //on commence la lecture du .wav
  18.     char header[10];
  19.     memset(header,0,10);
  20.     unsigned int formatLenght;
  21.     /////////////////////////////
  22.     // lecture de l'header
  23.     /////////////////////////////
  24.    
  25.     fread(header,4,1,in);
  26.     if (strcmp(header,"RIFF" ))
  27.     {
  28.         writeError("file is not a valid RIFF file" );
  29.         return SB_BADFORMAT;
  30.     }
  31.     unsigned int tInt;
  32.     fread(&tInt,4,1,in);
  33.     fread(header,4,1,in);
  34.     if (strcmp(header,"WAVE" ))
  35.     {
  36.         writeError("file  is not a valid WAV file" );
  37.         return SB_BADFORMAT;
  38.     }
  39.    
  40.     fread(header,4,1,in);       //contient "fmt "
  41.     //////////////////////////////////////
  42.     // lecture des infos relative au son
  43.     /////////////////////////////////////
  44.     fread(&formatLenght,4,1,in);
  45.     unsigned short machin;
  46.     fread(&machin,2,1,in);
  47.  
  48.    
  49.     fread(&numberOfChannel, sizeof(short),1,in);  //1 mono, 2 stereo
  50.     fread(&sampleRate, sizeof(DWORD), 1, in);   //genre 44100, 22050, etc...
  51.     fread(&avgBytePerSec, sizeof(WORD), 1, in);
  52.     fread(&blockAlign, sizeof(DWORD), 1, in);     //alignement (?)
  53.     int tttt = ftell(in);
  54.     fread(&nbBits, sizeof(WORD), 1, in);    //8 bit ou 16 bit ?
  55. ///////////////////////////////////
  56. //saut pour changer de chunk
  57. ///////////////////////////////////
  58.     fseek(in,formatLenght + 20 + start,SEEK_SET);
  59.     fread(header, sizeof(BYTE), 4, in);    //contient 'data'
  60.     fread(&size, sizeof(DWORD), 1, in);    //taille du son
  61. if (!strcmp(header,"fact" ))
  62. {
  63.  //pas la moindre idée de ce qu'est le chunk 'fact'
  64.  //je le saute  
  65.  fseek(in,size,SEEK_CUR);
  66.  fread(header, sizeof(BYTE), 4, in);    //contient 'data'
  67.  fread(&size, sizeof(DWORD), 1, in);    //taille du son
  68. }
  69. //donc la, on est sur le chunk 'data'
  70. //contenant le son  
  71.     //allocation du son
  72.     dataBuffer = new unsigned char[size];
  73.     fread(dataBuffer,size,1,in);
  74.      
  75.     return SB_OK;
  76. }


 
 
Ensuite t'as plus qu'a creer un buffer dsound qui correspont au infos, recopier le champ dataBuffer dedans  et vala

 

[edtdd]--Message édité par chrisbk--[/edtdd]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed