★ CODING ★ CLASSEURS WEKA ★ Comment exploiter toutes les ressources et augmenter les performances de votre AMSTRAD CPC ★ |
6/4 - Programmation du circuit sonore en assembleur | Coding Classeurs Weka |
6/4 Programmation du circuit sonore en assembleurComme nous l'avons vu précédemment, AY3 possède 16 registres. Ils sont utilisés comme suit : R0 à R5 Générateur de ton Voyons en détail l'utilisation de chaque registre. R0 à R5 Définition de la fréquence du son à émettre. La fréquence du canal A est décrite dans les registres RO et R1, la fréquence du canal B dans les registres R2 et R3, et la fréquence du canal C dans les registres R4 et R5. Les registres R0, R2 et R4 représentent les poids faibles des sons à émettre sur 8 bits, et les registres R1, R3 et R5 les poids forts de ces sons sur les 4 bits de poids faibles :
MSB = Most Significative Byte = Octet de poids fort. En BASIC, nous pouvons calculer LSB et MSB de la façon suivante : supposons que nous voulions émettre un son de fréquence 1000 Hz ; nous aurons : Per = 10^6/(16 x 1000) = 62.5 Les registres « pairs » R0/R1, R2/R3 et R4/R5 sont codés sur 12 bits (8 de LSB et 4 de MSB). Ils peuvent donc prendre des valeurs comprises entre 0 et 2^12 (soit entre 0 et 4096). On a Per = 10^6 / (16 x Freq), d'où Freq = 10^6 / (16 x Per) R6 Programmation du générateur de bruit blanc. Seuls les cinq bits de poids faibles sont utilisés. La période du bruit blanc généré est donnée par la même formule que pour la génération de sons : Freq = 10^6 / (16 x Per) La « période » du bruit blanc n'a pas de grande signification, puisqu'un bruit blanc est avant tout une succession de fréquences quelconques. Il définit cependant la période moyenne autour de laquelle sera généré le bruit blanc. Par abus de langage, on parlera de la période du bruit blanc généré. R7 Ce registre permet de mixer le bruit blanc et les trois canaux sonores A, B et C. Il a la structure suivante :
SA, SB et SC valident les canaux A, B ou C. 0 indique que le canal est dévalidé, 1 qu'il est validé. NA, NB et NC valident l'émission de bruit blanc sur les canaux A, B ou C. 0 indique que le bruit blanc est dévalidé et 1 qu'il est validé. PA S'il vaut 0, le port A est défini en entrée. S'il vaut 1, le port A est défini en sortie. R8 à R10 Définissent l'amplitude du signal sonore sur les canaux A, B et C. R8 pour le canal A, R9 pour le canal B et R10 pour le canal C. Les bits de ces registres sont codés de la façon suivante :
A0 à A3 donnent l'amplitude codée entre 0 et 15. 0 représente le volume le plus faible, 15 le volume le plus fort. M donne le mode de fonctionnement du contrôleur d'amplitude. Si M vaut 0, l'amplitude est fixe. Si M vaut 1, l'amplitude est contrôlée par le générateur d'enveloppe. R11 et R12 Définissent le contrôle du générateur d'enveloppe. Comme nous l'avons vu plus haut, l'enveloppe est un signal qui module le volume d'un son issu du générateur de ton. Si F est la fréquence de l'enveloppe, la période d'enveloppe sera égale à : P = 10*6 / (256 x F) R13 Ce registre permet de contrôler la forme de la modulation : Seuls les quatre bits de poids faible de R13 sont utilisés de la manière suivante :
ACO = COntinue Ils ont la signification suivante :
Pour que R13 soit pris en compte par le AY3, il faut que le bit MODE (bit 4) des registres de contrôle d'amplitude (R8 à RIO) soit à 1. R14 C'est par le port A de l'interface parallèle 8255 que va être programmé le AY3. Ce port est accessible par l'intermédiaire du registre R14 du AY3. La programmation d'un registre du AY3 se déroule comme suit : 1°) Adresse du registre à accéder. 2°) Bits 6 et 7 du registre C à 11. 3°) Valeur à charger/chargée dans le registre du AY3. 4°) Bits 6 et 7 du registre C à 10. Toutes les opérations sont réalisées par la routine du firmware implantée en # BD34. Pour utiliser cette routine, il faut positionner les registres A et C comme suit : — le registre A doit contenir le numéro du registre à charger ; Exemple : Pour définir le volume du canal B à 13, il faudra faire : a) En assembleur : LD A,1 ;Volume du canal B dans le registre 1 |
Page précédente : 6/3.1 - Exemples d'utilisation du générateur sonore en Basic (29e Complément) |
|
Page créée en 434 millisecondes et consultée 681 fois L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko. |