Voici un petit bout de code pour transformer le fichier .lep en .wav :
Code : Tout sélectionner
FILE *fwav; //fichier .wav
FILE *flep; //fichier .lep
//Conversion du fichier .lep en .wav //////////////////////////////////////////
void Makewav()
{
int i, imax;
int octet, sample;
Display("");
//ouverture du fichier .lep
flep = fopen(inputfilename, "rb");
if(flep == NULL)
{
Display("Erreur d'ouverture du fichier .lep");
Display("Conversion abandonnée sur erreur.");
return;
}
//controle de non existence du fichier .wav
strcpy(outputfilename, inputfilename);
for(i = strlen(outputfilename); i > 0; i--)
if(outputfilename[i] == '.') {outputfilename[i] = 0; break;}
strcat(outputfilename, ".wav");
if((fwav = fopen(outputfilename, "rb")) != NULL)
if(Prompt(1) != 0)
{
Display("Conversion abandonnée par l'utilisateur.");
return;
}
if(fwav != NULL) fclose(fwav);
//ouverture du fichier .lep
if((fwav = fopen(outputfilename, "wb+")) == NULL)
{
Display("Erreur d'ouverture du fichier .wav");
Display("Conversion abandonnée sur erreur.");
return;
}
//conversion du fichier .lep
Display("Debut de la conversion");
Writewavheader();
sample = 232;
while((octet = fgetc(flep)) != EOF)
{
if(octet == 0) imax = 127;
else
{
if(octet < 128) {sample = 232; imax = octet;}
if(octet > 127) {sample = 24; imax = 256 - octet;}
}
imax *= UNITE * 441; //nombre d'echantillons * 10000
imax += 5000; //pour l'arrondi a la valeur la plus proche
imax /= 10000; //nombre d'echantillons
for(i = 0; i < imax; i++) fputc(sample, fwav);
}
//mise a jour de l'entete du fichier wav
i = ftell(fwav) - 8;
sprintf(string, "Longueur du fichier .wav : %i octets", i);
Display(string);
fseek(fwav, 4, SEEK_SET);
fwrite (&i, 4, 1, fwav);
i -= 37;
fseek(fwav, 40, SEEK_SET);
fwrite (&i, 4, 1, fwav);
//affichage d'un message de fin
Display("");
Display("Conversion terminée sans erreur.");
}
Code : Tout sélectionner
// Ecriture de l'en-tete du fichier .wav///////////////////////////////////////
void Writewavheader()
{
int i;
char entete[44] = //44100 Hz
{0x52,0x49,0x46,0x46,0x00,0x00,0x00,0x00,0x57,0x41,0x56,0x45,0x66,0x6d,0x74,
0x20,0x10,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x44,0xac,0x00,0x00,0x44,0xac,
0x00,0x00,0x01,0x00,0x08,0x00,0x64,0x61,0x74,0x61,0x00,0x00,0x00,0x00};
for(i = 0; i < sizeof(entete); i++) fputc(entete[i], fwav);
}