| |
En effet si le GS a seulement huit canaux de sortie, alors on pourrait croire qu'il ne peut seulement jouer que huit sons différents simultanément. Aussi comment puis je digitaliser quinze sons différents et les jouer tous simultanément ?
L'APPLE IIGS dispose du circuit ENSONIQ 5503 DIGITAL OSCILLATOR CHIP que l'on appelera par la suite DOC.
Le DOC dispose de 32 oscillateurs indépendants et de sa propre RAM de 64K.
Notons d'ores et déjà que cette RAM n'est pas adressable par le CPU et ne permet pas d'exécuter des programmes qui y seraient stockés. Il faut obigatoirement passer par le SOUND GLU et ses commutateurs. Au démarrage à froid cette RAM est initialisée avec des $80 et n'est pas effacée par un redémarrage à chaud.
Les valeurs à mettre dans cette RAM sont de $01 à $FF pour indiquer chaque constituant de son. la valeur $00 marque la fin d'un son.
Mais attention les sons ne peuvent pas avoir n'importe quelle longueur ! les seules longueurs admises sont :
$100, $200, $400, $800, $1000, $2000, $4000 ou $8000.
De surcroît ces sons ne peuvent pas commencer à n'importe quelle adresse dans la RAM, mais sur un début de page correpondant ; cela dépend donc leur longueur.
Longueur Adresse haute des pages possibles
----------------------------------------------------------------------------------------------
$8000 $00 $80
----------------------------------------------------------------------------------------------
$4000 $00 $40 $80 $C0
----------------------------------------------------------------------------------------------
$2000 $00 $20 $40 $60 $80 $A0 $C0 $E0
----------------------------------------------------------------------------------------------
$1000 $00 $10 $20 $30 $40 $50 $60 $70 $80 $90 $A0 $B0 $C0 $D0 $E0 $F0
----------------------------------------------------------------------------------------------
$0800 $00 $08 $10 $18 ... etc ... on ajoute $08 à chaque page précédente
----------------------------------------------------------------------------------------------
$0400 $00 $04 $08 $0C ... etc ... on ajoute $04 à chaque page précédente
----------------------------------------------------------------------------------------------
$0200 $00 $02 $04 $06 ... etc ... on ajoute $02 à chaque page précédente
----------------------------------------------------------------------------------------------
$0100 $00 $02 $03 $04 ... etc ... on ajoute $01 à chaque page précédente
----------------------------------------------------------------------------------------------
Chaque paire d'oscillateurs peut produire des effets avec chacun des canaux qui sont indépendants des lignes de sorties tout comme le haut-parleur gauche et le haut-parleur droit.
Le DOC est donc un coprocessor avec sa propre RAM de 64K dédiée. Tous les échantillons de sons doivent être placés dans cette RAM avant qu'ils puissent être joués. Les 32 oscillateurs sont essentiellement des canaux ayant un accès direct à la mémoire (DMA). Leur fonction de base est de balayer la zone des échantillons présents en mémoire et de les jouer . Ils peuvent ainsi le faire avec des vitesses variables (répétition automatique ou saut d'échantillon selon les besoins), ils peuvent faire des boucles , ils s'arrêtent quand ils lisent un zéro, ils ont des position de volume indépendants les uns des autres, et diverses autres choses qui facilitent la reproduction des sons d'instruments complexes sans charger le CPU.
Quand vous programmez le DOC, il est alors capable de jouer 32 sons simultanément et indépendants les uns des autres, sons qui doivent être placés correctement dans la RAM du DOC.
Les oscillateurs ne fonctionnent pas tous de façon parfaitement identique. Pour les sons de base ils peuvent fonctionner seuls mais pour les sons complexes ils doivent être appairés. C'est de là que vient le concept de générateurs mais les 16 générateurs SONT du point de vue fonctionnement absolument identiques et c'est pourquoi le logiciel préfère le concept de générateur. Les oscillateurs et les générateurs sont numérotés à partir de 0, ainsi les oscillateurs 0 et 1 constituent le générateur 0, les oscillateurs 2 et 3 constituent le générateur 1, et ainsi de suite.
Le générateur 15 (oscillateurs 30 et 31) est réservé pour l'usage de système (un oscillateur est positionné pour faire une boucle lente avec un volume nul, cela réalise ainsi le tempo. Détail : si l'autre est employé par n'importe quoi, il est probablement utilisé pour jouer des échantillons en mono).
La plupart des logiciels utilisent un générateur par voie. Ainsi 15 générateurs sont laissés de côté et de ce fait spécifier que le GS a 15 voies plus juste
La sortie qui vient du DOC est une sortie multiplexée à cinq bits numériques. Voici qui se passe : le DOC passe sur chaque oscillateur alternativement, et pour chaque oscillateur la valeur courante de son est multipliée par le niveau de volume des oscillateurs puis une tension proportionnelle est produite sur la sortie son. Quatre des bits numérique sont déterminet le numéro de canal et le dernier change simplement la tension d'environ 3 volts en 0.5 volts.
Le matériel externe est chargé de démultiplexer les divers canaux (4 bits signifie qu'il peut y en avoir 16) et de produire separement les sons. La carte mère juste ignore les paramétres des canaux et mélange toutes les sorties dans le jack speaker/earphone. Le connecteur son sur la carte mère a la place pour 3 des quatre bits, ainsi les cartes d'expansion qui se branchent à ce connecteur ne peuvent obtenir que seulement 8 canaux séparés. La plupart des cartes stéréo (Sonic Blaster d'AE, par exemple) prêtent seulement attention à ces bits et des canaux sont donc ignorés.
|