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 : Assembleur 68k - restituer du son
(Article écrit par François Fleuret et E. Brunet et extrait de Génération 4 - juin 1989)
|
|
Échantillonnage
L'échantillonnage est la transformation d'un son par un découpage à une fréquence donnée. C'est-à-dire
que le son sera transformé en signaux logiques (0 ou 1), stocké sur une bande magnétique ou mémorisé, et
restitué par un amplificateur grâce au processus inverse. Cette technique, de plus en plus utilisée par
les professionnels, permet une restitution quasi-parfaite d'un son, même si le support de stockage est
de qualité médiocre. Elle est à la base du fonctionnement du disque compact, de la cassette DAT, de
l'enregistrement PCM sur certains caméscopes (Sony V200), et de la création de sons sur l'Amiga.
Contrairement aux autres micro-ordinateurs, le circuit sonore de l'Amiga travaille avec des formes d'ondes
complexes représentées en mémoire par des suites de valeurs qui seront transformées lors de la restitution
du son à une tension de 0 à 5 volts sur les sorties audio. Ces valeurs peuvent prendre 256 niveaux
(échantillonnage 8 bits). Cette forme d'onde peut être saisie à partir d'une interface chargée de
transformer les signaux analogiques en valeurs numériques pouvant être stockées en mémoire (Future Sound,
Perfect Sound) ou bien être construite à partir d'une fonction mathématique. La qualité des sons obtenue
ne permet pas une utilisation professionnelle, mais fait pâlir bon nombre de possesseurs de micro-ordinateurs
d'autres marques. On aura donc quatre canaux utilisables simultanément, et pouvant restituer avec brio des
voix, musiques ou échantillons divers (bruits de foule, applaudissements, etc.). A chaque canal audio
correspond un canal DMA. Étant donné que les accès DMA de l'Amiga se déroulent par mots, on réunit deux
échantillons sur le même mot de donnée. Donc : obligation d'avoir une longueur d'échantillon paire.
Restituer un son
Marche à suivre pour restituer un son :
- Placer un échantillon en mémoire Chip.
- Choisir un des quatre canaux audio sur lequel le son sera émis.
- Spécifier l'adresse de départ de l'échantillon dans AUDxLC.
- Spécifier la longueur de l'échantillon dans AUDxLEN (en mots).
- Spécifier le volume du canal dans AUDxVOL (0 à 64).
- Spécifier la vitesse de restitution dans AUDxPER.
- Initialiser le canal DMA pour lancer le son.
;******************************************* les décalages
Aud0le EQU $a0
Aud0len EQU $a4
Aud0per EQU $a6
Aud0vol EQU $a8
Adkcon EQU $9a
Dmacon EQU $96
;*********************************************************
;programme pour démarrer le canal DMA 1 (son voix 1)
;*********************************************************
son move.l #$dff000,a5 ; adresse de base
move #12,Aud0len(a5)
lea buffer,Aud0lc(a5) ; adresse départ sinus
move #64,Aud0vol(a5) ; volume maximum canal 1
move #600,Aud0per(a5) ; période
move #$8201,Dmacon(a5) ; cabal 1 active
rts
;*********************************************************
;arrêt du canal DMA 1
;*********************************************************
sonoff move.l #$dff000,a5
move #$01,Dmacon(a5)
rts
;*********************************************************
;Forme d'onde
;
;Celle-ci doit être impérativement placée en mémoire Chip,
;pour l'instant dans les 512 premiers ko.
;On pourrait mettre à la place de ces données un son
;numérisé qui pourrait faire un maximum de 138 ko.
;Cette limitation est due au matériel de l'Amiga.
;Il ne faudra pas oublier de modifier la période (Aud0per)
;ainsi que la longueur (Aud0len)
;*********************************************************
buffer dc.w 0,0,25,50,75,100,125,125,125,100,75,50,25,0
dc.w 0,-25,-50,-75,-100,-125,-125,-125,-100,-75,-50,-25,0,0
END
|
Modulation d'amplitude ou de fréquence
On a aussi la possibilité de moduler un échantillon en amplitude (modification du volume sonore dans
le temps), en fréquence (modification de la fréquence dans le temps), ou les deux à la fois. Les
données du canal servant à moduler seront alors transférées soit dans le registre fréquence (AUDxPER),
soit dans le registre volume (AUDxVOL), soit les deux. Pour activer un canal audio en tant que modulateur,
on doit initialiser un nouveau registre appelé "ADKCON". Cette possibilité permettra de simuler des
sirènes diverses, des tirs de rayons laser, etc.
Voici une description sommaire de ce registre (bit, nom, fonction) :
- 7, ATPER3 : le canal 3 ne module rien du tout.
- 6, ATPER2 : le canal 2 module la période du canal 3.
- 5, ATPER1 : le canal 1 module la période du canal 2.
- 4, ATPER0 : le canal 0 module la période du canal 1.
- 3, ATVOL3 : le canal 3 ne module rien du tout.
- 2, ATVOL2 : le canal 2 module le volume du canal 3.
- 1, ATVOL1 : le canal 1 module le volume du canal 2.
- 0, ATVOL0 : le canal 0 module le volume du canal 1.
|