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. |