SDLEP-READER - Le pcb...!

Placez ici vos trucs et astuces, étalez sans retenue votre savoir-faire et votre science qui va nous permettre de redonner une apparence neuve et fonctionnelle à nos bouzes.

Modérateurs : Papy.G, fneck, Carl

Avatar de l’utilisateur
Falkor
Messages : 1701
Inscription : 28 juin 2010 12:09
Localisation : Cluny, Saône et Loire

Re: SDLEP-READER - Le pcb...!

Message par Falkor »

Nan nan c'est la photo !

Et oui, certaines inscriptions sont faites directement dans le cuivre...!
Avatar de l’utilisateur
Falkor
Messages : 1701
Inscription : 28 juin 2010 12:09
Localisation : Cluny, Saône et Loire

Re: SDLEP-READER - Le pcb...!

Message par Falkor »

Premiers essais du module hier soir.

Bonne nouvelle : j'ai du son :)

Mauvaise nouvelle : l'apple II relié au module reste complètement inerte :( . Tenté d'ajuster le niveau avec comme référence le son de mes enceintes, mais sans succès.

A l'oreille (quand je relie le module à mes enceintes) je trouve le son pas terrible, au sens où il ne sonne pas aussi propre que le wav original (qui précisons le passe parfaitement sur la machine).

J'avais effectué la conversion 44100Hz, 8bits avec l'utilitaire ffmpeg, je ne sais pas si le problème pourrait venir de là.

Daniel, si je t'envoie les wavs et le LEP résultant, tu pourrais jeter un oeil ?

Je posterai des photos à l"occasion. Petits soucis sur le module : le module CF qui vient s'enficher sous la carte est trop à gauche et "tape" dans le pied de la carte, ce qui rend l'ensemble bancal. Et le petit cavalier qui permet de bypasser le condo en sortie niveau ligne est trop proche de la arduino, il faut des doigts fins ou une pince pour mettre ou retirer le cavalier. :roll:
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: SDLEP-READER - Le pcb...!

Message par Daniel »

Effectivement, le problème peut venir du fichier .wav. Pour que le conversion au format .lep fonctionne bien il faut que les signaux aient une grande amplitude avec des fronts montants et descendant assez raides. Je peux examiner le fichier .wav, éventuellement le corriger pour qu'il fonctionne mieux. Quel est son origine ? Enregistré avec un magnétophone ou généré par programme ?
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
Falkor
Messages : 1701
Inscription : 28 juin 2010 12:09
Localisation : Cluny, Saône et Loire

Re: SDLEP-READER - Le pcb...!

Message par Falkor »

Pour ce cas précis, le WAV est d'origine internet (donc difficile à dire si c'est généré par logiciel ou non).

J'ai des fichiers WAV pour TRS-80 issus d'un utilitaire type CAS2WAV qui pour le coup devraient être plus propres. Pas testé sur machine encore.

Je t'envoie les fichiers par mail, merci !
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: SDLEP-READER - Le pcb...!

Message par Daniel »

Le fichier .wav d'othello est un enregistrement analogique d'une vieille cassette. Il ne peut pas convenir pour la conversion au format .lep, qui nécessite en entrée un fichier "propre" avec des créneaux bien calibrés.
othello.png
othello.png (44.83 Kio) Consulté 4364 fois
Exemple de fichier .wav utilisable pour la conversion :
addition.png
addition.png (54.73 Kio) Consulté 4364 fois
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
Falkor
Messages : 1701
Inscription : 28 juin 2010 12:09
Localisation : Cluny, Saône et Loire

Re: SDLEP-READER - Le pcb...!

Message par Falkor »

Ok. Et pour un cas comme ça, il y a une possibilité de s'en sortir tout de même ou c'est fichu ?

Je t'ai envoyé un autre fichier pour que tu me donnes ton avis.

Merci !
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: SDLEP-READER - Le pcb...!

Message par Daniel »

Pour le fichier Othello, il faut voir dans la communauté Apple s'il existe un programme de génération de fichier .wav à partir d'un fichier image de cassette. Sinon il faut l'écrire, sur le modèle de ceux que j'ai fait pour mo, to, alice, vg5000, exl100, hector...

