--== DEVLYNX ==--

 
 
|
 
 
 
 
Accueil
News
Doc
Mémoire
Recrutement
Faq
Liens
Pseudo :

Mot de passe :


Pas de compte ?

S'inscrire...


Statistiques :

Documentation


Rootretour à l'arborescence des catégories » Documentation techniqueEnsemble des informations pouvant être utiles au développement » Lynx docRestranscription de la documentation d'origine » Audio » Compléments sur le son
«««« ( /^\ ) »»»»
INFOS SUR LA CATEGORIE

Créée le : 2009-09-20 17:00:00
Par : vince





INFOS SUR LA PAGE

Titre : Compléments sur le son
Sous Titre :
Langue : FRA
Source : http://www.monlynx.de/lynx/lynx7.html#_75
Auteur : vince
Posté par : vince

Compléments sur le son

1) Que diable pensions nous quand nous avons conçu les circuits audio ?

Les buts d'origine de la conception étaient que les circuits :
¤ Soient peu coûteux
¤ Nécessitent peu de temps CPU pour obtenir des bruits utilisables dans les jeux
¤ Aient une plage de fréquence et une qualité suffisante pour de la musique tolérable
¤ Fournissent 4 cannaux
¤ Aient un accès direct aux CNA
¤ Soient peux coûteux

Notre approche a été similaire à celle des systèmes audios de l'Atari 800 ou 2600.

Premièrement, nous leur avons fourni 4 compteur polynomiaux. Que sont ils.

L'horloge système de la Lynx tourne à 16MHz, un peu élévé pour la musique sur notre planète. Donc nous faisons passer l'horloge dans quelques diviseurs pour la faire tomber. On a d'abord quelques prédimensionneurs binaires suivis du fameux terrible compteur polynomial (de la mort (qui tue la vie (qu'elle est pas belle))). Le compteur polynomial est en réalité un simple diviseur programmable. Un compteur binaire (tout ce qu'il y a de plus normal) divisera par 7 en comptant 0,1,2,3,4,5,6,0,1,2,3,4,5,6,etc... Un compteur polynomial pourra compter 0,2,5,4,3,1,6,0,2,5,4,3,1,6,etc... Il y a le même nombre d'états mais ils arrivent dans un ordre pseudo aléatoire. La période de bouclage est programmée en sélectionnant la valeur initiale dans le registre à décalage (paramétrer le décaleur) et en choisissant quel patte de sortie sont reliées.

Pourquoi polynomial ? Vous n'aimez pas quand c'est binaire ?

Binaire, c'est bien quand on veut des signaux carrés. Imaginez que vous ayez besoin d'un bruit de moteur pour un jeu de voitures. Une onde carrée est clairement pas suffisante. Un compteur polynomial avec un période de répétition assez rapide introduira un léger brouillement au son pur donnant ainsi une vraie impression de bruit de moteur. Une fois lancé, le son continue tout seul sans aucun travail complémentaire du CPU. Pour augmenter la vitesse de rotation du moteur, conservez le même paramétrage du décaleur et changez juste la fréquence à laquelle il est cadencé (le prédimensionneur). Plus d'informations sur le sujet suivront. Donc avec un minimum de travail CPU, on peut faire un son de moteur complexe qui change de vitesse progressivement.

Ensuite, on a donné au CPU un accès direct au quatre CNA 8bits. Un compteur polynomial en fonction utilises un CNA pour ses sorties mais nous avons voulu donner au programmer un maximum de flexibilité en lui permettant d'écrire directement sur les cannaux inutilisés. Il y a quelques confusions au sujet des CNA vu qu'ils sont utilisé avec le système polynomial pour produire 127 niveau d'intensité. La vérité est qu'ils peuvent être utilisés comme 4 CNA 8bits indépendants.

Finalement, un il y a un filtre RC matériel sur la sortie à environ 4500Hz. Pour les futures versions stéréo on a anticipé un circuit d'amplification des basses.

2) Que diable pensions nous quand nous avons conçu les logiciels audio ?

On pensait qu'on utiliserait les outils audios d'Epyx partout où ça serait possible. SPL (Sound Programming Language = langage de programmation sonore) a été conçu par des musiciens pour des musiciens, ils l'aiment bien alors nous l'avons adopté. Bien entendu, les musiciens pensent que la musique est le plus important et ils ont insisté en disant qu'un raffraichissement à 240Hz était le minimum tolérable pour le son. Bon, tout dépends de votre point de vue. Les programmeurs sont bien entendu libre d'écrire leur propre driver pour correspondre à leur besoins.

