2e partie : PING, SHOOT, EXPLODE, TOUCON et TOUNOR
Introduction
Dans la première partie, nous avons vu comment modifier en Ram les sons préprogrammés dans la Rom, afin de pouvoir les adapter à nos besoins. Dans cette 2e partie, nous verrons PING, SHOOT, EXPLODE, TOUCON (son des touches contrôles) et TOUNOR (son des touches normales). Ces cinq commandes ont toutes le même code : LDX LL, LDY HH et JSR #FA86. Seule diffère l’adresse LLHH ciblant le bloc des 14 paramètres que la routine #FA86 doit envoyer au PSG 8912.
Pendant que je suis dans les généralités, remarquons que ces 5 sons utilisent une seule et même enveloppe, la n°0 \, mais avec une durée différente pour chacun d’eux.
Ils se répartissent ensuite en 2 groupes : D’une part PING, TOUCON et TOUNOR qui utilisent un seul canal, le n°1 et pas de bruit blanc et d’autre part SHOOT et EXPLODE qui n’utilisent QUE du bruit blanc, mais mixé aux canaux 1,2 et 3.
Pour le groupe PING, TOUCON et TOUNOR, c’est la période de ce canal 1 (paramètres R0/R1) qui fait la différence. Pour le groupe SHOOT et EXPLODE, c’est la période du bruit blanc (paramètre R6) qui fait la différence. Vous savez déjà quasiment tout ! Les 2 commandes restantes, ZAP et OUPS, ont une structure différente et seront traitées dans la troisième et dernière partie de cette étude.
La commande PING
Contenu du bloc des 14 paramètres (voir le fichier source PINGLM.ASM) :
#18, #00, #00, #00, #00, #00, #00 pour R0 à R6
#3E, #10, #00, #00, #00, #0F, #00 pour R7 à R13.
Prêtons attention aux valeurs différentes de zéro (sauf pour R7). Que fait PING ?
-Contrôle des canaux en service : R7 = #3E = 0011 1110. Seul le canal 1 est actif.
-Période du canal 1 : R0/R1 = #0018. Le son produit est proche du MI de l’octave 6.
-Volume du son pour le canal 1 : R8 = #10. Le volume est contrôlé par une enveloppe.
-Durée de cette enveloppe : R11/R12 : #0F00. On a #0F00x256=983040 µs soit environ 1s.
-Numéro de l’enveloppe : R13 = #00. Il s’agit de la rampe descendante de forme \.
PING envoie sur le canal 1 un son proche du MI de l’octave 6. Ce son attaque directement au volume maximal puis décroit jusqu’au niveau zéro, ce qui prend environ 1s. La production de bruit blanc est inactivée. Les variables que nous pouvons ajuster sont la période et la durée du son.
Variantes
Je vous propose deux programmes, PING1.BAS qui offre quelques exemples de variantes et PING2.BAS qui permet d’expérimenter soi-même des sons basés sur PING en ajustant à volonté la période et la durée de l’enveloppe.
Ces 2 programmes chargent PINGLM en Ram et de DOKEnt les valeurs à modifier selon les choix offerts par un menu. Compte tenu de l’adresse d’implantation de PINGLM en Ram (de #9800 à #9814), les adresses à DOKEr sont :
En #9807- #9808 : La période du canal 1.
En #9812- #9813 : La durée de la rampe. PING1.BAS propose 20 variantes de PING qui illustrent les possibilités (figure de gauche page précédente), que je vous laisse approfondir avec PING2.BAS en jouant simultanément sur la période et sur la durée.
Les commandes TOUCON et TOUNOR
Voici ce que révèle le bloc des 14 paramètres :
Pour TOUCON :
#2F, #00, #00, #00, #00, #00, #00 pour R0 à R6
#3E, #10, #00, #00, #1F, #00, #00 pour R7 à R13.
Pour TOUNOR :
#1F, #00, #00, #00, #00, #00, #00 pour R0 à R6
#3E, #10, #00, #00, #1F, #00, #00 pour R7 à R13.
Ces deux commandes ne diffèrent que par la période du canal 1.
-Contrôle des canaux en service : R7 = #3E = 0011 1110. Seul le canal 1 est actif.
-La période du canal 1 (R0/R1) vaut :
#002F pour TOUCON (MI de l’octave 5) et
#001F pour TOUNOR (SI de l’octave 5).
-Volume du son pour le canal 1 : R8 = #10. Le volume est contrôlé par une enveloppe.
-La durée de l’enveloppe (R11/R12) est de #001F (environ 8 ms). C’est la différence majeure avec PING : Si PING est bref, TOUCON et TOUNOR sont ultra-brefs !
-Numéro de l’enveloppe : R13 = #00. Il s’agit de la rampe descendante de forme \.
Comme pour PING, les variables que nous pouvons ajuster sont la période et la durée du son. En fait, le fonctionnement des commandes TOUCON et TOUNOR est tout à fait semblable à celui de PING.
Variantes
Comme pour PING, je vous propose deux programmes :
-TOUCON1.BAS propose 18 variantes de TOUCON/TOUNOR qui illustrent les possibilités (figure de droite page précédente) et que je vous laisse approfondir avec
-TOUCON2.BAS en jouant simultanément sur la période et sur la durée.
Ces 2 programmes s’appliquent aussi bien à TOUCON qu’à TOUNOR. Les adresse d’implantation de TOUCONLM en Ram et les adresses à DOKEr sont les mêmes que pour PING.
Les commandes SHOOT et EXPLODE
Voici ce que révèle le bloc des 14 paramètres :
Pour SHOOT :
#00, #00, #00, #00, #00, #00, #0F pour R0 à R6
#07, #10, #10, #10, #00, #08, #00 R7 à R13.
Pour EXPLODE :
#00, #00, #00, #00, #00, #00, #1F pour R0 à R6
#07, #10, #10, #10, #00, #18, #00 R7 à R13.
On peut observer les paramètres :
-Contrôle des canaux en service : R7 = #07 = 0000 0111. Les canaux 1, 2 et 3 ne délivrent que du bruit blanc.
-Ce bruit blanc a pour période R6 = #0F pour SHOOT et R6 = #1F pour EXPLODE.
-Pour les 2 commandes, le volume du son sur les 3 canaux est contrôlé par une enveloppe : R8 à R10 valent #10.
-La durée de cette enveloppe (R11/R12) est #0800 (0,5 s environ) pour SHOOT et #1800 (1,6 s environ) pour EXPLODE.
-Numéro de l’enveloppe : R13 = #00. Il s’agit de la rampe descendante de forme \. Ces deux commandes sont très proches l’une de l’autre. Elles ne diffèrent que par la durée de l’enveloppe et la période du bruit blanc. La particularité de ces 2 sons est de reposer uniquement sur la production de bruit blanc ! Par définition, un bruit blanc est un signal aléatoire (voir https://fr.wikipedia.org/wiki/Bruit_blanc) et la notion de “période du bruit blanc” est surprenante, mais bon, voyons ce que ça donne en pratique…
Variantes
Ici encore les possibilités de modulation sont évidentes : Soit on modifie la période du bruit blanc, soit on joue sur la durée de l’enveloppe.
Comme précédemment, la procédure consistera à charger SHOOTLM ou EXPLODELM en Ram et à POKEr les valeurs à modifier. Ces 2 routines ont la même adresse d’implantation en Ram (de #9800 à #9814) et les mêmes adresses à POKEr :
En #980D : La période du bruit blanc.
En #9812- #9813 : La durée de la rampe.
Les programmes SHOOT1.BAS (figure de gauche page précédente) et EXPLODE1.BAS (figure de droite page précédente) offrent quelques échantillons à écouter. Dans SHOOT1.BAS, la période du bruit blanc et la durée de l’enveloppe varient séparément, tandis que dans EXPLODE1.BAS les variations de ces 2 paramètres sont combinées. Les programmes SHOOT2.BAS et EXPLOD2.BAS vous permettrons d’expérimenter vos propres idées, en ajustant à volonté la période du bruit blanc et la durée de l’enveloppe. En fait ces 2 programmes s’appliquent aussi bien à SHOOT qu’à EXPLODE. Avec un peu de chance vous aurez la surprise de retrouver EXPLODE avec SHOOT2.BAS et SHOOT avec EXPLODE2.BAS !
Petite douceur
Après tout ce travail, il est temps de s’offrir une petite gâterie. Tous les sons examinés jusqu’ici étaient basés sur l’enveloppe n°0 \. Juste pour voir, j’ai fait quelques essais avec les enveloppes /, ////, / ͞ et /\/\/ , ceci pour les 5 sons PING, SHOOT, EXPLODE, TOUCON et TOUNOR. Pour chacun de ces sons, un seul paramètre diffère des paramètres d’origine : R13, qui est respectivement mis à #04 (/), #0C (////), #0D (/ ͞ ) et #0E (/\/\/) (figure ci-dessus).
Comme on pouvait s’y attendre, les sons produits avec les enveloppes ////, / ͞ et /\/\ continuent à l’infini (mais j’ai coupé !).
Pour PING, SHOOT, EXPLODE, TOUCON et TOUNOR avec enveloppe /, les résultats sont assez surprenants, car ces 5 sons fonctionnent à l’envers de ce qu’on a habituellement dans l’oreille ! Les sons TOUCON et TOUTNOR inversés sont particulièrement intéressants.
Avec l’enveloppe //// (c’est à dire les sons précédents mais répétés à l’infini), on découvre des bruits surprenants de machines ou de sonneries.
L’enveloppe / ͞ est moins intéressante car le volume du son est maintenu au niveau haut à l’infini.
Enfin l’enveloppe /\/\/, couplée à PING, SHOOT et EXPLODE nous emmène au bord de la mer (avec beaucoup d’imagination). A nouveau TOUCON et TOUTNOR donnent des résultats plutôt rigolos que je vous laisse les découvrir.
Vous trouverez tous les fichiers de ces expérimentations et une mine d’idées pour agrémenter le bruitage de vos programmes dans le fichier SonsPreprogr2.zip qui accompagne cet article.
A suivre…