Le cas de supernova est différent. Le fichier .wav est très propre, mais c'est un format peu courant que je n'ai jamais rencontré :
supernova.png
supernova.png (69.49 Kio) Consulté 4351 fois
SDLEP-READER peut générer un signal de la forme suivante :
supernova2.png
supernova2.png (38.22 Kio) Consulté 4351 fois
Il faudrait étudier le schéma de la machine et faire des tests pour savoir si c'est acceptable.
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
Falkor
Messages : 1701
Inscription : 28 juin 2010 12:09
Localisation : Cluny, Saône et Loire

Re: SDLEP-READER - Le pcb...!

Message par Falkor »

Super merci.

Pour Apple, je suis persuadé qu'un tel outil existe déjà. Reste le problème comme ici d'une cassette numérisée dont on a pas forcément une version "numérisée" sous forme d'image CAS ou similaire.

Pour l'autre type de fichier (TRS80), je tente ce soir si je peux. :)
Avatar de l’utilisateur
Falkor
Messages : 1701
Inscription : 28 juin 2010 12:09
Localisation : Cluny, Saône et Loire

Re: SDLEP-READER - Le pcb...!

Message par Falkor »

Bon, victoire pour le TRS-80. :)

Les fichiers WAV générés à partir d'images CAS passent parfaitement, tout comme des images de fichiers BASIC issus d'un émulateur. Le problème avec l'apple II venait donc bien de la qualité du WAV original. Je vais faire pareil que le TRS et repartir de fichiers images.

Pas testé toutefois le TRS avec la sortie "moteur", je n'ai pas encore câble les fils correspondants sur mon câble maison.

Astuce peut-être pour les utilisateurs de ce module : faire une feuille récapitulative du contenu de la carte SD avec pour chaque numéro de fichier le nom du programme, la machine, le temps de chargement... Pratique quand la carte contient beaucoup de fichiers. Mais bon, il y aura peut-être bientôt une version avec un écran et des boutons.... :wink:

Il est intéressant également de parler de l'utilitaire ffmpeg qui permet de convertir un wav aux spécifications requises par le convertisseur WAV->LEP de Daniel. La conversion se fait avec la ligne de commande suivante :

Code : Tout sélectionner

ffmpeg -i input.wav -ac 1   -c:a pcm_u8  -ar 44100  output.wav
Petite photo du résultat (désolé pas terrible, photo faite tard hier) :
trs1.jpg
trs1.jpg (93.54 Kio) Consulté 4331 fois
Et le chargement du jeu "Super nova":
trs2.jpg
trs2.jpg (58.38 Kio) Consulté 4331 fois
Testé 3-4 jeux assembleur, aucun souci.
Avatar de l’utilisateur
farvardin
Messages : 436
Inscription : 27 déc. 2014 16:07
Contact :

Re: SDLEP-READER - Le pcb...!

Message par farvardin »

cool, victoire, bravo Falkor !
Avatar de l’utilisateur
gleike
Messages : 1341
Inscription : 16 oct. 2014 11:12
Localisation : Ludres (54710) Meurthe & Moselle

Re: SDLEP-READER - Le pcb...!

Message par gleike »

Pour la conversion des WAV en 44100Hz 8 Bits mono j'utilise ce petit programme très léger (326 Ko)
et sans installation.
http://www.freesoundeditor.com/DownloadExe.htm

Falkor a écrit :il y aura peut-être bientôt une version avec un écran et des boutons....
Je termine actuellement la mise en boitier de ma version de SDlep reader avec afficheur et boutons :wink:
Avatar de l’utilisateur
Falkor
Messages : 1701
Inscription : 28 juin 2010 12:09
Localisation : Cluny, Saône et Loire

Re: SDLEP-READER - Le pcb...!

Message par Falkor »

gleike a écrit :Je termine actuellement la mise en boitier de ma version de SDlep reader avec afficheur et boutons :wink:
Sympa ! Il faudra que tu nous montres...!
Avatar de l’utilisateur
Falkor
Messages : 1701
Inscription : 28 juin 2010 12:09
Localisation : Cluny, Saône et Loire

Re: SDLEP-READER - Le pcb...!

Message par Falkor »

Testé hier le SDLEP avec mon Dragon 32. Succès !

Images cassettes trouvables ici, converties en WAV avec l'utilitaire DC-WIN.

Un seul jeu n'a pas voulu se charger, c'est peut-être un souci d'image. Tout les autres (basic et assembleur) se sont chargés sans soucis. :)

Rappel, les cassettes basic se chargent avec la commande CLOAD, les assembleur CLOADM.

