Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[TO7] k7towav

48 réponses
Avatar
Doug713705
Bonjour à toutes, tous,

J'ai salement codé un sorte de k7towav pour le TO7 (c'est plus un moche
bricolage amateur en python bien crado suivi d'un script bash qu'un
véritable programme) mais n'ayant pas le TO7 sous la main je peux pas
le tester pour le moment.

Toutefois, à l'oreille, on retrouve bien les mélodies d'antan ;-)

Cependant, n'ayant pas vraiment les compétences pour valider mes "choix
techniques" (on fait avec ce qu'on a !), j'ai quelques questions à vous
soumettre :

Samuel Devulder a expliqué qu' il faillait "5 périodes à 4.5khz pour
un bit à 0 et 7 périodes à 6.3khz pour un bit à 1".

Je n'ai pas de compétences particulière en electronique mais j'ai pu
trouver sur le net que T=1/f.
Pour 6300 hz cela nous donne donc 0.15873015873015872 * 7 = 1.1111... ms
quand pour 4500 hz cela donne 0.2222222222222222 * 5 = 1.1111... ms.

N'ayant pas non plus les compétences mathématiques pour coder un
générateur de fréquences, après moultes recherches j'ai fini par
trouver siggen (http://www.comp.leeds.ac.uk/jj/linux/siggen.html) mais
celui-ci permet de générer des signaux que sur des valeurs entières de
millisecondes.

- Est-ce grave docteur ?
- Si non mieux vaut-il couper à 1ms ou à 2 ms ?
- Si oui, connaissez vous un générateur de tonalités attaquable en
ligne de commande ayant une précision suffisante ou mieux
quelque chose équivalent utilisable en python (snack ne s'installe pas
chez moi) ?

Evidemment à couper sur des valeurs entières, les cycles ne peuvent pas
se "raccorder" parfaitement et en analysant la courbe avec audacity on
voit bien que les "raccords" ne se font pas sur 0.

Par ailleurs, la "forme d'onde" à t-elle une importance ?
- Si oui, laquelle choisir, sinus ou cosinus ou autre ?

Merci d'excuser mon vocabulaire de profane mais je suis très loin de mon
domaine de compétence.
--
@+
Doug - Linux user #307925 - Slackware64 roulaize ;-)
[ Plus ou moins avec une chance de peut-être ]

10 réponses

1 2 3 4 5
Avatar
Doug713705
Dans fr.comp.ordinosaures Samuel Devulder nous expliquait:

bbyte = bstr(ord(c))
bitnum=bitnum+1
for bit in bbyte :
...

Heu, il me semble que dans ce cas tu sort les bits avec le bit de poids
fort en tête. Or dans l'une des docs que j'ai lu, un schéma d'écriture
sur la bande contenait b0 puis b1 puis b2.. etc. Du coup je me demande
si tu ne doit pas inverser les elements de "bbyte" ou redéfinir bstr ainsi:
# Return the byte as a list of bits (lsb first)
def bstr(n):
return ''.join([str(n >> x & 1) for x in (0,1,2,3,4,5,6,7)])



J'avoue avoir honteusement repompé ce bout de code sans même chercher à
l'analyser, je me suis arreter au fait qu'il renvoyait bien des 1 et des
0 ! :-o

De la même manière, si tu me dis qu'il faut inverser l'ordre des bits,
je te fait confiance sur parole :-D

Le source a donc été modifié en conséquences.
--
@+
Doug - Linux user #307925 - Slackware64 roulaize ;-)
[ Plus ou moins avec une chance de peut-être ]
Avatar
Doug713705
Dans fr.comp.ordinosaures Samuel Devulder nous expliquait:

Heu, il me semble que dans ce cas tu sort les bits avec le bit de poids
fort en tête



Je n'ai pas retrouvé d'information disant le contraire mais en
parcourant l'incroyable¹ manuel du TO7/70, j'y ai trouvé une explication
sur la conversion en binaire.

L'exemple cité dans le manuel semble indiquer le bit de poids fort en
tête (à gauche dans le sens de lecture) mais cela ne prouve rien en
soit.

Tout à fait autre chose :
Combien de broches la prise DIN reliant le magnétophone au TO7/70
comporte t-elle ? 4 ?

¹ Incroyable la foultitude de renseignements que l'on trouve dans ce
manuel, ça va de l'electronique à la programmation ! C'est beau et quand
on voit les manuels de certains constructeurs modernes, on se dit qu'ils
pourraient en prendre de la graine.

--
@+
Doug - Linux user #307925 - Slackware64 roulaize ;-)
[ Plus ou moins avec une chance de peut-être ]
Avatar
Samuel Devulder
Doug713705 a écrit :
Dans fr.comp.ordinosaures Samuel Devulder nous expliquait:

Heu, il me semble que dans ce cas tu sort les bits avec le bit de poids
fort en tête



Je n'ai pas retrouvé d'information disant le contraire mais en
parcourant l'incroyable¹ manuel du TO7/70, j'y ai trouvé une explication
sur la conversion en binaire.



C'est sur la page 5 du PDF:
http://ct.fournier-family.com/docs/technique/url.php?url=mk97070.zip&t_url=Magneto%20K7%20TO7%20MK%2097-070

Il est même précisé: "l'octet a transmettre est précédé d'un bit de
start (niveau 0) et est suivi de deux bits de stop (niveau 1)" (tiens
j'avais loupé ca dans ma lecture précédente, en pensant même qu'il n'y
avait pas ces marqueurs... pfff... j'me fait trop vieux).

L'exemple cité dans le manuel semble indiquer le bit de poids fort en
tête (à gauche dans le sens de lecture) mais cela ne prouve rien en
soit.



Il est possible que les docs soient contradictoires les unes par rapport
aux autres sur un tel détail. Pour vraiment savoir dans quel ordre sont
les bits, il faudrait regarder le code source de wav2k7, mais je ne l'ai
pas fait.


Tout à fait autre chose :
Combien de broches la prise DIN reliant le magnétophone au TO7/70
comporte t-elle ? 4 ?



Sur la page 7 du même document on voit la prise avec 5 broches (commande
moteur, sortie numérique, sortie audio, entrée numérique, masse).

sam.
Avatar
Doug713705
Dans fr.comp.ordinosaures Samuel Devulder nous expliquait:

Je n'ai pas retrouvé d'information disant le contraire mais en
parcourant l'incroyable¹ manuel du TO7/70, j'y ai trouvé une explication
sur la conversion en binaire.



C'est sur la page 5 du PDF:
http://ct.fournier-family.com/docs/technique/url.php?url=mk97070.zip&t_url=Magneto%20K7%20TO7%20MK%2097-070



Merci, je n'arrivais pas à mettre la main sur ce document !

Par contre mon code ne prend ni en compte le bit de départ ni le bit
de stop et si je comprends bien il faut intercaler un bit à 0 avant
chaque octet et 2 bits de stop à 1 après chaque octet.

Y'a encore du pain sur la planche ;-)

--
@+
Doug - Linux user #307925 - Slackware64 roulaize ;-)
[ Plus ou moins avec une chance de peut-être ]
Avatar
Samuel Devulder
Doug713705 a écrit :
Dans fr.comp.ordinosaures Samuel Devulder nous expliquait:

Je n'ai pas retrouvé d'information disant le contraire mais en
parcourant l'incroyable¹ manuel du TO7/70, j'y ai trouvé une explication
sur la conversion en binaire.


C'est sur la page 5 du PDF:
http://ct.fournier-family.com/docs/technique/url.php?url=mk97070.zip&t_url=Magneto%20K7%20TO7%20MK%2097-070



Merci, je n'arrivais pas à mettre la main sur ce document !

Par contre mon code ne prend ni en compte le bit de départ ni le bit
de stop et si je comprends bien il faut intercaler un bit à 0 avant
chaque octet et 2 bits de stop à 1 après chaque octet.



En tout cas c'est ce que le TO envoie vers le lecteur de K7. Ensuite le
synoptique indique que c'est écrit a peu près "tel quel" sur la K7
(note: les bits sont modulés logiciellement sur le TO pour l'écriture en
changeant les paramètres et le mode de fonctionnement du timer).


Y'a encore du pain sur la planche ;-)




Ouais.. Mais bon ca converge... :) Le truc chiant c'est qu'il t'es
impossible de tester le WAV produit pour être sur que c'est bon.. Mais
quelqu'un sur le forum a parlé de MESS. Voici les liens:

