Obligement - L'Amiga au maximum

Samedi 20 avril 2024 - 12:00  

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

 


Dossier : La synthèse vocale (2e partie)
(Article écrit par Nicolas Fournel et extrait d'A-News (Amiga News) - octobre 1989)


Comme promis, nous allons voir aujourd'hui la modulation, la synthèse en mode non automatique du DMA et la compression par les deltas de Fibonacci. Programme varié mais chargé, alors on commence tout de suite...

Partie 1 : la modulation

1. Le principe

On travaille avec deux canaux sonores : le premier est initialisé avec la table d'onde normale, c'est celui que l'on veut moduler. Les données de la table d'onde du second seront envoyées vers un registre du premier plutôt que vers le convertisseur numérique/analogique et serviront à modifier le son normalement émis.

2. Modulation de fréquence et d'intensité

Si ces données sont envoyées vers le registre d'intensité (AUDxVOL) on parlera de modulation d'intensité ou de modulation d'amplitude (AM), si au contraire elles sont envoyées vers le registre de période (AUDxPER) on parlera de modulation de fréquence (FM). On peut d'ailleurs envoyer les données sur ces deux registres pour obtenir les deux types modulations simultanément.

3. Du côté de la programmation

Tout ce petit monde est orchestré par le registre ADCKON d'adresse $DFF09E en écriture et $DFF010 en lecture. Voici la signification des bits de ce registre :
  • 15 : les bits suivants seront activés s'il est à 1, effacés sinon.
  • 14 à 8 : servent au contrôleur de disques (ce n'est pas pour nous).
  • 7 : rien.
  • 6 : modulation de période du canal 3 par le canal 2.
  • 5 : modulation de période du canal 2 par le canal 1.
  • 4 : modulation de période du canal 1 par le canal 0.
  • 3 : rien.
  • 2 : modulation d'intensité du canal 3 par le canal 2.
  • 1 : modulation d'intensité du canal 2 par le canal 1.
  • 0 : modulation d'intensité du canal 1 par le canal 0.
Un canal audio ne peut moduler que le canal dont le numéro lui est immédiatement supérieur c'est pourquoi le canal 0 n'est pas "modulable" (pas de canal -1 !) et le canal 3 ne module rien (pas de canal 4 !).

4. Listing

Rien de tel qu'un petit exemple pour bien comprendre, un classique qui est dans tous les bons bouquins (et même dans les mauvais, c'est dire... ) : la sirène...

synthèse vocale

Partie 2 : synthèse sonore non automatique

1. Le principe

Lorsque l'on active le canal du DMA son, on l'a déjà vu, le DMA prélève automatiquement les mots de données de la table d'onde les uns après les autres et on a droit à une jolie petite interruption quand on a fini le cycle (ou plutôt quand on commence le suivant). Mais on peut aussi faire nous-même ce travail, sans activer le canal du DMA son, en envoyant directement les données dans les registres dans lesquels il lit habituellement. Dans ce cas, les interruptions auront lieu une fois les deux échantillons (qui forment le mot à transférer dans les dits registres) joués. Les registres de données audio sont :

synthèse vocale

Mais pourquoi se fatiguer à tout faire soit même alors que le DMA fait cela automatiquement sans qu'on s'occupe de lui ?

2. Les avantages

Cette technique est très utile pour toutes les applications qui touchent au temps réel, par exemple si vous voulez transformer votre Amiga en synthétiseur et modifier les paramètres en même temps ou aussi dans les programmes de numérisations pour les options de "monitoring" quand on est en train de numériser... enfin bref, pour toutes les routines sonores qui dépassent le stade de la simple reproduction après coup.

3. Les inconvénients

Par contre, vous ne rencontrerez jamais une telle technique dans une intro ou une démo car elle est extrêmement coûteuse en temps de calcul et si on ne charge pas à temps les deux nouveaux échantillons dans les registres AUDxDAT, le dernier sera répété. Une technique réservée à des applications spécialisées donc...

Partie 3 : la compression par deltas de Fibonacci

1. Le principe

Sous cette appellation barbare se cache en fait une technique fort simple. La compression delta, grandement utilisée en informatique, consiste à coder la différence entre deux données consécutives au lieu des données elles-mêmes. Ici, nous allons coder sur 4 bits la différence entre deux échantillons audio consécutifs de 8 bits. La taille d'un fichier comprimé de cette façon sera donc :

1 (pour la valeur initiale) + (taille normale-1) / 2

...mais avec 4 bits on aura donc seulement 2^4 = 16 différences possibles (on devra donc faire des approximations donc perte de qualité sonore) d'où l'intérêt de choisir de bonnes valeurs.

Tout cela pour en venir à la compression par deltas de Fibonacci qui est reconnue par le format IFF 8SVX et donc par des programmes tels que Perfect Sound (vous savez l'option COMP...). Les auteurs de ce format on choisit de coder les deltas (différences) sur 4 bits (d'où 50% de réduction par rapport aux 8 bits normaux d'un échantillon) mais ils auraient également pu choisir de coder sur 6 bits par exemple (25% de réduction) et ils ont pris comme valeurs pour les deltas les nombres appartenant à la légendaire série de Fibonacci. Celle-ci est définie par :

Fib(1) = 1
Fib(2) = 2
Fib(n) = Fib(n-1) + Fib(n-2)

2. Les avantages

Ils sont énormes : d'une part les temps de compression et de décompression sont vraiment minimes, d'autre part on connaît la réduction du volume d'information qui est constante et de plus relativement importante : 50% ici.

3. Les inconvénients

Le gros désavantage est bien sûr dû à la perte d'information puisque certaines différences devront être ramenées au nombre de Fibonacci le plus proche. La suite de Fibonacci est telle que les pertes seront d'autant plus importantes que la valeur de l'échantillon variera brutalement. Les petits deltas seront par contre parfaitement codés. Cette compression doit être utilisée avec discrétion... certains sons passeront aussi bien, d'autres un peu moins bien...

4. Le listing

Des programmes tels que Perfect Sound se servent de cette technique mais lorsque l'on veut récupérer un tel fichier pour soi, il faut se le décompresser tout seul. Même la plupart des lecteurs IFF 8SVX ignorent cette (dé)compression. Je vous propose donc une petite routine de décompression. Elle est entièrement commentée donc pas de problème mais sachez tout de même qu'elle suppose que vous ayez réservé de la place pour le fichier compressé auparavant ce qui est tout à fait normal d'ailleurs. En plus, elle vous permettra peut-être de réviser quelques bases de 68000 parce qu'à force de tripatouiller les registres DMA, sprites, Copper, etc. on finit vite par en oublier.

synthèse vocale

Bon, c'est tout pour aujourd'hui, la prochaine fois on commencera à voir comment faire des trucs délirants avec l'échantillonnage, le MIDI, j'en passe, et des plus bruyants... ("ASM : les mamies ne lui disent pas merci...").


[Retour en haut] / [Retour aux articles] [Article précédent]