
|
MSX Music YM-2413 Onbekend, 00-00-00
FM-PAC / MSX-MUSIC ( Yamaha YM-2413 )
-------------------------------------
In deze tekst zal alleen het direct programmeren van de MSX-MUSIC
besproken worden, dus niet de FM-BASIC mogelijkheden, omdat deze uitú
eindelijk toch gebruik maken van de directe aansturing.
De MSX-MUSIC of de FM-PAC neemt voor de aansturing twee I/O poorten in
gebruik. Helaas worden deze registers alleen gebruikt om van de comú
puter naar de FM-PAC te schrijven, dus lezen van registers van de
FM-PAC/MSX-MUSIC is niet mogelijk.
07C h - Adrespoort.
07D h - Data Poort.
Om deze poorten juist aan te sturen in machine-taal is het handig om
het volgende programma te gebruiken:
;Reg. D bevat register nummer voor FM-PAC.
;Reg. E bevat data voor gekozer register.
SET_FM: LD A,D
OUT (07CH),A
LD A,E
OUT (07DH),A
EX (SP),HL ;Deze 2 commando's dienen slechts als korte
EX (SP),HL ;pauze om de PAC de data te laten verwerken
RET ;voor er weer nieuwe data wordt gestuurt.
De FM-PAC bevat 43 programmeerbare registers voor het instellen van
frequentie, volume, instrumenten, drums en eventueel samples. Dit
laatste is nogal moeilijk aangezien de FM-PAC geen ingebouwde hardware
heeft om dit zelfstandig zoals de MUSIC-MODULE af te spelen moet hierú
voor zelf in ML-code een routine worden geschreven die via de nodige
registers de sample data in de FM-PAC stuurt, zodat deze dit sample op
de geluids output zet.
#0Fh FM.TST
7 6 5 4 3 2 1 0
+---+---+---+---+---+---+---+---+
| - | - | - | - |SND| - | - |SMP|
+---+---+---+---+---+---+---+---+
SND - 1=Sound output van de chip is uit.
SAMP - 1=Sample mode aan, een vier bit's sample kan geschreven worden
naar register #10h, de 4 hoogste bit's.
#10h - #18h LOWFRQ
7 6 5 4 3 2 1 0
+---+---+---+---+---+---+---+---+
|FQ7|FQ6|FQ5|FQ4|FQ3|FQ2|FQ1|FQ0|
+---+---+---+---+---+---+---+---+
#20h - #28h SELECT
7 6 5 4 3 2 1 0
+---+---+---+---+---+---+---+---+
| - | - |SUS|KEY|OC2|OC1|OC0|FQ8|
+---+---+---+---+---+---+---+---+
FQ 8/0 - Frequency van kanaal 1 tot 9.
OC 2/0 - Octaaf van kanaal 1 tot 9.
KEY - Als er een nieuwe toon aan geslagen moet worden dan moet dit
eerst op 0 gezet worden. Vervolgens kan de nieuwe data inge-
laden worden (Frequentie, Instrument en volume), daarna dit
bit weer op 1 zetten.
SUS - Staat dit bit op 1 dan vloeit de toon langzaam af nadat het
KEY bit op 0 is gezet. Staat SUS op 0 dan stopt de toon me-
teen wanneer het KEY bit uitgezet wordt.
#30h - #38h VOLINS
7 6 5 4 3 2 1 0
+ ---+---+---+---+---+---+---+---+
|IN3|IN2|IN1|IN0|VL3|VL2|VL1|VL0|
+---+---+---+---+--- ---+---+---+
VL 3/0 - Volume van kanaal 1 tot 9. Bij binair 0000 wordt het hoogste
volume bereikt.
IN 3/0 - Instrumen van kanaal 1 tot 9. Er zijn 16 Instrumenten, waar-
van instrument nummer 0, via de registers #00 tot #07 ge-
programmeert kan worden.
NR: Instrument:
00 Software Instrument
01 Violin
02 Guitar
03 Piano
04 Flute
05 Clarinet
06 Oboe
07 Trumpet
08 Organ
09 Tube
10 Synthesizer
11 Harpsicord
12 Vibraphone
13 Synthesizer Bass
14 Electric Piano 1
15 Electric Piano 2
#03h DRMSEL
7 6 5 4 3 2 1 0
+---+---+---+---+---+---+---+---+
| - | - |SEL|BD |SD |TOM|CIM|HH |
+---+---+---+---+---+---+---+---+
SEL - Als dit bit 1 is dan zullen de kanalen 7 tot 9 worden gebruikt
voor de drum instellingen en de bit's 4 tot 0 kunnen worden
gebruikt om een drum aan te sturen.
BD - Bass Drum :1 = Activeer, mits SEL op 1 staat.
SD - Snare Drum.
TOM - Tom-Tom.
CIM - Cimbal.
HH - Hi Hat.
De Frequenties en volumen van de Drum's zijn als volgt verdeelt:
Reg: Gebruik:
#16h Frequentie bit 7 tot 0 voor de BassDrum.
#17h Frequentie bit 7 tot 0 voor de SnareDrum en de HiHat.
#18h Frequentie bit 7 tot 0 voor de TomTom en de Cimbal.
#26h Octaaf bit 2 tot 0 en Frequentie bit 8 voor BassDrum.
#27h Octaaf bit 2 tot 0 en Frequentie bit 8 voor SnareDrum en de HiHat
#28h Octaaf bit 2 tot 0 en Frequentie bit 8 voor Tom-Tom en de Cimbal.
#36h Low nibble is volume van Bass Drum. ( 0 is het hoogste volume)
#37h High nibble is volume van Hi Hat.
Low nibble is volume van Snare Drum.
#38h High nibble is volume van Cimbal.
Low nibble is volume van Tom-Tom.
Programmeren van het Software-Instrument.
De FM bevat voor elk instrument 2 operatoren. Het geluid wordt opgeú
wekt via de FM-synthese dat staat voor Frequency Modulation. Het Sysú
teem werkt het zelfde als dat van de Music-module/MSX-Audio alleen de
maximum waarden zullen niet altijd overeen komen, maar de theorie is
het zelfde.
#00h/01h SET.B / SET.A.
7 6 5 4 3 2 1 0
+---+---+---+---+---+---+---+---+
| AM|VBR|S/D|RKS|MS3|MS2|MS1|MS0|
+---+---+---+---+---+---+---+---+
#00H voor operator B en #01h voor operator A.
AM - Amplitude Modutation.
VBR - Vibrato.
S/D - 0 = Decay; 1 = Sustain.
RKS - Rate Key Scale.
MS3/0 - Multi sample wave selection.
#02h KSCMOD
7 6 5 4 3 2 1 0
+---+---+---+---+---+---+---+---+
|LK1|LK0|MD5|MD4|MD3|MD2|MD1|MD0|
+---+---+---+---+---+---+---+---+
LK1/0 - Level Key Scale.
MD5/0 - Modulation Control.
#03h FEED
7 6 5 4 3 2 1 0
+---+---+---+---+---+---+---+---+
|LK1|LK0| - |DS2|DS1|FD2|FD1|FD0|
+---+---+---+---+---+---+---+---+
LK1/0 - Level Key Scale.
DS2/1 - Distorted Wave Form.
FD2/0 - FM-Feedback constant.
#04h / #05h CTRL.B / CTRL.A
7 6 5 4 3 2 1 0
+ ---+---+---+---+---+---+---+---+
|AT3|AT2|AT1|AT0|DC3|DC2|DC1|DC0|
+---+---+---+---+---+---+---+---+
AT3/0 - Attack envelope rate.
DC3/0 - Decay envelope rate.
#06h / #07h IND.B / IND.A
7 6 5 4 3 2 1 0
+---+---+---+---+---+---+---+---+
|IN3|IN2|IN1|IN0|RL3|RL2|RL1|RL0|
+---+---+---+---+---+---+---+---+
IN3/0 - Indication Decay / Sustain level.
RL3/0 - Release envelope rate.
De FM-synthese zit nogal ingewikkeld in elkaar, vooral voor de beú
ginner is het gewoon een kwestie van proberen. Gelukkig zijn er aardig
wat muziek programma's op de markt die dit zelf behandelen.
|