3) C'est bien gentil mais j'ai toujours aucune idée du type de son qui sortira de HSFX

OK, ok, voici un peu plus de détails. Avant tout, vous devriez activer l'éditeur HSFX.

Il y a trois zones principales que je mentionnerais. La boite dans le coin supérieur gauche est la source d'horloge pour le compteur polynomial. Le compteur polynomial est dans la boite dans le coin inférieur gauche. A droite du compteur polynomial se trouve une boite qui indique quoi faire avec le compteur polynomial.

Astuce de conception n°1 : Partout où vous voyez le mot "interpolation" cette fonction est obtenue par voie logicielle dans le driver audio. Ce n'est pas une fonction matérielle. Le driver audio effectue une interpolation linéaire de la première valeur à la suivante 240 fois par seconde. Vous verrez aussi le terme "Intégrer". C'est fait par voie matérielle et je tâcherais de l'expliquer plus tard.

Astuce de conception n°2 : "Fréquence" ne traite pas de la fréquence de la note mais plutôt de la fréquence utilisée pour cadencer le compteur polynomial. Pour un réglage du compteur polynomial donné, baisser la fréquence baissera la fréquence du son de sortie (excellent pour le changement de vitesse d'un moteur)

Donc, pour commencer par la première boite, les différentes options vous permettent de sélectionner une cadence de manière simple. Je ne pense pas que qui que ce soit ait un problème avec ça, si c'est votre cas, vous devriez arrêt de lire tant que vous n'avez pas effecté la prière pour comprendre le...

COMPTEUR POLYNOMIAL!!!

Le registre à décalage (décaleur) avec des connexions dans un retour XOU vers lui même composent le compteur polynomial. Il n'y a pas grand chose d'intuitif sur ce fonctionnement si ce n'est que plus vous sélectionnez une connexion sur la gauche, plus le son peut être aléatoire. ("peut être", pas "sera")

Ca ne servira pas forcément mais j'ai joint deux impressions qui montrent l'ensemble des combinaisons possibles du compteur polynomial. Idéalement, ces données seraient intégrées dans HSFX de manière transparente mais ne retenez pas votre souffle.

La première impression liste dans l'orde les différentes combinaisons de périodes du décaleur, c'est le nombre de comptes avant que le compteur revienne à sa valeur initale. Ce nombre peut aller de 1 à 4095. On constate qu'il y a 19 façons différentes pour obtenir une période de 4095. Toutes ces 19 façons ont une valeur de départ du décaleur de "00" et une configuration différente des connexions de retour. Elles boucleront toutes à la même vitesse mais auront une sonorité légèrement différente. (c'est actuellement dur d'entendre cette différence sur cet exemple vu que 4095 est le plus long et donc le plus aléatoire des comptages). Les boucles de comptage de 1 sont des états bloqués et donc pas très intéressants. En général plus le compte est proche de 2 et plus le son ressemblera à une onde carrée. Plus le compte est proche de 4095 et plus le son ressemblera à un bruit blanc.

La seconde impression liste l'ordre des combinaisons de connexions de retour. Donc par exemple, un paramétrage de connexion de retour de 0x02E pourra compter dans n'importe laquelle des 8 séquences différentes en fonction de la valeur de départ du décaleur. Les valeur de départ de 0x000, 0x005, 0x00B ont toutes une période de 15 mais auront une sonorité différente (on peut parler de timbres différents). Les valeurs de 0x002, 0x00E, 0x016 ont une période de5 et des timbres différents. 0x009 a une période de 3 et 0x03F est la période de blocage de 1.

La sortie du compteur polynomial est un simple bit. Il est utilisé dans l'une de deux possibilités en fonction du paramétrage du mode intégrateur.

Dans le mode normal sans intégrateur, le bit sélection soit la valeur dans le registre de volume, soit son complément à deux et l'envoie au CNA de sortie. Par exemple, en supposant que le compteur polynomial est paramétré pour sortir de simples signaux carrés et que le volume soit de 9 dans le registre, Le flux de sortie de bits du compteur polynomial sera 111000111000etc... et le CNA de sortie verra 9,9,9,-9,-9,-9,9,9,9,-9,-9,-9,etc... Augmenter la valeur dans le registre de volume augmentera le niveau du son jusqu'à un maximum de 127,-127.

Dans le mode intégrateur, au lieu d'envoyer le volume directement au CNA, il va plutôt ajouter le contenu du registre de volume (ou son complément à deux) dans un total courrant qui est ensuite transmis au CNA. Donc, en supposant qu'on part de 0, notre exemple 111000111000 donnera 9,18,27,18,9,0,9,18,27,18,9,0. On remarque qu'on obtient ainsi un signal qui est plus triangulaire. La sonorité est différente d'un signal carré. Le total courrant coupe plutôt que s'enrouler (ce qui donne un son affreux).

Les trois choix d'interpolation dans HSFX peuvent maintenant être compris. L'interpolation de fréquence donnera un glissement d'une note à une autre. L'interpolation de volume lisse les transistions entre les niveaux sonores. Et l'interpolation des connexions de retour n'a aucun sens. Cependant, ça fait un son de verre brisé caractéristique très intéressant pour la LYNX. Hey, c'était facile à mettre dans le driver.

4) Ca suffit, je vais écrire mon propre pilote. Je veux causer avec Mikey en direct

