Obligement - L'Amiga au maximum

Vendredi 06 juin 2025 - 12:37  

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 : GFA Basic - le son avec Paula
(Article écrit par Digiwiz et extrait de Tilt - décembre 1990)


Voici en théorie le processeur musical de l'Amiga (Paula pour les intimes).

Fonctionnement de base

Contrairement à certains ordinateurs (Atari ST et Amstrad CPC par exemple), la génération d'un son sur Amiga ne se fait pas de manière synthétique. Le son est au départ numérisé puis converti. Ce qui signifie que l'ordinateur a les "échantillons" du son en mémoire qu'il peut reproduire : un son de piano, de grosse caisse ou même de tronçonneuse.

Le coprocesseur sonore va lui-même lire la mémoire de l'Amiga pour récupérer les valeurs de chaque échantillon sonore, puis il va convertir la valeur numérique de cet échantillon en une valeur analogique, valeur qui va être transformée en son par le haut-parleur.

Or, en musique, une mélodie est composée d'un ensemble de notes, chacune d'entre elles étant fournie par un instrument, ces notes pouvant être jouées à des fréquences différentes (aigues, graves...).

Générer un son

Dans le principe, il est très simple de faire une musique sur Amiga. Il suffit d'avoir en mémoire une gamme d'échantillons sonores de différents instruments et de demander à l'Amiga de bien vouloir les jouer à la bonne fréquence.

Nous allons voir comment générer un son, qui vous servira de base pour vos futures créations musicales. Tout d'abord, il faut avoir en mémoire les échantillons de notre instrument. Soit vous disposez d'un échantillonneur sonore (cartouche) et donc, pas de problème, soit vous disposez déjà d'échantillons sonores (disquettes d'instruments).

En dernier ressort, si l'on n'a pas de sons d'instrument, on peut en créer de toute pièce : prenons par exemple une forme d'onde très simple, sinus par exemple. Cette forme d'onde va nous générer un son pas spécialement beau, mais on fera avec !

Un signal sinusoïdal sera échantillonné de la manière suivante, en huit échantillons : 0, 90, 127, 90, 0, -90, -127, -90.

On a par conséquent en mémoire tous les échantillons du son, sur 8 bits chacun, et on a "n" échantillons. Attention, je rappelle que les coprocesseurs de l'Amiga ne peuvent accéder qu'à la mémoire dite "Chip". Nos échantillons n'échappent pas à la règle et doivent se trouver en mémoire Chip. Dans notre exemple de sinus, prenons "n=8", huit échantillons pour notre son, soit huit octets.

La hauteur d'un son est définie par sa fréquence, c'est-à-dire la vitesse à laquelle le son est rejoué. Nous avons maintenant tous nos paramètres pour jouer notre son, enfin presque, il manque le volume, variable de 0 à 64, 0 étant "éteint", alors que 64 indique un volume "normal".

L'Amiga dispose de quatre voies, il peut jouer simultanément quatre sons différents. Ces voies sont notées 0, 1, 2 et 3. Nous choisirons la voie 0. Les registres qui définissent un son sont :
  • AUDOLEN=$DFF0A4 : longueur du son/2. Dans notre exemple, 8/2=4.
  • AUDOLCH=$DFF0A0 : partie haute.
  • AUDOLCL=$DFF0A2 : partie basse de l'adresse mémoire où sont rangés les échantillons du son.
  • AUDOVOL=$DFF0A8 : volume du son, dans notre exemple : 64.
  • AUDOPER=$DFF0A6 : période du son, ce qui va déterminer la fréquence du son, donc la haute de la note.
Remarque : tous ces registres sont sur 16 bits.

Le choix de la période est assez compliqué, puisqu'il dépend de plusieurs paramètres : la fréquence à laquelle notre son a été échantillonné, la longueur de ce son, la fréquence à laquelle on veut rejouer ce son. Ce registre indique au coprocesseur à quelle vitesse il doit lire chaque échantillon.

La valeur de AUDOPER se calcule ainsi : AUDOPER-(temps en microseconde entre deux échantillons)/0,279365.

Par exemple, si un son de une seconde a été échantillonné sur 10 ko, la valeur de AUDOPER se calcule en faisant : 100/0,279365=356 (puisque 1 seconde/10 000 octets=100 microsecondes).

Description du registre DMACON

Ceci fait, il suffit de donner l'ordre au coprocesseur de jouer le son, en agissant sur le registre DMACON.

DMACON=$DFF096

Bit 15 : SETCLR
Indique si les bits sélectionnés sont mis à 0 ou a 1.

Bit 9 : DMAEN
Mettre à 1 pour autoriser l'accès à la mémoire.

Bit 3 : AUD3EN
Autorise la voie 3 à être jouée.

Bit 2 : AUD2EN
Autorise la voie 2 à être jouée.

Bit 1 : AUD1EN
Autorise la voie 1 à être jouée.

Bit 0 : AUDOEN
Autorise la voie 0 à être jouée (c'est ce bit qui nous intéresse).

Lecture et arrêt du son

Le registre DMACON permet, entre autres, de déclencher le DMA audio pour rejouer le son. Nous voulons jouer la voie 0, donc il faut mettre DMACON=$8201. Et hop, miracle ! Un son sort de notre haut-parleur. Le son est répété tant qu'on ne dit pas au coprocesseur de s'arrêter, ou tant qu'on ne lui ordonne pas d'en jouer un autre en changeant les valeurs de ses registres.

Pour arrêter ce son (qui est assez horripilant, il est vrai), rien de plus simple. Il suffit de mettre à 0 le bit "AUD0EN" en faisant DMACON=$0001.

Les adresses des registres pour les autres voies sont les mêmes que celles de la voie 0 en ajoutant $10 pour la voie 1, $20 pour la voie 2, et $30 pour la voie 3. Exemple : AUD3VOL = $dff0a8 + $30 = $dff0d8.

Listing en GFA Basic

Pour mettre cela en pratique, je vous propose un petit programme en GFA Basic (facilement adaptable en AmigaBasic) qui va illustrer notre propos. Ce programme permet de lire un fichier de son numérisé (un son de Soundtracker par exemple) ou de jouer la forme d'onde sinusoïdale dont nous avions parlé.

Théoriquement, il suffit de faire "RUN" et "RETURN" pour entendre un petit bip sortir de notre Amiga. Vous pouvez essayer de modifier les différents paramètres (vitesse, échantillons....) pour voir les résultats (le plus souvent étonnants).

Le processeur sonore de l'Amiga dispose d'opérations plus complexes, par exemple la modulation de la fréquence d'une voie par une autre, qui permet de faire des effets intéressants.

Une autre remarque concerne les échantillons : les musiques prennent beaucoup de place mémoire (souvent de 100 à 200 ko) car, pour être de bonne qualité, lés échantillons sont de grande taille. C'est pourquoi beaucoup se sont lancés dans la génération des sons synthétiques sur Amiga. C'est-à-dire que les échantillons ne sont plus numérisés mais calculés en temps réel. Cela permet d'avoir des musiques de moins de 10 ko parfois. Cette méthode n'a pas que des avantages : plus d'échantillons "complexes", temps processeur plus important.... Mais c'est un moyen de faire des musiques qui sonnent différemment.

Voilà, nous allons nous arrêter là pour la génération de sons sur Amiga. Vous devriez en savoir assez pour faire vos premiers balbutiements en musique !

GFA Basic


[Retour en haut] / [Retour aux articles]