4/0 - Langages du CPC4/1 - Locomotive BASIC : Définitions et rappels de base 4/1.2 Version 1.0 sur CPC 464 : Mots clés et leur utilisation X. Instructions musicales Reportez-vous à la partie 6 pour avoir tous les détails concernant le générateur sonore AY3-8912 (PSG). | ENT< N° enveloppe >[,< section d'enveloppe >],[,< section d'enveloppe >], ... Définit les variations de ton des notes pendant leur émission. « N° enveloppe » est un entier compris entre 1 et 15. Remarque : Si le numéro d'enveloppe est négatif (entre -15 et -1 ), le son se répète jusqu'à la fin de sa durée fixée par « SOUND ». Une section d'enveloppe peut contenir 2 ou 3 paramètres : - nombre de pas,
- amplitude du pas,
- durée du pas.
1) La section d'enveloppe contient 3 paramètres : - Nombre de pas : de 0 à 239.
- Nombre de divisions dans la tonalité à l'intérieur d'une section d'enveloppe.
- Amplitude du pas : de -128 à 127
- Si ce paramètre est <0, augmente la hauteur de la note ;
- Si ce paramètre est >0, diminue la hauteur de la note.
- Durée du pas : de 0 à 255 en 1/100e sec.
2) La section d'enveloppe contient 2 paramètres : - Période sonore : Valeur de la période : c'est la hauteur du son (voir tableau donné à l'ordre « SOUND », p. 67).
- Durée du pas : en 1/100e sec.
| | | | ENV< N° d'enveloppe >[,< section d'enveloppe >] [,< section d'enveloppe>]... Définit l'enveloppe de volume pour une enveloppe repérée par son numéro de 1 à 15. Cette commande est utilisée conjointement à la commande « SOUND ». Une section d'enveloppe peut contenir 2 ou 3 paramètres. Si elle contient 3 paramètres, ils indiquent : - nombre de pas,
- amplitude du pas,
- durée du pas.
Si elle contient 2 paramètres, ils indiquent : - enveloppe matérielle,
- période de l'enveloppe.
1) La section d'enveloppe contient 3 paramètres : - Nombre de pas : Nombre de divisions définissant l'évolution d'un son à l'intérieur d'une section. Ce nombre est compris entre 0 et 127.
- Amplitude du pas : comprise entre -128 et 127 ; de -128 à 0 : augmente le volume de la note ; de 0 à 127 : diminue le volume de la note.
- Durée du pas : en 1/100e sec. (de 0 à 256)
2) La section d'enveloppe contient 2 paramètres : - Enveloppe matérielle : Valeur à envoyer au registre d'enveloppe (voir Partie 6).
- Période de l'enveloppe : Valeur à envoyer aux registres de période d'enveloppe (voir Partie 6).
| | | | RELEASE < Canaux > Libère les canaux sonores bloqués par la commande « SOUND ». Le paramètre « Canaux » peut prendre les valeurs suivantes : Valeur | Canal | 1 2 3 4 5 6 7 | A B A et B C C et A C et B A et B et C |
Remarque : Si aucun canal n'est bloqué (le bit 6 de la commande « SOUND » représente le bloquage d'un son : b6= 1 -> son bloqué, et b6 = 0 -> son non bloqué), la commande « RELEASE » n'a aucun effet. | | | | SOUND < état du canal >, < période sonore >[, < durée > [, < volume > [, < enveloppe de volume > [, enveloppe de ton > [, < période de bruit >]]]]] Définit les caractéristiques d'un son. Etat du canal : Bit | Fonction | 0 1 2 3 4 5 6 7 | Sortie canal A Sortie canal B Sortie canal C Rendez-vous canal A Rendez-vous canal B Rendez-vous canal C Bloquage d'un canal Vidage d'un canal |
Définitions : - Rendez-vous : technique utilisée pour la synchronisation forcée de deux canaux : lorsqu'un canal s'arrête et qu'en même temps un autre commence à jouer, il y a rendez-vous entre ces deux canaux.
Reportez-vous à l'exemple ci-dessous pour avoir des détails sur l'utilisation des rendez-vous. - Période sonore : hauteur de la note.
On a : Fréquence = 440 * (2 ^ (Octave + ((N - 10) / 12))) et : Période = ROUND (62 500 /Fréquence) avec N = 1 pour DO N = 2 pour DO# N = 3 pour RE N = 4 pour RE# N = 5 pour MI N = 6 pour FA | N = 7 pour FA# N = 8 pour SOL N = 9 pour SOL N = 10 pour LA N = 11 pour LA# N = 12 pour SI |
Si la période sonore vaut 0, aucune fréquence n'est émise. Cette valeur est utilisée pour générer du bruit blanc. - Durée : Longueur d'un son en 1/100e sec. Initialisée à 20 par défaut (1/20e sec.)
- Si « durée » = 0, c'est l'enveloppe de volume qui détermine la durée des sons.
- Si « durée » < 0, l'enveloppe de volume est répétée un nombre de fois égal à la valeur absolue du paramètre « durée ».
- Volume : volume initial d'une note. Compris entre 0 et 15. Initialisé par défaut à 12. Ce volume sera modifié par l'enveloppe de volume (ENV) si elle est définie.
- Enveloppe de volume : désigne l'une des 15 enveloppes de volume définissables par l'utilisateur et codées de 1 à 15.
- Enveloppe de ton : désigne l'une des 15 enveloppes de ton définissables par l'utilisateur et codées de 1 à 15.
- Période de bruit : compris entre 0 (aigu) et 31 (grave).
Pour illustrer l'utilisation des « rendez-vous », écrivons les données BASIC correspondant à la partition suivante : Table des fréquences pour les octaves 0 à 3 : Do Do# Re Re# Mi Fa Fa# Sol Sol# La La# Si | 261.62 277.18 293.66 311.12 329.62 349.22 369.99 391.99 415.3 440 466.16 493.88 | 478 451 426 402 379 358 338 319 301 284 268 253 | Octave 0 | Do Do# Re Re# Mi Fa Fa# Sol Sol# La La# Si | 523.25 554.36 587.32 622.25 659.25 698.45 739.98 783.99 830.6 880 932.32 987.76 | 239 225 213 201 190 179 169 159 150 142 134 127 | Octave 1 | Do Do# Re Re# Mi Fa Fa# Sol Sol# La La# Si | 1046.5 1108.73 1174.65 1244.5 1318.51 1396.91 1479.97 1567.98 1661.21 1760 1864.65 1975.53 | 119 113 106 100 95 89 84 80 75 71 67 63 | Octave 2 | Do Do# Re Re# Mi Fa Fa# Sol Sol# La La# Si | 2093 2217.46 2349.31 2489.01 2637.02 2793.82 2959.95 3135.96 3322.43 3520 3729.31 3951.06 | 60 56 53 50 47 45 42 40 38 36 34 32 | Octave 3 |
SOUND 1,478 SOUND 4,119 SOUND 1,379 SOUND 4,95 SOUND 17,319 SOUND 10,119 SOUND 4,80 SOUND 2,190 SOUND 4,60 SOUND 17,319 SOUND 10,119 SOUND 4,95 SOUND 1,379 SOUND 4,80 SOUND 1,478 SOUND 4,60 | DO1 DO3 MI1 MI3 SOL1 DO2 SOL3 MI2 DO3 SOL1 DO2 MI3 MI1 SOL3 DO1 DO3 | VOIE 1 VOIE 3 VOIE 1 VOIE 3 VOIE 1 RDV B VOIE 2 RDV A VOIE 3 VOIE 2 VOIE 3 VOIE 1 RDV B VOIE 2 RDV A VOIE 3 VOIE 1 VOIE 3 VOIE 1 VOIE 3 | RDV = Rendez-vous |
10 FOR I = 1 TO 16 20 READ A,B 30 SOUND A,B 40 NEXT I 50 DATA 1,478,4,119,1,379,4,95,17,319,10,119,4,80,2,190 60 DATA 4,60,1 7,31 9,1 0,11 9,4,95,1,379,4,80,1,478,4,60
| | | | SQ (< N° de canal > ) Donne l'état de la file d'attente sonore d'un canal. N° de canal - = 1 pour le canal A
- = 2 B
- = 3 C
Cette fonction donne un entier dont les bits ont la signification suivante : 0 à 2 3 4 5 6 7 | Nombre de places libres dans la file Rendez-vous avec le canal A Rendez-vous avec le canal B Rendez-vous avec le canal C Début de file en attente Canal en activité au moment de l'activation de SQ |
| | | | ON SQ (< N° canal >) GOSUB < N° ligne > No Canal = 1 _________ 2 _________ 3 | pour le canal A ___________ B ___________ C |
Provoque un déroutement à la ligne indiquée si la file d'attente du canal spécifié n'est pas pleine. Cette fonction permet, par exemple, d'exécuter une musique en permanence, tout en faisant autre chose. Si nous mettons les notes sous forme de DATA, le programme aura l'allure suivante : 1000 'Programme principal 1010 ON SQ(1) GOSUB 3000 'Activation du S/P de remplissage de file sonore 1020 GOTO 1000 3000 READ NOTE 'Lecture d'une note 3010 IF NOTE = 0 THEN RESTORE:GOTO 3000 3020 SOUND 1, NOTE 'Mise en file d'attente 3030 RETURN 3040 DATA notes, 0 'Notes et terminateur |
CPCrulez[Content Management System] v8.73-desktop Page créée en 189 millisecondes et consultée 1145 foisL'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. |
|