Ca me va, jettons juste un oeil au matériel.

Dans Mikey, tous les timers et cannaux sonore partagent une pièce de matériel. Chaque timer/canal sonore prends son tour par rotation par le biais du matériel. C'est pour cela que ça peut prendre jusqu'à 1µs pour accéder à ces registres, vous devez attendre que ce soit son tour. C'est aussi pour ça que les registres d'horloges et sonores se comportent de manière très similaires.

Les registres prédimensionneurs 0xFD24 et 0xFD26 se comportent exactement comme n'importe quelle horloge. 0xFD25 et quasiment le même qu'un timer. La seule différenc étant que le bit 7 sur lequel nous avons collé une des connexions de retour (pas d'interruption sur le son) et le bit 5 qui contrôle le mode intégrateur. Le quartet de poids faible de 0xFD27 fonctionne comme un timer sauf pour le bit 3 dont la fonction n'a pas de sens pour le son. Ca n'a pas d'importance pour vous vu que la seule fois où vous écrirez dans 0xFD27 sera lors de l'initialisation du décaleur et le son doit être coupé à ce moment là ou vous ne pourrez pas activer simultanément le décaleur avant qu'ils changent.

En parlant du décaleur, il se situe en 0xFD23 et 0xFD27. Pour répéter, soyez surs que le compteur polynomial n'est pas cadencé avant d'initialiser ses registres. Les connexions de retour sont paramétrées dans 0xFD21 et au bit 7 de 0xFD25.

Le bit 5 dans 0xFD25 contrôle le mode intégrateur. 0xFD20 est le contrôle du volume. N'oubliez pas qu'en mode intégrateur le volum est ajouté au total courrant et envoyé au CNA. Le total courrant est conservé en 0xFD22. En mode normal, 0xFD22 contiendra le volume ou son complément à deux. Remarquez que vous ne devez normalement pas interragir avec 0xFD22, il obtient juste ce qu'il faut. Si vous voulez écrire directement dans le CNA alors 0xFD22 est l'endroit pour le faire. Vous voudrez probablement stopper les horloges audio avant d'écrire dans 0xFD22.

5) Stéréo, où es-tu stéréo ?

A l'origine, la Lynx était mono. Une fois que Mikey a été opérationnel et prêt à produire, il a été décidé d'ajouter un mode stéréo simple. Les cartes Howard n'étaient pas encore finie donc on a dit banco et on a implémenté la stéréo dessus. Cette forme de stéréo était de la bascule de canal contrôlée par 0xFD50. Par la suite il a été décidé d'ajouter le pan et l'atténuation dans les registres 0xFD40 à 0xFD44. En pièce jointe se trouve un document qui détaille ces registres qu'il faut ajouter à votre annexe 2 des adresses matérielles. Une prise dans la carte de mise à niveau des cartes Howard a été conçu et est disponible auprès d'Atari. A ce jour 25/04/1991 aucune Lynx stéréo n'a été produite. En fait l'existance potentielle de la stéréo est encore confidentielle. Klax supporte un son panoramique et des sons numériques. Xenophobe supporte pas mal d'effets stéréo et probablement d'autres jeu le font aussi, qui s'en souviendra ?

6) Comme d'habitude Craig ( Vince ? ;) ), vous avez fait d'un sujet difficile une formalité d'une simplicité déconcertante

C'est vrai, c'est vrai. Pour les réponses au questions complémentaires sur le son vous pouvez me laisser des messages sur le BBS d'Atari Sunnyvale ou m'appeler chez EPYX 415-368-3200 FAX 415-369-2999. Craig Nelson @ EPYX
[42BS] On dirait bien qu'EPYX n'existe plus !

(Source : http://www.monlynx.de/lynx/lynx7.html#_75)
«««« ( /^\ ) »»»»

générée en 31 ms
-= DevLynx, un site par vince pour vous =-