Obligement - L'Amiga au maximum

Jeudi 22 février 2024 - 22:18  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

Actualité (récente)
Actualité (archive)
Comparatifs
Dossiers
Entrevues
Matériel (tests)
Matériel (bidouilles)
Points de vue
En pratique
Programmation
Reportages
Quizz
Tests de jeux
Tests de logiciels
Tests de compilations
Trucs et astuces
Articles divers

Articles in english


Réseaux sociaux

Suivez-nous sur X




Liste des jeux Amiga

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


Trucs et astuces

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


Glossaire

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


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


Contact

David Brunet

Courriel

 


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.


[Retour en haut] / [Retour aux articles]