Génération de l'entête

// É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