@Daniel, est-il possible d'utiliser DCLEP en ligne de commande, de façon à pouvoir convertir une grande quantité de fichiers d'un coup :?:
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: SDLEP-READER - Le pcb...!

Message par Daniel »

Non, ce n'est pas prévu. Je donne ici les sources de DCLEP (pour Windows), si quelqu'un veut les améliorer ou les porter vers d'autres systèmes. J'ai ajouté le Dragon 32 à la liste de compatibilité de SDLEP-READER. Merci à Falkor pour les tests !

Code : Tout sélectionner

/*****************************************************************************\
* DCLEP.C - Conversion fichier .wav LEP Thomson vers fichier .lep             *
* Auteur : Daniel Coulom - danielcoulom@gmail.com                             *
* Creation : Decembre 2016                                                    *
\*****************************************************************************/

#include <windows.h>
#include <shlobj.h>
#include <stdio.h>

//Le delai entre deux fronts est exprimé dans l'unite ci-dessous, en µs
//Cette unite doit être assez petite pour exprimer des periodes courtes
//de l'ordre de 250 µs, et assez grande pour eviter de depasser 127 unites
//dans les passages enregistres. Un bon compromis est 50.
#define UNITE 50    //unite de la duree en microsecondes
#define SEUIL 100   //seuil de transition entre les etats 0 et 1

//Variables globales
HWND hdialogbox;
HWND hlistbox;
FILE *fwav;      //fichier .wav
FILE *flep;      //fichier .lep

char folder[MAX_PATH + 1];
char inputfilename[MAX_PATH];
char outputfilename[MAX_PATH];
char initialdir[MAX_PATH];
char version[11];
char string[255];

/*
===============================================================================
Format de cassette Thomson .lep
===============================================================================

Un fichier .lep est au depart une image de cassette Thomson, TO ou MO
Il permet de reproduire le signal en sortie des LEP TO et MO.
Par extension il peut aussi être utilisé pour tous les autres formats
d'enregistrement de données numériques sur des cassettes audio.

--------------
Format TO
--------------
Le signal enregistré sur la cassette est transformé en une suite de bits selon
le système d'encodage TO : 5 périodes à 4500 Hz donnent un bit 0, 7 périodes à
6300 Hz donnent un bit 1. Chaque octet utile commence par un bit de start à 0
et se termine par deux bits de stop à 1. Les séquences de synchronisation et
les passages non enregistrés sont remplacés par des bits à 1.
Un fichier .wav 44,1 kHz 8 bits mono est créé. Il est semblable à la sortie du
magnétophone TO. Il contient 49 échantillons par bit, avec un niveau haut pour
les bits 1 et un niveau bas pour les bits 0.

----------------------------
Format MO et autres formats
----------------------------
Le fichier .wav à 44,1 kHz 8 bits mono de la cassette est mis en forme pour
contenir des créneaux rectangulaires d'amplitude constante.

--------------
Fichier .lep
--------------
Chaque octet du fichier .lep contient la durée jusqu'au prochain changement de
valeur du signal. Cette durée N est exprimée dans l'unité donnée en paramètre
ci-dessus, avec le signe + pour les créneaux positifs et le signe - pour les
créneaux négatifs.
Si le nombre N est supérieur à 127, il y a un octet égal au reste de N/127
(ou 1 si le reste est nul) affecté du signe + ou - selon le sens du créneau,
suivi de N/127 octets à zéro.

===============================================================================
*/


//Initialisation de la version/////////////////////////////////////////////////
void Initversion()
{
 char months[] = "JanFebMarAprMayJunJulAugSepOctNovDec";
 char datecompil[12];
 char mois[3];
 char jour[3];
 //date de compilation
 strcpy(datecompil, __DATE__);
 datecompil[3] = datecompil[6] = 0;
 //mois
 sprintf(mois, "%02i", 1 + (strstr(months, datecompil) - months) / 3);
 //jour
 strcpy(jour, datecompil + 4);
 if(jour[0] < '0') jour[0] = '0';
 //version
 strcpy(version, datecompil + 7);
 strcat(version, ".");
 strcat(version, mois);
 strcat(version, ".");
 strcat(version, jour);
}

