CPC Rulez
https://cpcrulez.fr/forum/

question fichier CDT
https://cpcrulez.fr/forum/viewtopic.php?f=7&t=5598
Page 1 sur 1

Auteur :  jerome2663 [ 22 Sep 2015, 10:34 ]
Sujet du message :  question fichier CDT

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 !?

bien sur je ne parle que du CPC

Merci d avance et bonne journée !

Auteur :  Megachur [ 22 Sep 2015, 19:41 ]
Sujet du message :  Re: question fichier CDT

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.

:winner: bon courage à toi !

Auteur :  jerome2663 [ 24 Sep 2015, 14:18 ]
Sujet du message :  Re: question fichier CDT

Bonsoir,

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...

Auteur :  Megachur [ 24 Sep 2015, 19:27 ]
Sujet du message :  Re: question fichier CDT

si on regarde le source officielle : http://www.worldofspectrum.org/pub/sinclair/tools/pc/TZX2WAV_02b.zip

Code :
void PauseWave (unsigned int pause)
{
  // Waits for "pause" milliseconds

  int p;
  if ((!skippause)||(curr!=(numblocks-1)))
  {
    p = (unsigned int)((((float) pause)*freq)/1000.0);
    PlayWave(p);
  }
}


Effectivement, ce n'est pas codé comme cela... Mais cela ne veut pas dire que l'auteur a bien respecté la norme TZX ! :pir8: :winner:

à part un échange avec lui... je vois pas comment t'affirmer que ce qu'il a codé est très bien !

Pour ma part, à part une CDT qui pose problème, je n'ai jamais rencontré de problème avec le code que je t'avais mis plus haut ! :sweatingbullets:

Auteur :  jerome2663 [ 25 Sep 2015, 14:38 ]
Sujet du message :  Re: question fichier CDT

Bonjour,

effectivement c'est même écrit en clair :

Code :
 // 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 ??

Auteur :  Megachur [ 25 Sep 2015, 19:56 ]
Sujet du message :  Re: question fichier CDT

@jerome2663:

pour les id10, 11, 14 ont envoie normalement une pause à la fin... donc on fini en high après la pause !

pour les id12 et 13, je ne fais rien de spécial (cf ci-dessous).

pour l'id19, je n'ai pas tout codé car jamais rencontré dans les cdts amstrad !?!

cependant, pour ces ids, les pulses sont codés comme ceci :

Code :
function pushPulse(length) {
   tape.tapedata[idx++]=[currentLevel,Math.round(length/tape_cpc_freq)];
   currentLevel=!currentLevel;
}

donc à la fin on finit bien par un niveau opposé au pulse émis quoi qu'il arrive !?

Auteur :  jerome2663 [ 30 Sep 2015, 20:19 ]
Sujet du message :  Re: question fichier CDT

Bonsoir a tous, bon un nouveau problème !!

toujours dans la doc #1 je site :
Citer :
The pilot tone consists in 8063 pulses if the first data byte (flag byte) is < 128, 3223 otherwise.


ben pourtant l'auteur de Tzx2Wav, lui à pris 3220 et 8064.....

Code :
void Analyse_ID10 (void)  // Standard Loading Data block
{
  pause=Get2(&data[0]);
  datalen=Get2(&data[2]);
  data+=4;
  if (data[0]==0x00) pilot=8064;
    else pilot=3220;
  sb_pilot=Samples(2168);


c'est quoi le juste prix ... ??

Auteur :  Megachur [ 30 Sep 2015, 21:26 ]
Sujet du message :  Re: question fichier CDT

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.

:JC_doubleup:

concernant les valeurs qu'il a pris... je ne sais pas l'expliquer !

Page 1 sur 1 Le fuseau horaire est UTC+1 heure
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/