MILC logo

IndexVorigeVolgendeLeeg

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.


    

Index

Vorige

Volgende