CODINGCLASSEURS WEKA ★ Comment exploiter toutes les ressources et augmenter les performances de votre AMSTRAD CPC ★

4/1.2.10 - Instructions musicalesCoding Classeurs Weka

4/0 - Langages du CPC

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

 

/im3/weka4125g.jpg
   
 

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).
/im3/weka4125h1.jpg
   
 

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

Page précédente : 4/1.2.09 - Gestion des interruptions

CPCrulez[Content Management System] v8.75-desktop/c
Page créée en 115 millisecondes et consultée 307 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.