SDLEP-READER remplace tous les magnétophones d'ordinateurs.

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 : Carl, Papy.G, fneck

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

Re: SDLEP-READER remplace tous les magnétophones d'ordinateurs.

Message par Daniel » 05 mars 2018 14:11

@Voyageur : Merci pour ce retour d'information. Faire un article sur SDLEP-READER est une bonne idée pour faire connaître ce système.

Quant à vouloir développer avec un Arduino un périphérique capable d'enregistrer la sortie de l'ordinateur dans un fichier .lep, j'ai exactement les mêmes arguments que hlide pour dire que c'est extrêmement difficile. J'en ajoute un autre : il n'est pas sûr que l'Arduino soit assez rapide pour lire le signal, le coder au format .lep et l'écrire sur la carte SD en temps réel.

Au départ, SDLEP-READER a été développé pour Thomson dans le but de lire les programmes sur cassette n'ayant pas encore été convertis en disquette. Avec les ordinateurs Thomson l'écriture d'une cassette n'a aucun intérêt, il est beaucoup plus simple et cent fois plus rapide d'écrire dans une image de disquette sur carte SD, ou même dans une "vraie" disquette.

Pour d'autres ordinateurs ne disposant pas de disquette ni de carte SD, je conçois bien que l'écriture d'une cassette soit nécessaire. Je souhaite bon courage au développeur qui voudra se lancer dans le projet.
Daniel
L'obstacle augmente mon ardeur.

hlide
Messages : 387
Enregistré le : 29 nov. 2017 10:23

Re: SDLEP-READER remplace tous les magnétophones d'ordinateurs.

Message par hlide » 06 mars 2018 11:53

Pas impossible mais avec des limitations : http://tmrh20.github.io/AAAudio/

- il faut utiliser la libraririe SdFat qui est nettement plus rapide que la librarie Sd standard.
- dans le cas d'un UNO/NANO/MEGA, il peut lire jusqu'à du WAV 24-32 KHz, 8-bit, mono et enregistrer du 11-16 KHz.

Cependant le source utilise par défaut du 16KHz pour du 16MHz.

Ce que j'en pense :
- l'écriture DAC se fait apparemment au travers d'un timer #1 avec un buffer de 128 octets (paramétrable) - on capture donc un sample avec une périodicité précise en libérant des cycles CPU pour faire autre chose en parallèle hors interruption.
- la lecture ADC se fait apparemment au travers d'une DMA avec un buffer de 128 octets (paramétrable) - on émet donc un sample avec une périodicité précise en libérant des cycles CPU pour faire autre chose en parallèle.
- si on converti directement le sample en LEP et non en WAV, on a beaucoup moins d'activité d'écriture dans le SD et donc on est moins sensible au temps passé à écrire un octet dans le SD. En effet, en lisant le sample dans l'interruption, on détermine en fonction d'un seuil si le signal est haut ou bas, et tant que le créneau reste le même à chaque sample, on n'écrit pas l'octet final dans le buffer sauf si le nombre de samples excède ce que l'octet peut encoder. Bref, on reprend l'algorithme de conversion de DCLEP : l'activité DMA fait le travail de remplir le buffer avec des données LEP. En dehors de l'interruption, on vide le buffer dans le SD avec moins de pression que si ça avait été des samples WAV car le nombre d'octet LEP varie en fonction de la periode d'une pulsation. Dans mon cas, une pulsation longue faisait 21 samples à 44,1 KHz. Si on ramène à 16KHz, on aurait besoin de 7-8 samples à 16KHz pour encoder un seul octet LEP représentant une pulsation longue.
- généralement il y a des marquages au début genre GAP/TAPEMARK qui sont souvent une succession de pulsation courte/longue. On pourrait donc déterminer par ce biais les valeurs médianes d'une pulsation courte et d'une pulsation longue pour pouvoir corriger ces périodes et enregister des octets LEP plus propres.
- l'avantage à avoir un DAC ici n'est pas évident puisque l'on peut se contenter d'une sortie tout ou rien comme c'est déjà le cas avec SDLEP-READER. Néanmoins, le fait d'utiliser le timer #1 pour émettre les pulsations avec des périodes précises est tentant. Si effectivement l'interruption se contente de "consommer" l'octet LEP courant de cette manière :

Code : Tout sélectionner

