
|
Muziekmodule: FM-geluid Arsoft, 01-09-94
De soundprocessor
---------------------------------------------------------------------------
- Register 1: bit 7 6 5 4 3 2 1 0
+-+-+-+-+-+-+-+-+
|0|0|0|0|0|0|0|0|
+-+-+-+-+-+-+-+-+
| | | | +-+-+-+--- MULTI (A) : multi
| | | +----------- KSR (A) : key scale rate
| | +------------- TYP (A) : type
| +--------------- VIB (A) : vibrato
+----------------- AM (A) : amplitude modulatie
MUL - MULTI (0..15)
Dit stelt de generatorfrequentie in als produkt van de
stamfrequentie:
FREQUENTIE GENERATOR A = MULTI(A) * STAMFREQUENTIE
FREQUENTIE GENERATOR B = MULTI(B) * STAMFREQUENTIE
In de meeste gevallen is de vermenigvuldigingsfactor
gelijk aan de MULTI-waarde, maar er zijn enkele
uitzonderingen:
MULTI | factor
------+--------
0 | 0,5 -> generatorfreq is een octaaf lager
11 | 10 dan stamfrequentie!
13 | 12
14 | 15
KSR - KEY SCALE RATE (0..1)
Het aanzwellen, afnemen en uitsterven van de tonen
gaat sneller naarmate het met BLOCK ingestelde octaaf
hoger is. Hoeveel sneller wordt door deze functie
bepaald.
Tabel 3. Octaafpercentage
-------+-------+----------
BLOCK | KSR=0 | KSR=1
-------+-------+----------
0 | 100% | 100%
1 | 91% | 71%
2 | 82% | 50%
3 | 74% | 35%
4 | 67% | 25%
5 | 61% | 18%
6 | 55% | 12%
7 | 50% | 9%
TYP - EG-TYP (0..1)
Bepaalt het type van de toon. 0=percussie,
1=geen percussie.
+-------------------------- +-----------------------
| /:\ O | /:\ O
| / : \ O | / : \ O
| / : \________ O | / : \ O
| / : : :\ O | / : :\ O
| ___/....:..:.......:.\ O | ___/....:.....:.\__ O
| att dec sust rel O | att dec rel O
| +---------------+ O | +----------+ O
| ---+ keyon +-- O | ---+ keyon +---- O
+-------------------------O +----------------------O
a) EG-TYP=1 (geen percussie) b) EG-TYP=0 (percussie)
VIB - VIBRATO (0..1)
vibrato 1=aan, 0=uit. De vibratofrequentie is 6,4 Hz.
AM - AMPLITUDE MODULATIE (0..1)
Bepaalt of de langzame amplitudemodulatie met een
frequentie van 3,7 Hz is ingeschakeld. 0=uit, 1=aan.
- Register 2: bit 7 6 5 4 3 2 1 0
+-+-+-+-+-+-+-+-+
|0|0|0|0|0|0|0|0|
+-+-+-+-+-+-+-+-+
| | | | +-+-+-+--- MULTI (B) : multi
| | | +----------- KSR (B) : key scale rate
| | +------------- TYP (B) : type
| +--------------- VIB (B) : vibrato
+----------------- AM (B) : amplitude modulatie
- Register 3: bit 7 6 5 4 3 2 1 0
+-+-+-+-+-+-+-+-+
|0|0|0|0|0|0|0|0|
+-+-+-+-+-+-+-+-+
| | +-+-+-+-+-+--- TL (A) : total level
+-+--------------- KSL (A) : key scale level
- Register 4: bit 7 6 5 4 3 2 1 0
+-+-+-+-+-+-+-+-+
|0|0|0|0|0|0|0|0|
+-+-+-+-+-+-+-+-+
| | +-+-+-+-+-+--- TL (B) : total level
+-+--------------- KSL (B) : key scale level
TL - TOTAL LEVEL (0..63)
Deze functie regelt de verzwakking van de beide
generatoren. Het verzwakken gaat in stapjes van 0,75
dB. Voor een waarde 0 is geen verzwakking. maximale
verzwakking is 47,25 dB. In FM-mode regelt TOTAL LEVEL
(A) de modulatiediepte.
KSL - KEY SCALE LEVEL (0..3)
Deze functie regelt de afname van de geluidssterkte
met toenemende toonhoogte, zoals die voor veel
instrumenten gebruikelijk is. Er zijn vier
mogelijkheden:
KSL | verzwakking
----+---------------
0 | 0 dB/octaaf
1 | 1,5 dB/octaaf
2 | 3 dB/octaaf
3 | 6 dB/octaaf
Is bijvoorbeeld KSL=2 dan is octaaf vier 12 dB zachter
dan octaaf 0.
- Opmerking bij register 5 t/m 8.
Deze registers hebben alle betrekking op het instellen van de snelheden en
dus van de tijden waarin de toon aanzwelt, terugvalt en uitsterft. Ook deze
zijn weer afhankelijk van het met BLOCK ingestelde octaaf van de
stamoscillator. De vermenigvuldigingsfactor MULTI hebben er echter geen
invloed op. Zowel voor ATTACK, DECAY als RELEASE lopen de functie waarden
van 0 tot 15. Daarbij betekend 0 geen verandering, levert 1 de langste tijd
en 15 de kortste. De tijden worden met elk volgende functiewaarde gehalveerd
zoals blijkt uit tabel 2. Hierin staan de tijden voor ATTACK voor het
maximale aanzwelbereik van -96 dB tot 0 dB. Als het bereik kleiner is
ingesteld zijn de tijden evenredig korter. De tabelwaarden gelden ook alleen
voor octaaf 0 (BLOCK=0), voor de hogere octaven gaat alles wat sneller en
zijn de tijden dus korter (zie onder KSR).
Tabel 2. Tijden voor octaaf 0
------+------------+---------------
RATE | ATTACK | DECAY/RELEASE
------+------------+---------------
1 | 2826 msec | 39280 msec
2 | 1413 msec | 19640 msec
3 | 707 msec | 9820 msec
4 | 353 msec | 4910 msec
5 | 177 msec | 2455 msec
6 | 88 msec | 1227 msec
7 | 44 msec | 614 msec
8 | 22 msec | 307 msec
9 | 11 msec | 153 msec
10 | 5,5 msec | 77 msec
11 | 2,8 msec | 38 msec
12 | 1,4 msec | 19 msec
13 | 0,7 msec | 10 msec
14 | 0,4 msec | 5 msec
15 | 0 msec | 2 msec
- Register 5: bit 7 6 5 4 3 2 1 0
+-+-+-+-+-+-+-+-+
|0|0|0|0|0|0|0|0|
+-+-+-+-+-+-+-+-+
| | | | +-+-+-+--- DR (A) : decay rate
+-+-+-+----------- AR (A) : attack rate
- Register 6: bit 7 6 5 4 3 2 1 0
+-+-+-+-+-+-+-+-+
|0|0|0|0|0|0|0|0|
+-+-+-+-+-+-+-+-+
| | | | +-+-+-+--- DR (B) : decay rate
+-+-+-+----------- AR (B) : attack rate
DR - DECAY RATE (0..15)
De afname van de sterkte van de toon, nadat het
aanzwelmaximum is bereikt.
AR - ATTACK RATE (0..15)
Deze functie stelt de aanzweltijden van een toon in.
- Register 7: bit 7 6 5 4 3 2 1 0
+-+-+-+-+-+-+-+-+
|0|0|0|0|0|0|0|0|
+-+-+-+-+-+-+-+-+
| | | | +-+-+-+--- RR (A) : release rate
+-+-+-+----------- SL (A) : sustain level
- Register 8: bit 7 6 5 4 3 2 1 0
+-+-+-+-+-+-+-+-+
|0|0|0|0|0|0|0|0|
+-+-+-+-+-+-+-+-+
| | | | +-+-+-+--- RR (B) : release rate
+-+-+-+----------- SL (B) : sustain level
RR - RELEASE RATE (0..15)
De uitsterftijd van het geluid. 0 is geen uitstervende
toon.
SL - SUSTAIN LEVEL (0..15)
Voor een toon zonder percussie is dit de
geluidssterkte waarop de toon terugvalt (Decay), nadat
de maximum aanzwelsterkte (Attack) was bereikt. Deze
geluidssterkte wordt dan aangehouden zolang de toets
ingedrukt blijft.
Voor een toon met percussie is dit de geluidssterkte
waarop de terugval overgaat in uitsterven (Release).
De verzwakking bedraagt 3 dB per stapje. Voor SL=15
echter is het Sustain Level altijd -93 dB en is dus
onhoorbaar.
- Register 9: bit 7 6 5 4 3 2 1 0
+-+-+-+-+-+-+-+-+
|0|0|0|0|0|0|0|0|
+-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+--- FN MOD 256 (8 lage bits): frequentie
- Register 10: bit 7 6 5 4 3 2 1 0
+-+-+-+-+-+-+-+-+
|0|0|0|0|0|0|0|0|
+-+-+-+-+-+-+-+-+
| | | | +-+--- FN \ 256 (2 hoogste bits) : frequentie
| +-+-+------- BL : block
+------------- KON : keyon
FN - F-NUMBER (0..1023)
Dit is de fijnafstelling van de stamoscillator. De
waarde is verdeeld over 2 registers.
STAMFREQUENTIE = FN*(2^BL)/21.09
Tabel 1. Toonladder in octaaf 4
------+----------+------+---------
Toon | Freq(Hz) | FN | BL
------+----------+------+---------
C | 261,6 | 345 | 4
C# | 277,2 | 365 | 4
D | 293,7 | 387 | 4
D# | 311,1 | 410 | 4
E | 329,6 | 434 | 4
F | 349,2 | 460 | 4
F# | 370,0 | 488 | 4
G | 392,0 | 517 | 4
G# | 415,3 | 547 | 4
A | 440,0 | 580 | 4
A# | 466.2 | 615 | 4
B | 493,9 | 651 | 4
BL - BLOCK (0..7)
Dit is de octaaf.
KON - KEYON (0..1)
Toets-schakelaar voor het betreffende geluidskanaal.
0=uit, 1=aan. OO belangrijk: Om de klankkleur via
registers 1 t/m 8 te veranderen moet KEYON uit staan!
- Register 11: bit 7 6 5 4 3 2 1 0
+-+-+-+-+-+-+-+-+
|0|0|0|0|0|0|0|0|
+-+-+-+-+-+-+-+-+
| | | +--- CN : connect
+-+-+----- FB : feedback
CN - CONNECT (0..1)
keuze tussen FM (=0) en AM (=1). In FM-mode is
generator A de modulator, en levert generator B het
gemoduleerde geluid.
Figuur 2. Amplitudemodulatie (CONNECT=1)
+----------------------------------------------------------
| O
| +---<- feedback --<--+ O
| | +-------------+ | O
| +---------+ +-->+ generator A +--+ O
| | stam- | | +-------------+ +++ +-------+ O
| | oscil- +-->+ |++-->+---'---+---> O
| | lator | | +-------------+ +++ +-------+ O
| +---------+ +-->+ generator B +--+ keyon O
| +-------------+ O
| O
+---------------------------------------------------------O
Figuur 3. Frequentiemodulatie (CONNECT=0)
+----------------------------------------------------------
| O
| +---<- feedback --<--+ O
| | +-------------+ | O
| +---------+ +-->+ generator A +--+ O
| | stam- | | +-------------+ | +-------+ O
| | oscil- +-->+ +------<--+ +->+---'---+---> O
| | lator | | +------+------+ | +-------+ O
| +---------+ +-->+ generator B +----+ keyon O
| +-------------+ O
| O
+---------------------------------------------------------O
FB - FEEDBACK (0..7)
Hiermee kan de golfvorm van generator A ingesteld
worden. Voor FB=0 is de golfvorm een zuivere sinus,
voor de waarden 1 tot 5 wordt het een steeds scherpere
zaagtand en bij 6 en 7 zit er ruis door.
- instellen van de muziekregisters
Nadat voor alle 27 functies de geschikte instelwaarden zijn bepaald, moet
daaruit de inhoud van de 11 registers worden bepaald. Dat gaat als volgt:
R( 1) = MUL(A) + 16*KSR(A) + 32*TYP(A) + 128*AM(A)
R( 2) = MUL(B) + 16*KSR(B) + 32*TYP(B) + 128*AM(B)
R( 3) = TL(A) + 64*KSL(A)
R( 4) = TL(B) + 64*KSL(B)
R( 5) = DR(A) + 16*AR(A)
R( 6) = DR(B) + 16*AR(B)
R( 7) = RR(A) + 16*SL(A)
R( 8) = RR(B) + 16*SL(B)
R( 9) = FN MOD 256
R(10) = FN\256 + 4*BL + 32*KON
R(11) = CN + 2*FB
OUT &HC0,<registeradres>
OUT &HC1,<registerinhoud>
Tabel 4. Adresssen (HEX) van de muziekregisters
--------+-----------------------------------------
register| K1 K2 K3 K4 K5 K6 K7 K8 K9
--------+-----------------------------------------
R(1) | 20 21 22 28 29 2A 30 31 32
R(2) | 23 24 25 2B 2C 2D 33 34 35
R(3) | 40 41 42 48 49 4A 50 51 52
R(4) | 43 44 45 4B 4C 4D 53 54 55
R(5) | 60 61 62 68 69 6A 70 71 72
R(6) | 63 64 65 6B 6C 6D 73 74 75
R(7) | 80 81 82 88 89 8A 90 91 92
R(8) | 83 84 85 8B 8C 8D 93 94 95
R(9) | A0 A1 A2 A3 A4 A5 A6 A7 A8
R(10) | B0 B1 B2 B3 B4 B5 B6 B7 B8
R(11) | C0 C1 C2 C3 C4 C5 C6 C7 C8
--------+-----------------------------------------
We horen pas geluid als de schakelaar achter de soundprocessor gesloten is.
Dit gaat als volgt:
OUT &HC0,&H18: OUT &HC1,8
OUT &HC0,&H19: OUT &HC1,8
Het algemene register
---------------------
adres : &HBD
inhoud: bit 7 - regelt de diepte van de amplitudemodulatie (AM) en wel voor
alle 9 kanalen tegelijk. Als bit7=0 dan is de diepte 1 dB,
met bit7=1 is de diepte 4,8 dB.
bit 6 - regelt de diepte van de vibrato (VIB) voor alle kanalen
tegelijk. 0=modulatiediepte van 7 cent, 1=modulatiediepte van
14 cent.
bit 5 - 1 activeert de begeleidingsgeluiden (drums) op de kanalen
7,8 en 9. KEYON moet hiervoor op OFF staan. 0 schakelt ze
uit.
bit 4 - Bass drum. Beide generatoren van kanaal 7 worden benut.
bit 3 - Snare drum. gebruikt generator B van kanaal 8.
bit 2 - Tom-Tom. gebruikt generator A van kanaal 9.
bit 1 - Top Cymbal. gebruikt generator B van kanaal 9.
bit 0 - High Hat. gebruikt generator A van kanaal 8.
|