//Confirmation de l'utilisateur : si choix OK retour 0, sinon retour < 0 //////
int Prompt(int n)
{
 switch(n)
 {
  case 1 : strcpy(string, outputfilename);
           strcat(string, "\nexiste déjà, et sera écrasé. ");
           break;
  case 2 : strcpy(string, "La conversion va commencer. ");
           break;
  default: strcpy(string, "");
           break;
 }
 strcat(string, "Voulez-vous continuer ?");
 if(MessageBox(NULL, string, "Avertissement", MB_YESNO | MB_SYSTEMMODAL) == IDNO) return(-2);
 return(0);
}

//Affichage d'une ligne dans la LISTBOX////////////////////////////////////////
int Display(char *string)
{
 int count;
 SendMessage(hlistbox, LB_ADDSTRING, 0, (LPARAM)string);
 count = SendMessage(hlistbox, LB_GETCOUNT, 0, 0);
 SendMessage(hlistbox, LB_SETTOPINDEX, --count, 0);
 SendMessage(hlistbox, WM_PAINT, 0, 0);
 return(0);
}

//Callback pour Browsefolder///////////////////////////////////////////////////
int CALLBACK Browsefolderproc(HWND hwnd, UINT uMsg,LPARAM lParam,LPARAM lpData)
{
 if(uMsg != BFFM_INITIALIZED) return 0;
 SendMessage(hwnd, BFFM_SETSELECTION, TRUE,(LPARAM)initialdir);
 return 0;
}

//Choix d'un dossier///////////////////////////////////////////////////////////
int ChoixDossier(int i)
{
 BROWSEINFO bi;
 LPITEMIDLIST p;
 ZeroMemory(&bi, sizeof(bi));
 bi.ulFlags = BIF_USENEWUI | BIF_VALIDATE | BIF_BROWSEINCLUDEFILES;
 bi.lpfn = Browsefolderproc;
 switch(i)
 {
  case 1: //dossier pour ecrire les fichiers
   bi.lpszTitle = "Choisissez le dossier où les fichiers seront extraits";
   break;
  default: //dossier pour lire les fichiers
   bi.lpszTitle = "Choisissez le dossier où se trouvent les fichiers";
   break;
 }
 p = SHBrowseForFolder(&bi);
 if(p == 0) return(-1);
 SHGetPathFromIDList(p, folder);
 strcat(folder, "\\");
 sprintf(string, "Dossier %s", folder);
 Display(string);
 return 0;
}

//Choix du fichier a convertir/////////////////////////////////////////////////
void ChoixFichier()
{
 OPENFILENAME ofn;
 strcpy(inputfilename, "");
 ZeroMemory(&ofn, sizeof(ofn));
 ofn.lStructSize = sizeof(ofn);
 ofn.hwndOwner = NULL;
 ofn.lpstrFilter = "Tous fichiers";
 ofn.lpstrFile = inputfilename;
 ofn.nMaxFile = MAX_PATH;
 ofn.lpstrFileTitle = NULL;
 ofn.nMaxFileTitle = MAX_PATH;
 ofn.lpstrInitialDir = initialdir;
 ofn.Flags = OFN_HIDEREADONLY;
 ofn.lpstrDefExt = "*";
 GetOpenFileName(&ofn);
}

//Ecriture du fichier .lep ////////////////////////////////////////////////////
void Writelep(int sens, int duree)
{
 //duree = duree du creneau dans l'unite definie en parametre
 //sens = sens du creneau (0=negatif, 1=positif)
 int i;
 int duree127;
 int octet;
 duree127 = duree / 127;           //nombre de tranches de 127
 octet = duree - (127 * duree127); //valeur du premier octet
 if(octet == 0) octet++;           //0 dans le premier octet est remplace par 1
 if(sens == 0) octet = -octet;     //valeur negative pour les creneaux negatifs
 fputc(octet, flep);               //ecriture du premier octet
 for(i = 0; i < duree127; i++) fputc(0, flep); //ecriture des octets à zero
}

//Affichage du compte-rendu ///////////////////////////////////////////////////
void Displaydonnees(int count)
{
 if(count < 100) return;
 sprintf(string, "Données : %i ms", count * 10 / 441);
 Display(string);
}

void Displaysilence(int count)
{
 sprintf(string, "Silence : %i ms", count * 10 / 441);
 Display(string);
}

// 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);
}

// Ecriture d'un silence de x millisecondes ///////////////////////////////////
void TOsilence(int x)
{
 int i, imax;
 imax = x * 441 / 10;
 for(i = 0; i < imax; i++) fputc(128, fwav);
}

