Suivez-nous sur X

|
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z,
ALL
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
A propos d'Obligement
|
|
David Brunet
|
|
|
|
Programmation : GFA Basic - Initiation à l'audio
(Article écrit par Max et extrait d'Amiga News Tech - mai 1989)
|
|
Nous connaissons maintenant les bases du graphisme en GFA,
mais un jeu sans musique,
ni bruitage n'est pas un vrai jeu. C'est donc tout naturellement que ce deuxième volet
de notre petite initiation au GFA est consacré à la production de sons divers et mélodieux.
Rappelons quand même, avant de commencer, que cette initiation est destinée à vous aider
pour le merveilleux-hyper-méga concours organisé conjointement par votre revue préférée
et Micro Application, concernant la réalisation d'un jeu en GFA Basic. Cela
me semble assez important, vu que je n'ai pas du tout la prétention de vous apprendre à
composer une musique dans ce langage, chose dont je serais par ailleurs bien incapable.
Il y a des professionnels pour cela et ce n'est pas Jean Baudiot, ni mon copain
Popol qui me contrediront...
Crac, zim, boum, huuue !
GFA Basic ne se distingue pas réellement par la quantité de ses instructions sonores ;
au nombre de deux uniquement, elles permettent pourtant de réaliser quelques bruitages
sympathiques.
SOUND freq, dur, vol, can : il s'agit-là de l'instruction la plus primitive.
Elle permet de générer un son de fréquence "freq" et de durée "dur", avec le volume "vol"
sur le canal "can". Ces deux derniers paramètres, "vol" et "can", sont optionnels.
La fréquence d'un son exprime sa hauteur. Plus la fréquence est élevée, plus le son est
aigu. Voici un petit tableau qui vous donnera une idée des fréquences disponibles :
Note |
Fréquence |
Do |
261 |
Ré |
293 |
Mi |
329 |
Fa |
349 |
Sol |
392 |
La |
440 |
Si |
493 |
Ceux qui possèdent quelques connaissances en musique auront reconnu le La du diapason,
à 440 Hz. Maintenant, pour obtenir les octaves inférieures et supérieures, il suffit de
diviser (respectivement multiplier) ces valeurs par deux. Par exemple :
- SOUND 440,1000 : joue le La du diapason.
- SOUND 880,1000 : le même, une octave au-dessus.
- SOUND 220,1000 : encore le même, une octave en dessous.
Le paramètre "dur" est un nombre sur 16 bits (0 à 65 535), indiquant combien de
fois la courbe sinusoïdale du son sera répétée. Une valeur de 1000 comme dans les exemples
ci-dessus, produit un son assez court.
"vol" permet de faire varier le volume du son créé. Il s'agit d'une valeur sur huit bits
(0 à 255). Si ce paramètre est omis, GFA Basic jouera le son avec un volume moyen
(127).
"can" permet, quant à lui, de décider sur quel canal le son devra être joué. L'Amiga
possède quatre canaux sonores, numérotés de 0 à 3 (la stéréo autorise des effets assez
intéressants). Les canaux 0 et 3 correspondent au haut-parleur gauche, tandis que les
canaux 1 et 2 correspondent au droit.
Voilà pour Sound. L'instruction suivante, Wave, permet de modifier la courbe du son,
c'est-à-dire son enveloppe. Voyons tout cela plus en détails. WAVE can, courbe() :
comme précédemment, "can" permet de définir sur quel canal sonore on va agir.
En effet, il est impossible de donner une courbe particulière à un son donné, mais
seulement à une voix donnée. De fait, si l'on veut par exemple émettre d'abord un son
avec un effet de vibrato, puis sur la même voix, en émettre un second, avec cette
fois-ci un effet d'arpeggio, il sera obligatoire, entre les deux sons, de redéfinir
la courbe de cette voix.
Le paramètre "courbe()" est un tableau d'entiers, qui contient donc la définition de
la courbe du son. La courbe standard est une sinusoïde, que l'on peut par ailleurs obtenir
grâce à la fonction "SIN()". Une telle courbe fait en sorte que le son monte lentement et
régulièrement de sa fréquence minimale (0 !& à sa fréquence maximale, le paramètre "freq"
de SOUND), s'y attarde un peu, puis redescende jusqu'à sa fréquence minimale pour ensuite
remonter, autant de fois que le permet le paramètre "dur" de SOUND. Mais rien n'oblige à
ce que le son soit sinusoïdal, une parabole est, par exemple, tout à fait envisageable (le son
monte plus ou moins rapidement jusqu'à son apogée et ne descend pas), ou n'importe quelle
autre courbe. En règle générale, les fonctions mathématiques (sinus donc, mais aussi cosinus,
puissance, etc.) donnent des courbes aux effets surprenants.
Nous sommes parfaitement conscients qu'écrire une mélodie en GFA Basic n'est pas chose
facile, surtout pour celui qui ne possède pas de connaissances particulières en solfège.
C'est pourquoi nous ne serons pas trop regardants de ce côte-là... Mais soignez tout de même
vos bruitages !
This is Amiga speaking
On l'a assez répété, l'Amiga possède un synthétiseur vocal intégré, auquel on peut accéder
depuis le GFA Basic. Il existe pour cela deux instructions spécialisées, les mêmes qu'en
AmigaBasic : SAY et TRANSLATE$(). Les accès à ces instructions nécessitent toutefois une
petite précaution : le narrator.device doit se trouver dans le répertoire DEVS: de la disquette
Workbench et la translator.library dans le répertoire LIBS:.
SAY envoie un texte phonétique au synthétiseur, lequel le sort sur le canal audio spécifié.
SAY a$,m %() : "a$" contient alors le texte phonétique à sortir et "m %()" est un tableau
d'entiers, destiné à modifier la sortie de la parole. Ce tableau est composé de sept éléments :
m %() |
Fonction |
m %(0) |
Fréquence |
m %(1) |
Modulation |
m %(2) |
Vitesse |
m %(3) |
Sexe |
m %(4) |
Fréquence |
m %(5) |
Volume |
m %(6) |
Canal |
Voici maintenant le détail de chacun de ces paramètres :
- m %(0) contient la fréquence de base,
qui peut s'échelonner de 65 à 320. La valeur par défaut est 110.
- m %(1) contient le type
modulation. "1" donne une synthèse "naturelle" (humain), tandis que 0 donne une valeur "monotone"
(robot). La valeur par défaut est "0".
- m %(2) contient la vitesse de la parole. Cette valeur peut varier de 40 à 400, sachant que
le réglage par défaut est 150.
- m %(3) contient le sexe de la voix, avec 0=masculin et 1=féminin. La valeur par défaut
est "0".
- m %(4) contient la fréquence de l'échantillonnage, c'est-à-dire la hauteur de la voix
(aigüe ou grave). Cette valeur varie de 5000 à 28 000, avec une valeur par défaut de 22 000.
- m %(5) contient le volume, de 0 à 64. Le volume par défaut est 64.
- m %(6) contient le(s) canal(aux) où émettre la voix, d'après la table suivante :
m %(5) |
Canal |
0 |
0 |
1 |
1 |
2 |
2 |
3 |
3 |
4 |
0 et 1 |
5 |
0 et 2 |
6 |
3 et 1 |
7 |
3 et 2 |
8 |
0 et 3 |
9 |
1 ou 2 |
10 |
0 ou 3 et 1 ou 2 |
11 |
0, 1, 2 ou 3 |
Un "et" dans le tableau signifie que la voix sera sortie sur tous les canaux spécifiés,
tandis qu'un "ou" signifie qu'elle sera émise sur celui des canaux spécifiés qui sera
libre à ce moment-là. La valeur par défaut est "10", ce qui donne, de toute manière, un effet
stéréo.
Sampler et sans reproche
Voilà. Une dernière chose pour terminer. Il est parfaitement possible, en GFA Basic, de jouer
des sons échantillonnés que l'on aura récupéré à partir de logiciels comme Aegis Sonix,
SoundTracker ou AudioMaster. Mais cela oblige à bidouiller les registres machine de l'Amiga
par de longues séries de DPOKE interminables (c'est le nouveau jeu de Guy Lux sur la Une :
Inter-Minables), bref, à bien connaître le fonctionnement de l'Amiga. De tels sons seront
bien entendu acceptés dans le cadre de notre concours, mais ne seront pas pris en compte
par le jury pour l'estimation de votre jeu. Si vous désirez en savoir plus sur ce sujet,
je ne peux que vous renvoyer à l'ouvrage "La Bible de l'Amiga" de chez Micro Application
justement, qui possède un chapitre complet sur les sons échantillonnés.
Le troisième et dernier volet de cette (petite) initiation au GFA Basic
sera consacré à l'utilisation des routines du système, et notamment de la
graphics.library qui vous permettront par exemple de faire défiler
l'écran, etc.
|