http://www.di.ens.fr/~mine/mess/to7.html.fr
http://www.mess.org/download.php

Dans mess on peut lire/ecrire des WAV au format thomson. Ca peut aider
pour la mise au point.

Autre truc: le script python est pas très rapide. Je pense qu'on peut
gagner en utilisant
wav.writeframesraw()
(la mise à jour de l'en-tete wav se faisant au moment du close()).
On peut aussi précalculer un jeu de 256 chaines de caractères encodant
les octets que l'on ecrit avec un seul writeframesraw(). A tester.

sam.
Avatar
Doug713705
Dans fr.comp.ordinosaures Samuel Devulder nous expliquait:


Y'a encore du pain sur la planche ;-)




Ouais.. Mais bon ca converge... :) Le truc chiant c'est qu'il t'es
impossible de tester le WAV produit pour être sur que c'est bon.. Mais
quelqu'un sur le forum a parlé de MESS. Voici les liens:

http://www.di.ens.fr/~mine/mess/to7.html.fr
http://www.mess.org/download.php



Fraichement installé ;-)

Dans mess on peut lire/ecrire des WAV au format thomson. Ca peut aider
pour la mise au point.



"Pour l'instant, préférez le format pré-traité .k7 au format .wav. En
effet la démodulation (effectuée au niveau matériel sur le TO7) n'est
pas encore bien émulée (sauf dans le cas d'un signal très propre, comme
celui qui est calculé par l'émulateur pendant l'enregistrement sur
cassette). "

