L'Hector de Micronique est équipé du synthétiseur SN76477 de Texas Instruments. Le Basic permet de commander ce synthétiseur grâce à l'instruction SOUND, disposant de deux paramètres non décrits par la documentation officielle. Nous donnons ici leur signification.
Auteur............: Daniel Coulom - Octobre 2009
Site internet...: DCHector, émulateur des ordinateurs Micronique.
Avertissement :
Cette version du document date du 26 octobre 2009. Elle est provisoire et incomplète. Elle sera corrigée et améliorée en fonction des nouvelles découvertes.
Il n'y a pas de règle pratique permettant de déterminer, à priori, la valeur des paramètres produisant un effet sonore recherché. Il faut donc partir à la pêche et le nombre de combinaisons étant particulièrement élevé vous allez pouvoir entreprendre de fructueuses recherches (La pratique du BASIC 3X page 47).
Partons à la pêche ! Ce document a pour objectif de combler l'énorme lacune de la documentation et de permettre ainsi aux programmeurs de générer des sons.
Les tests ayant permis de retrouver les informations ont été effectués par yo_fr sur un Hector HRX. Sans son aide active rien n'aurait été possible. Nos discussions dans le forum system-cfg montrent la difficulté de la reconstitution du fonctionnement de l'instruction.
VCO = Voltage Controled Oscillator
NOISE = générateur de bruit blanc
SLF = Super Low Frequency oscillator
INHIBIT = suppression du son en sortie
ATTACK = attaque
DECAY = décroissance
A/D = contrôle de l'attaque et de la décroissance
ONE-SHOT = son émis pendant une durée limitée
VCO_SELECT = le VCO est piloté par le SLF
VCO_CONTROL = tension externe modifiant la fréquence du VCO
ENVELOPE_1 = premier filtre appliqué au bruit blanc
ENVELOPE_2 = deuxième filtre appliqué au bruit blanc
Se reporter à la datasheet du SN76477[1] pour plus de détails
SOUND m, x
Le mixer est commandé par trois entrées du SN76477 :
- A (broche 26)
- B (broche 25)
- C (broche 27)
m est un nombre de 0 à 7
C B A 0: VCO 0 0 0 1: NOISE 0 1 0 2: SLF & NOISE 1 0 0 3: SLF & VCO 1 1 0 4: SLF 0 0 1 5: VCO & NOISE 0 1 1 6: SLF & VCO & NOISE 1 0 1 7: INHIBIT 1 1 1
x est un entier sur 16 bits. Les bits sont numérotés de b00 (poids faible) à b15 (poids fort).
b00: Resistance ATTACK 0x40 en 0x2000 Au08 --> broche 10 du SN76477 b01: Condensateur A/D 0x80 en 0x2000 Au00 --> broche 08 b02: Resistance SLF 0x40 en 0x2001 Au09 --> broche 20 b03: Condensateur SLF 0x80 en 0x2001 Au01 --> broche 21 b04: Resistance VCO 0x40 en 0x2002 Au10 --> broche 18 b05: Condensateur VCO 0x80 en 0X2002 Au02 --> broche 17 b06: Resistance DECAY 0x40 en 0x2003 AU11 --> broche 07 b07: Condensateur NOISE 0x80 en 0x2003 Au03 --> broche 06 b08: VCO_SELECT 0x40 en 0x2800 Au12 --> broche 22 b09: Resistance NOISE 0x80 en 0x2800 Au04 --> broche 05 b10: Condensateur ONE-SHOT 0x40 en 0x2801 Au13 --> broche 23 b11: AMPLITUDE 0x80 en 0x2801 Au05 --> broche 11 b12: INHIBIT 0x40 en 0x2802 Au14 --> broche 09 b13: ENVELOPE_1 0x80 en 0x2802 Au06 --> broche 01 b14: VCO_CONTROL 0x40 en 0x2803 Au15 --> broche 16 b15: ENVELOPE_2 0x80 en 0x2803 Au07 --> broche 28
Remarque : Le schéma de l'Hector HRX est faux, de même que le tableau page 7 de l'Hectorien numéro 2. En revanche le schéma du Victor 16K est juste. Au09 contrôle la broche 20 (pas la 07), Au10 contrôle la broche 18 (pas la 20), Au11 contrôle la broche 07 (pas la 18).
Extrait de la banque 1 de la rom de l'Hector HR MX 40 colonnes.
(Le contenu de la rom a été extrait par Fabien N.)
---------------------------------- Execution de l'instruction SOUND L = commande du mixer DE = autres reglages ---------------------------------- 0C68 C5 PUSH BC 0C69 7D LD A,L stocker parametres mixer dans A 0C6A E607 AND 07H garder les 3 bits de poids faible 0C6C 4F LD C,A stocker parametres mixer dans C 0C6D 3E40 LD A,40H 40H en 2802 = set Au14 0C6F 320228 LD (2802H),A INHIBIT = 1 0C72 AF XOR A 00H en 2801 = clear Au5 et Au13 0C73 320128 LD (2801H),A ONE-SHOT = AMPLITUDE = 0 0C76 2192FE LD HL,FE92H adresse de stockage parametres mixer 0C79 79 LD A,C parametre mixer 0C7A AE XOR (HL) 0C7B E607 AND 07H 0C7D AE XOR (HL) 0C7E 77 LD (HL),A stockage parametre mixer en FE92H 0C7F 320030 LD (3000H),A envoi parametre mixer 0C82 210320 LD HL,2003H adresse d'envoi des bits 6 et 7 0C85 7B LD A,E autres parametres bits 0-7 0C86 CD8E0C CALL 0C8EH envoi des 8 bits 0C89 210328 LD HL,2803H adresse d'envoi des bits 14 et 15 0C8C 7A LD A,D autres parametres bits 8-15 0C8D C1 POP BC ----------------------------------- Envoi parametres de SOUND (8 bits) ----------------------------------- 0C8E 77 LD (HL),A <-- envoi des deux bits de gauche 0C8F 87 ADD A | *2 = decalage gauche de 1 bit 0C90 87 ADD A | *2 = decalage gauche de 1 bit 0C91 2D DEC L | decremente l'adresse de destination 0C92 F28E0C JP P,0C8EH -- boucle jusqu'a 2800 ou 2000 0C95 C9 RET
Résistances (Ohm):
R0= 180 x 103 et 47 x 103 en parallèle = 37.2687 x 103
R1= 180 x 103
Condensateurs (Farad)
C0= 0.1 x 10-6
C1= 0.1 x 10-6 et 1 x 10-6 en parallèle = 1.1 x 10-6
Fréquence théorique (Hertz)
F = 0.64 / R / C
Comparaison théorie / mesure
L'écart est difficile à expliquer. Toute suggestion sera bienvenue.
DCHector utilise la valeur mesurée.
Frequence theorique mesuree (Hz) R0-C0: 171.73 255.0 R1-C0: 35.56 65.0 R0-C1: 16.61 17.0 R1-C1: 3.23 4.3
Résistances (Ohm):
R0= 1000 x 103 et 220 x 103 en parallèle = 180.33 x 103
R1= 1000 x 103
Condensateurs (Farad)
C0= 0.047 x 10-6
C1= 0.047 x 10-6 et 0.47 x 10-6 en parallèle = 0.517 x 10-6
Fréquence de base théorique (Hertz)
F = 0.64 / R / C
Tension VCO_Control (Volt):
Connexion à la masse par une résistance de 10 kOhm
Connexion au signal de contrôle par une résistance de 15 kOhm
V0= 3.75 * 10 / 25 = 1.5
V1= 0
La fréquence du VCO est multipliée approximativement par 10 pour 2.35 V. Avec 1.5 V le facteur multiplicateur estimé est 10 * 1.5 / 2.35 = 6.4
Comparaison théorie / mesure
L'incohérence des résultats est encore inexpliquée.
DCHector utilise la valeur mesurée.
Frequence theorique mesuree (Hz) V0-R0-C0: 483.26 5500 V0-R1-C0: 87.17 1300 V0-R0-C1: 43.93 580 V0-R1-C1: 7.92 132 V1-R0-C0: 75.51 V1-R1-C0: 13.62 V1-R0-C1: 6.86 V1-R1-C1: 1.24
[1] TYPE SN76477 COMPLEX SOUND GENERATOR, Texas Instruments, Bulletin DL-S 12612, July 1978
Cet ouvrage est consultable en ligne sur le site dchector à la page Documentation
© 2009 - Daniel Coulom