// Écrit l'en-tête wave du fichier cn.wav en fonction du fichier cn.jo static void enteteFichierWave(FILE* fichierwav, FILE* fichierjo) { int nbdepoints = nbdepointsFichierJo(fichierjo); /*ici*je*commence*le*traitement*comme*jécris*chaque*base*de*temps*sur*deux*octets*je*multiplis*par*2*/ int durerentete = nbdepoints * 2; int longueurentete = durerentete + 56 - 8; /****declaration**type**audio*4octets**/ unsigned char riff[4] = { 0x52, 0x49, 0x46, 0x46 }; fwrite (riff, 1, sizeof (riff), fichierwav); /****longueurentete*du*fichier*audio*ici*21200**/ fwrite (&longueurentete, sizeof (longueurentete), 1, fichierwav); /****declaration**type**wave*4octets**/ unsigned char wave[4] = { 0x57, 0x41, 0x56, 0x45 }; fwrite (wave, 1, sizeof (wave), fichierwav); /****declaration**type**fmt suivit d'un espace qui s'écrit 0x20 soit 4octets**/ unsigned char fmt[4] = { 0x66, 0x6D, 0x74, 0x20 }; fwrite (fmt, 1, sizeof (fmt), fichierwav); /****declaration**de*la*maniere d'écrire*sous forme*d'un*entier long (unsigned int) soit 4octets**/ /**comme c'est du 16 octets en exadécimal cela donne 0x10****/ unsigned char poids[4] = { 0x10, 0x00, 0x00, 0x00 }; fwrite (poids, 1, sizeof (poids), fichierwav); /****codage pour indiquer le PCM c'est : 1 soit 2octets**/ unsigned char pourpcm[2] = { 0x01, 0x00 }; fwrite (pourpcm, 1, sizeof (pourpcm), fichierwav); /****nombre de piste sur 2octets*ici c'est du mono, donc 1*/ unsigned char piste[2] = { 0x01, 0x00 }; fwrite (piste, 1, sizeof (piste), fichierwav); /**nombre d'échantillons par seconde**sur 4 octets**/ unsigned char tempsunitaire[4] = { 0x44, 0xAC, 0x00, 0x00 }; fwrite (tempsunitaire, 1, sizeof (tempsunitaire), fichierwav); /**nombre d'octets par secondes**sur 4 octets***le*double*du*précédent*dans*ce*cas*/ unsigned char octetpars[4] = { 0x88, 0x58, 0x01, 0x00 }; fwrite (octetpars, 1, sizeof (octetpars), fichierwav); /*taille en octet d'1 échantillon***sur*2octets**/ unsigned char tailleechant[2] = { 0x02, 0x00 }; fwrite (tailleechant, 1, sizeof (tailleechant), fichierwav); /*contient le nombre de bits par échantillon*2x8=16*soit*10*en*exa**sur*2octets**/ unsigned char bitparechan[2] = { 0x10, 0x00 }; fwrite (bitparechan, 1, sizeof (bitparechan), fichierwav); /**On ecrit ici data pour dire que le fichier commence**sur 4cotets**/ unsigned char mono[4] = { 0x64, 0x61, 0x74, 0x61 }; fwrite (mono, 1, sizeof (mono), fichierwav); fwrite (&durerentete, sizeof (durerentete), 1, fichierwav); }
C'est du langage C++ qui dit d'ouvrir mon fichier au format abadie.jo et d'incrémenter les temps de chaque front, pour obtenir la somme totale en durée de tous les fronts. Cette écriture est destinée à un format abadie.jo, composé de 2 valeurs par front, son amplitude par rapport à la pression ambiante et sa durée. .
Contact et support: Joris Abadie