Fichiers images de cassettes au format .lep

Tout ce qui concerne le logiciel original et sa sauvegarde avec entre autre la régénération des disquettes ou autres supports physiques.

Modérateurs : Papy.G, fneck, Carl

Daniel
Messages : 9612
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Fichiers images de cassettes au format .lep

Message par Daniel » 11 juin 2017 17:43

Non, mais ça serait facile à faire en partant des spécifications du fichier .lep

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.");
}
Et la fonction de création de l'entête du fichier .wav :

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);
}
Daniel
L'obstacle augmente mon ardeur.

Avatar du membre
Falkor
Messages : 528
Enregistré le : 28 juin 2010 12:09
Localisation : Cluny, Saône et Loire

Re: Fichiers images de cassettes au format .lep

Message par Falkor » 12 juin 2017 08:00

Super merci ! Je prépare et je diffuse un petit utilitaire.

Daniel
Messages : 9612
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Fichiers images de cassettes au format .lep

Message par Daniel » 12 juin 2017 09:20

Dans le code il faut évidemment ajouter la déclaration et l'initialisation des noms de fichiers, et la fonction Display(char *).
Et surtout il manque cette définition :

Code : Tout sélectionner

#define UNITE 50    //unite de la duree en microsecondes
Daniel
L'obstacle augmente mon ardeur.

Avatar du membre
Falkor
Messages : 528
Enregistré le : 28 juin 2010 12:09
Localisation : Cluny, Saône et Loire

Re: Fichiers images de cassettes au format .lep

Message par Falkor » 12 juin 2017 12:12

Ok. Et "Prompt()" c'est quoi ?

Daniel
Messages : 9612
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Fichiers images de cassettes au format .lep

Message par Daniel » 12 juin 2017 22:01

La fonction Prompt() affiche un message pour signaler que le fichier à créer existe déjà. L'utilisateur peut répondre "Abandonner" ou "Continuer". Ce n'est pas très important, on peut systématiquement écraser le fichier s'il existe.
Daniel
L'obstacle augmente mon ardeur.

Avatar du membre
Carl
Modérateur
Messages : 9748
Enregistré le : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: Fichiers images de cassettes au format .lep

Message par Carl » 12 juin 2017 23:00

la solution Arduino SDLEP est supérieur au Wav PC car dans un cas le remote est géré et pas dans l'autre...et je peux dire que la gestion remote est fort appréciable...voir indispensable.

Carl

Répondre