//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.");
}

//Conversion du fichier .wav en .lep //////////////////////////////////////////
void Makelep()
{
 int i;
 int sample, lastsample;
 int count;
 int donnees;
 int waverror;
 int nsamplepersecond;
 int nbytepersample;
 int nbitpersample;

 Display("");
 //ouverture du fichier .wav
 fwav = fopen(inputfilename, "rb");
 if(fwav == NULL)
 {
  Display("Erreur d'ouverture du fichier .wav");
  Display("Conversion abandonnée sur erreur.");
  return;
 }

 //lecture de l'en-tete du fichier wav
 waverror = 0;
 fseek(fwav, 0, SEEK_END);
 if(ftell(fwav) < 50) waverror = 1;
 fseek(fwav, 0x08, SEEK_SET);
 if(fgetc(fwav) != 'W') waverror = 1;
 if(fgetc(fwav) != 'A') waverror = 1;
 if(fgetc(fwav) != 'V') waverror = 1;
 if(fgetc(fwav) != 'E') waverror = 1;
 if(waverror)
 {
  Display("Erreur de structure du fichier .wav");
  Display("Conversion abandonnée sur erreur.");
  return;
 }
 fseek(fwav, 0x18, SEEK_SET);
 nsamplepersecond = fgetc(fwav);
 nsamplepersecond += 256 * fgetc(fwav);
 nsamplepersecond += 256 * 256 * fgetc(fwav);
 fseek(fwav, 0x20, SEEK_SET);
 nbytepersample = fgetc(fwav);        //33= octets/periode poids faible
 nbytepersample += 256 * fgetc(fwav); //34= octets/periode poids fort
 nbitpersample = fgetc(fwav);         //35= bits/echantillon poids faible
 nbitpersample += 256 * fgetc(fwav);  //36= bits/echantillon poids fort
 sprintf(string,
 "%i octet%s par période -\
 %i bits par échantillon -\
 %i échantillons par seconde",
 nbytepersample, (nbytepersample > 1) ? "s" : "",
 nbitpersample, nsamplepersecond);
 Display(string);
 Display("");
 waverror = 0;
 if(nbytepersample != 1) waverror = 1;
 if(nbitpersample != 8) waverror = 1;
 if(nsamplepersecond != 44100) waverror = 1;
 if(waverror)
 {
  Display("Le fichier .wav n'a pas le format 8 bits mono 44,1 kHz");
  Display("Conversion abandonnée sur erreur.");
  return;
 }

 //controle de non existence du fichier .lep
 strcpy(outputfilename, inputfilename);
 for(i = strlen(outputfilename); i > 0; i--)
  if(outputfilename[i] == '.') {outputfilename[i] = 0; break;}
 strcat(outputfilename, ".lep");
 if((flep = fopen(outputfilename, "rb")) != NULL)
 if(Prompt(1) != 0)
 {
  Display("Conversion abandonnée par l'utilisateur.");
  return;
 }
 if(flep != NULL) fclose(flep);
 //ouverture du fichier .lep
 if((flep = fopen(outputfilename, "wb+")) == NULL)
 {
  Display("Erreur d'ouverture du fichier .lep");
  Display("Conversion abandonnée sur erreur.");
  return;
 }

 //conversion du fichier .wav
 Display("Debut de la conversion");
 fseek(fwav, 48, SEEK_SET); //debut des donnees
 count = 0;
 donnees = 0;
 lastsample = 1;
 while((sample = fgetc(fwav)) != EOF)
 {
  count++;
  if(sample > SEUIL) sample = 1; else sample = 0; //phase normale
  if(sample == lastsample) continue; //pas de changement
  Writelep(lastsample, count * 10000 / UNITE / 441); //ecriture du fichier .lep
  if(count <= 4410) donnees += count; //donnees jusqu'à 1/10e de seconde
  else                                //silence au-dela de 1/10e de seconde
  {
   if(donnees > 0) {Displaydonnees(donnees); donnees = 0;}
   Displaysilence(count);
  }
  lastsample = sample;
  count = 0;
 }
 Writelep(lastsample, count * 10000 / UNITE / 441); //ecriture des derniers octets
 if(donnees > 0) Displaydonnees(donnees);
 if(count > 4410)  Displaysilence(count);

 //affichage d'un message de fin
 Display("");
 Display("Conversion terminée sans erreur.");
}