GASP ! On va considérer que le signal est "très propre" :-)

Autre truc: le script python est pas très rapide.



Monsieur devient exigeant :-D

Je pense qu'on peut gagner en utilisant wav.writeframesraw()
(la mise à jour de l'en-tete wav se faisant au moment du close()).
On peut aussi précalculer un jeu de 256 chaines de caractères encodant
les octets que l'on ecrit avec un seul writeframesraw(). A tester.



A voir donc.

--
@+
Doug - Linux user #307925 - Slackware64 roulaize ;-)
[ Plus ou moins avec une chance de peut-être ]
Avatar
Samuel Devulder
Doug713705 a écrit :

"Pour l'instant, préférez le format pré-traité .k7 au format .wav. En
effet la démodulation (effectuée au niveau matériel sur le TO7) n'est
pas encore bien émulée (sauf dans le cas d'un signal très propre, comme
celui qui est calculé par l'émulateur pendant l'enregistrement sur
cassette). "

GASP ! On va considérer que le signal est "très propre" :-)



Le bon coté est que si le WAV produit par les scripts python passe dans
MESS il devrait passer partout!


Autre truc: le script python est pas très rapide.



Monsieur devient exigeant :-D



Surtout quand c'est pas mon code ;-)

sam.
Avatar
GzavSnap
<http://dskcenter.free.fr/cassettes>
Avatar
Samuel Devulder
GzavSnap a écrit :
<http://dskcenter.free.fr/cassettes>





Bizzare, le son TO7 ne sonne pas comme je l'entends d'habitude... La
structure me semble bonne, mais le son un peu trop grave (il manque des
hautes fréquences).. C'est peut-être la différence entre un signal carré
et sinusoidal. Sur un carré (tel qu'écrit par le TO) les harmoniques
sont plus nombreuses. Je me demande d'où est sortir cet extrait wav.

Sinon ici il y a d'autres son TO7 (qui sonne plus "vrai" à mes zoreils):
http://mercenarysite.free.fr/oric/tap_inconnu.zip
http://dcmoto.free.fr/programmes/c/32/cyberlab-to7mp3.zip

(Au passage, là un son MO5:
http://dcmoto.free.fr/programmes/v/02/vampire-mo5wav.zip )

Dans ta nomenclature, qu'entends (héhé!) tu par "multi-bloc avec entete"
ainsi que signal "symétrique" ?

sam.
Avatar
Doug713705
Dans fr.comp.ordinosaures Thierry Sundgau [nntp] nous expliquait:

Si quelqu'un dispose d'assez de temps pour tester ce prgramme...



Je vais tacher de trouver le temps de tester ce week end.



La dernière version est en ligne ici :
http://doug.letough.free.fr/to7/

Elle prend en compte les bits de départ et d'arrêt et utilise
wave.writeframesraw() qui en effet est _beaucoup_ plus rapide.

--
@+
Doug - Linux user #307925 - Slackware64 roulaize ;-)
[ Plus ou moins avec une chance de peut-être ]
1 2 3 4 5