/* Imaginer et creer par Abadie joris*/
/* en utilisant un concept de Andre pierre jocelyn*/
/*Cette oeuvre est protégée et n'est divulguée que pour utilisation sous linux dans les conditions Creative common ci-dessous*/
/* Cette oeuvre est mise à disposition selon les termes de la Licence Creative Commons Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique 2.0 France. */
/*Aucune garantie n'est donner sur les effets de cet executable*/
/**cette**application**a**pour**but**de*construire*le*fichier*dentete*utiliser*par*le*lecteur*de.fichier*/
/*audio*au*format*jo*en*additionnant*les*derer*sous*joa**/
/***attention code pour processeur 32 bits***sinon le long int ne donne*/
/* que deux octets a "durer et a longueur a la place de 4octet*sur le processeurs 16bits**/
/*dans le cas d'un processeur 16bits décommenté la ligne au dessus des durer et commenter la ligne actuelle**/
/***Le code ici utilise un entier long (long int)
pour avoir les 4 cotets de la durée
pour durer, longueur, nbdepoints, amplitude;
En cas d'architecture 64, il faut enlever te terme long pour avoir un int
OS arch size
Linux IA-32 4 octets
Linux Intel 64 8 octets
Linux IA-64 8 octets
*/
/***********mono****calcul_entete****/
/*******gcc -o calcul_entete calcul_entete.c *********/
#include <stdlib.h>
#include <stdio.h>
#define cecci1 "abadie.joa"
#define cecciaa "entete.txt"
#include <string.h>
#define efface "entetebase.wav"
long int durer, longueur, nbdepoints, amplitude;
int main(int argc, unsigned char *argv[])
{
durer = 0;
longueur = 0;
/*j ouvre mon fichier de donner*/
FILE* fichierjoa1 = NULL;
FILE* fichierjo1 = NULL;
fichierjoa1 = fopen(cecci1, "r");
fichierjo1 = fopen(cecciaa, "wb");
if (fichierjoa1 != NULL)
{
if (fichierjo1 != NULL)
{
while ( fscanf(fichierjoa1,"%ld %ld", &litude, &nbdepoints) !=EOF )
{
durer = durer + nbdepoints;
}
fprintf(fichierjo1, "%ld", durer);
/*ici*je*commence*le*traitement*comme*jécris*chaque*base*de*temps*sur*deux*octets*je*multiplis*par*2*/
durer = durer*2;
longueur = durer + 56 - 8;
fclose(fichierjo1), fichierjo1 = NULL;;
fclose(fichierjoa1), fichierjoa1 = NULL;;
}
}
FILE* debutwav = NULL;
debutwav = fopen(efface, "wb+");
if (debutwav != NULL)
{
/****declaration**type**audio*4octets**/
unsigned char riff[4] = {0x52,0x49,0x46,0x46};
fwrite(riff,1,sizeof(riff),debutwav);
/****longueur*du*fichier*audio*ici*21200**/
/*
unsigned char durera[4] = {0x32,0x65,0x0B,0x01};
fwrite(durera,1,sizeof(durera),debutwav);
*/
fwrite( &longueur , sizeof(longueur) , 1 , debutwav);
/****declaration**type**wave*4octets**/
unsigned char wave[4] = {0x57,0x41,0x56,0x45};
fwrite(wave,1,sizeof(wave),debutwav);
/****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),debutwav);
/****declaration**de*la*maniere d'écrire*sous forme*d'un*entier long (long 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),debutwav);
/****codage pour indiquer le PCM c'est : 1 soit 2octets**/
unsigned char pourpcm[2] = {0x01,0x00};
fwrite(pourpcm,1,sizeof(pourpcm),debutwav);
/****nombre de piste sur 2octets*ici c'est du mono, donc 1*/
unsigned char piste[2] = {0x01,0x00};
fwrite(piste,1,sizeof(piste),debutwav);
/**nombre d'échantillons par seconde**sur 4 octets**/
unsigned char tempsunitaire[4] = {0x44,0xAC,0x00,0x00};
fwrite(tempsunitaire,1,sizeof(tempsunitaire),debutwav);
/**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),debutwav);
/*taille en octet d'1 échantillon***sur*2octets**/
unsigned char tailleechant[2] = {0x02,0x00};
fwrite(tailleechant,1,sizeof(tailleechant),debutwav);
/*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),debutwav);
/**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),debutwav);
/****longueur*du*fichier*audio**/
/*
unsigned char durerb[4] = {0x0E,0x65,0x0B,0x01};
fwrite(durerb,1,sizeof(durerb),debutwav);
*/
fwrite( &durer , sizeof(durer) , 1 , debutwav);
fclose(debutwav), debutwav = NULL;;
}
return 0;
}