Bonjour à tous, je viens vers vous car je termine un convertisseur cdt->wav et j'ai quelques questions qui restent en suspend:
dans la le tuto sur les fichiers TZX (http://www.worldofspectrum.org/TZXformat.html) il est précisé qu'apres avoir émis un block 10,11,12,13,14 ou 19 le niveau logique doit s'inverser pour repérer la pause de fin de block. En quelques sorte l'on doit faire un frond montant avant le niveau bas de la pause de fin de block.... je n'ai trouvé aucune info sur la durée de ce front. dans les .WAV que j'ai exploré ce front dure souvent 1ms mais es-ce là une généralitée !?
Inscription : 12 Juin 2008, 20:29 Message(s) : 1711
en fait, si ton niveau est à "haut"; il faut le laisser pendant 1ms à haut avant de l'inverser à "bas" et de mettre la pause à "bas" de la longueur de la pause défini dans les ids que tu cites. par contre, s'il est à "bas", laisser le niveau à "bas" et mettre la pause de la longueur de la pause défini dans les ids que tu cites.
j'ai ce bout de doc en anglais dans mon code de lecture des cdts :
// In case the level is high, leave it for 1ms before bringing it low. // Then output the low pulse pause of given duration.
c'est bien ce que j'avais compris aussi mais.... en analysant avec AUDACITY le .WAV obtenu via TZX2WAV de IKARY, j'ai constaté que bien que le dernier pulse data soit bas, il y a bien apres une pluse high de 1ms.... alors .... ??!!,
les deux fichiers joint c'est un zoom pris au hazard parmis les block du programme lui même. sur le plus gros on compte bien 43 echantillons à 44100Hz donc 1ms. C'est reproduit pour tt les block du CDT
au cas où : la pause de début de CDT (6117ms), est bien à l'état low, donc ce n'est pas audacity qui m'inverse les signaux.
meme analyse, meme constat avec EDEN BLUES...
Vous n’êtes pas autorisé(e) à consulter les fichiers insérés à ce message.
// If there is pause after block present then make first millisecond the oposite // pulse of last pulse played and the rest in LOAMP ... otherwise don't do ANY pause if (pause) { PauseWave(1); amp=LOAMP; if (pause>1) PauseWave(pause-1); }
j'ai trouvé d'autre bizarreries dans le listing ! si les gens de chez spectrum ne respecte pas leurs propres normes ou vas t'on !!!
mais passons, j'ai une autre chose qui m'ennuis davantage:
Citer :
The 'current pulse level' after playing the blocks ID 10,11,12,13,14 or 19 is the opposite of the last pulse level played, so that a subsequent pulse will produce an edge.
si j'ai tout compris; apres avoir emis la dernière demi-alternance du dernier bit d'un block ID11. (pour ikary c'est que du LOW), le niveau à memoriser (current level) est donc HIGH.... c'est quelques chose que tu as pris en compte ou pas ??
Inscription : 12 Juin 2008, 20:29 Message(s) : 1711
regarde dans la doc le : 5. Machine specific information
Machine Pilot pulse Length Sync1 Sync2 Bit 0 Bit 1 ZX Spectrum 2168 (1) 667 735 855 1710 Amstrad CPC Bit 1 4096 Bit 0 Bit 0 (2) (2)
(2) Amstrad CPC ROM load/save routine can use variable speed for loading, so the bit 1 pulse must be read from the pilot tone and bit 0 can be read from the sync pulses, and is always half the size of bit 1. The checksum is also different than the other two machines. The speed can vary from 1000 to 2000 baud.
concernant les valeurs qu'il a pris... je ne sais pas l'expliquer !
Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 4 invité(s)
Vous ne pouvez pas publier de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas insérer de pièces jointes dans ce forum