Réponse acceptée !
moi j'utilise ce bout de code:
WAVEFORMATEX recordingType;
recordingType.wFormatTag = WAVE_FORMAT_PCM;
recordingType.nChannels = 1; // 1 ou 2 selon si c'est mono ou stereo
recordingType.nSamplesPerSec = _fs; // frequence d'echantillonage
recordingType.wBitsPerSample = 16; // nb de bytes par echantillon
recordingType.nBlockAlign = (recordingType.nChannels * recordingType.wBitsPerSample) / 8; // aucune idée
recordingType.nAvgBytesPerSec = recordingType.nSamplesPerSec * recordingType.nBlockAlign; // aucune idée
//j'utilise un WAVEFORMATEX pour initialiser la carte son mais dans ton cas c'est peu etre pas utile
DWORD lTaille_Donnees ;
//creation de l'entete de mon fichier wav
DWORD lNb_Bytes ;
hFichier = CreateFile("record.wav", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
DWORD dwTemp = 0;
WORD dTemp = 0;
WriteFile(hFichier, "RIFF", 4, &lNb_Bytes, NULL);
dwTemp = 0;
WriteFile(hFichier, &dwTemp, 4, &lNb_Bytes, NULL);
WriteFile(hFichier, "WAVE", 4, &lNb_Bytes, NULL);
WriteFile(hFichier, "fmt ", 4, &lNb_Bytes, NULL);
dwTemp = 16;
WriteFile(hFichier, &dwTemp, 4, &lNb_Bytes, NULL);
dTemp = WAVE_FORMAT_PCM;
WriteFile(hFichier, &dTemp, 2, &lNb_Bytes, NULL);
dTemp = recordingType.nChannels;
WriteFile(hFichier, &dTemp, 2, &lNb_Bytes, NULL);
dwTemp = recordingType.nSamplesPerSec;
WriteFile(hFichier, &dwTemp, 4, &lNb_Bytes, NULL);
dwTemp = recordingType.nAvgBytesPerSec;
WriteFile(hFichier, &dwTemp, 4, &lNb_Bytes, NULL);
dTemp = recordingType.nBlockAlign;
WriteFile(hFichier, &dTemp, 2, &lNb_Bytes, NULL);
dTemp = recordingType.wBitsPerSample;
WriteFile(hFichier, &dTemp, 2, &lNb_Bytes, NULL);
WriteFile(hFichier, "data", 4, &lNb_Bytes, NULL);
dwTemp = 0;
WriteFile(hFichier, &dwTemp, 4, &lNb_Bytes, NULL);
lTaille_Donnees =0;
///////////////////////////////////////////////////////////////////
// ajout des echantillons
DWORD lNb_Bytes;
WriteFile(hFichier, ( Nom de ton buffer contenant le son) , ( Nombre de bytes de ton buffer contenant le son) , &lNb_Bytes, NULL);
lTaille_Donnees += lNb_Bytes;
//////////////////////////////////////////////////////////////////////////////
// mise a jour de l'entete
DWORD dwTemp,lNb_Bytes;
dwTemp = lTaille_Donnees + 36;
SetFilePointer(hFichier, 4, NULL, FILE_BEGIN);
WriteFile(hFichier, &dwTemp, 4, &lNb_Bytes, NULL);
dwTemp = lTaille_Donnees;
SetFilePointer(hFichier, 40, NULL, FILE_BEGIN);
WriteFile(hFichier, &dwTemp, 4, &lNb_Bytes, NULL);
il se peut que j'ai oublié des trucs, mais je ne pense pas....
ceci dit vu la date du dernier message t'as peut etre déja trouvé