19Fermer21
PolluxLe 24/08/2003 à 15:40
> Méthode trivial (Bit à 1, Port à 3 V, bit à 0 port à 0 V???).
Euh je ne connais pas la valeur en volts mais ça doit être ça smile

> le fait de faire ça créer une fréquence de 4 Khz tout au l'on du WAV
Ah c'est juste ça, seulement pour les sons à plus de 1 bits? Je croyais que c'était une fréquence de 8 kHz quoi qu'il arrive. S'il n'y a pas de fréquence supplémentaire pour les sons 1 bits, alors pas de pb top

Et pour ce qui est de la qualité médiocre du son 1 bit, ça doit être améliorable dans le convertisseur (en particulier en rajoutant du bruit), c'est à mon avis la meilleure méthode sinon on se retrouve effectivement avec des fréquences indésirables.

> J'utilise aucune fonctions en ROM, la fonction d'attente n'est juste une fonction qui diminue virtuellement la fréquence de l'auto int. Je pense réelement que c'est à cause de mettre le port à 100% ou 0% et de ne pas avoir d'intermédiaire.
OK. Evidemment, ça c'est parfaitement normal smile

> C'est une bonne idée.
Ouais, mais c'est chiant à implémenter (relogements...) => j'ai la flemme de le finir tongue

> Faudrait que tu me montre comment c'est fait, parce que la je suis surpris.
En C, l'équivalent ressemblerait à :
void Int5() {
  IO_write(read_stereo_sample());
  switch (quick_counter--) {
    case 0: decompress_next_4_samples(); quick_counter+=4; break;
    case 1: if (!slow_counter--) OldInt5(),slow_counter+=oldfreq; break;
  }
}


> Là encore plus surpris. Comment tu fait?????
Ben le but serait de faire :
void Int5() {
  IO_write(read_last_event().content);
  if (!slow_counter) OldInt5(),slow_counter+=oldfreq; /* pas de '--' ! */
  EVENT next=lookahead_next_lowlevel_event();
  if ((slow_counter-=next.timeoffset)<0) next.timeoffset-=slow_counter,slow_counter=0,next.content=0;
  else {
    skip_next_lowlevel_event();
    if (!quick_counter--) decompress_next_lowlevel_events();
  }
  pokeIO(0x600017,1-next.timeoffset);
}

Et on pourrait utiliser une méthode similaire pour jouer du MIDI.