ISR(TIMER1_OVF_vect)
{
	// lep_bit       : définit l'état BAS ou HAUT du créneau de l'octet LEP courant, initialement à HAUT
	// lep_period    : définit la période de la pulsation de l'octet LEP courant, initialement à 1
	// lep_next_data : octet LEP à venir préchargé depuis le SD en dehors de l'interruption

	// fin de période de la pulsation avant inversion d'état pour marquer un front ?		
	if (--lep_period == 0)
	{
		// on se prépare avec l'octet suivant.
		lep_bit    = (lep_next_data < 0) ? false : true;
		lep_period = (lep_bit ? lep_next_data : -lep_next_data) & 127;
		
		// et on informe le code en dehors de l'interruption.
		// qu'il faut charger l'octet suivant dans lep_next_data.
		lep_next_data_needed = true;
		
		// case spécial d'une période à 0.
		if (lep_period == 0)
		{
			// la période de la pulsation précédente se prolonge avec l'octet suivant.
			lep_period = lep_bit ? 127 : -127;
		}
		// cas nominal
		else
		{
			// on change la valeur du pin READ		
			setReadPin(lep_bit);
		}
	}
}
Après l'argument d'utiliser l'interruption timer #1 pour une résolution de 16 µs peut sembler discutable.

Avatar du membre
Dim_75
Messages : 6
Enregistré le : 11 juil. 2018 19:49

Re: SDLEP-READER remplace tous les magnétophones d'ordinateurs.

Message par Dim_75 » 13 juil. 2018 15:41

Bonjour Daniel, Xavier m'a informé que j'étais passé à côté de ta réalisation utilisable aussi pour ZX et autres 8 bits de l'époque.
A la lecture des posts je suis enthousiaste :P et souhaiterais acquérir 2 kits (1 pour moi et un autre pour un collègue également sur ZX).

Tu as toujours de quoi faire les lots ?

Pour le premier kit je suis preneur d'un lot 1 + d'un lot 2 + d'un lot 3 (pour mes ZX et CPC/C64).
Pour le deuxième kit il ne faudrait que le lot 1 et le lot 3 (juste pour ZX81).

Les prix sont toujours les mêmes ?
A savoir dans mon cas :
kit 1 : 7+3+3+5 = 18e
kit 2 : 7+3+5 = 15e
sauf si les frais pour deux kit sont en une fois mais d'un autre montant ?

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

Re: SDLEP-READER remplace tous les magnétophones d'ordinateurs.

Message par Daniel » 13 juil. 2018 17:00

Il y a bien longtemps que je n'ai pas préparé de kit SDLEP-READER, mais c'est possible, j'ai encore les pièces. Il faudra juste un jour ou deux de délai pour tout rassembler et programmer les Arduinos.

Les lots de câbles ont été composés à titre indicatif, mais on peut personnaliser en fonction des ordinateurs, éventuellement ajouter des composants (fils, potentiomètre, connecteurs) ou retirer ceux qui ne servent pas. Le mieux serait d'oublier les lots Thomson et VG500 et de lister tous les connecteurs, composants et fils nécessaires pour préparer un lot sur mesure.

Pour deux modules le poids ne devrait pas dépasser 100g, il n'y aura que 5€ de frais pour l'ensemble.

Il faut rappeler que ce sont des composants bruts, il y a du travail pour préparer la plaque cuivrée (couper des pistes, ajouter des connexions) et souder les divers éléments du module et des câbles.
Daniel
L'obstacle augmente mon ardeur.

hlide
Messages : 387
Enregistré le : 29 nov. 2017 10:23

Re: SDLEP-READER remplace tous les magnétophones d'ordinateurs.

Message par hlide » 13 juil. 2018 17:51

Oui je confirme qu'il y a de la soudure à faire et des coupures sur les pistes de cuivre donc soyez bien équipés avec ce qu'il faut pour monter ces kits.
Modifié en dernier par hlide le 13 juil. 2018 18:36, modifié 1 fois.

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

Re: SDLEP-READER remplace tous les magnétophones d'ordinateurs.

Message par Daniel » 13 juil. 2018 18:28

Sinon il y a le PCB proposé par Falkor, mais je ne sais pas s'il est toujours disponible : https://forum.system-cfg.com/viewtopic.php?f=18&t=8164
Daniel
L'obstacle augmente mon ardeur.

Avatar du membre
Dim_75
Messages : 6
Enregistré le : 11 juil. 2018 19:49

Re: SDLEP-READER remplace tous les magnétophones d'ordinateurs.

Message par Dim_75 » 13 juil. 2018 19:48

Merci de vos réponses :)
oui j'ai de quoi faire mes soudures et si besoin ajouter d'autres composants.

Je demande à Falkor s'il lui reste des PCB et je reviens vers toi en MP pour ne pas polluer le topic

Répondre