//Callback for DCLEP dialog ///////////////////////////////////////////////
BOOL CALLBACK
K7DlgProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
 int i;
 switch(Message)
 {
  case WM_INITDIALOG:
       SetWindowText(hwnd, string);
       strcpy(inputfilename, "");
       hdialogbox = hwnd;
       hlistbox = GetDlgItem(hwnd, 900);
       SendMessage(hlistbox, LB_SETHORIZONTALEXTENT, 800, 0);
       CheckRadioButton(hwnd, 730, 731, 730);
       return TRUE;

  case WM_COMMAND: switch(LOWORD(wParam))
  {
   case 601: //Parcourir
        ChoixFichier();
        strcpy(initialdir, inputfilename);
        for(i = strlen(initialdir); i > 0; i--)
         if(initialdir[i] == '\\') {initialdir[i] = 0; break;}
        SetDlgItemText(hwnd, 600, inputfilename);
        SendMessage(hlistbox, LB_RESETCONTENT, 0, 0);
        if(inputfilename[0] == 0) return TRUE;
        sprintf(string, "Fichier %s", inputfilename);
        Display(string);
        return TRUE;
   case IDRETRY:
        SendMessage(hlistbox, LB_RESETCONTENT, 0, 0);
        return TRUE;
   case IDOK:
        Display("");
        GetDlgItemText(hwnd, 600, inputfilename, MAX_PATH);
        if(IsDlgButtonChecked(hwnd, 730)) Makelep();
        if(IsDlgButtonChecked(hwnd, 731)) Makewav();
        if(fwav != NULL) fclose(fwav);
        if(flep != NULL) fclose(flep);
        return TRUE;
   case IDCANCEL:
        EndDialog(hwnd, IDCANCEL);
        return TRUE;
  }
  default: return FALSE;
 }
}

// main program //////////////////////////////////////////////////////////////
int WINAPI WinMain(HINSTANCE hinst, HINSTANCE hpre, LPSTR lpCmd, int nCmdShow)
{
 GetCurrentDirectory(MAX_PATH, initialdir);
 Initversion();
 sprintf(string,
 " DCLEP - Conversion de fichier .wav en .lep et .lep en .wav - Version %s", version);
 DialogBox(hinst, "dialogbox", NULL, K7DlgProc);
 return 0;
}

Code : Tout sélectionner

// resource file for dclep ////////////////////////////////////////////////////

#include <winresrc.h>

//Dialog Box
dialogbox DIALOGEX 30, 20, 345, 270
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION " " FONT 8, "MS Sans Serif"
{
 GROUPBOX "Fichier à convertir", -1, 5, 3, 335, 45, WS_GROUP //Fichier
 EDITTEXT 600, 10, 17, 325, 10, ES_AUTOHSCROLL
 PUSHBUTTON "Parcourir...",        601, 285, 30, 50, 10
 LISTBOX 900, 5, 55, 335, 190, WS_VSCROLL | WS_HSCROLL
 PUSHBUTTON "Quitter dclep",    IDCANCEL,      5, 250, 105, 15
 PUSHBUTTON "Effacer la fenêtre", IDRETRY,     120, 250, 105, 15
 DEFPUSHBUTTON "Exécuter la conversion", IDOK, 235, 250, 105, 15
 AUTORADIOBUTTON "wav->lep", 730, 10, 30, 50, 10
 AUTORADIOBUTTON "lep->wav", 731, 65, 30, 50, 10
}
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
Falkor
Messages : 1701
Inscription : 28 juin 2010 12:09
Localisation : Cluny, Saône et Loire

Re: SDLEP-READER - Le pcb...!

Message par Falkor »

Daniel a écrit :Le fichier .wav d'othello est un enregistrement analogique d'une vieille cassette. Il ne peut pas convenir pour la conversion au format .lep, qui nécessite en entrée un fichier "propre" avec des créneaux bien calibrés.
J'ai eu du retour de la personne de Brutal Deluxe : toutes les images présentes sur son site sont des numérisations que la personne à faite elle-même. J'ai tenté quelques autres fichiers, mais sans succès. :( J'ai regardé la tête des fichiers, je ne retrouve pas le genre de "défauts" comme sur la cassette d'othello, mais l'apple n'en veut toujours pas.

Je vais retenter en augmentant un peu le niveau, pour voir...
Répondre