Úvod

                 "I hate GUS only demos and trackers" (Grinus)

     K napsání tohoto  textu mne vedl vztek.  Vztek z toho, že  se všechno
     točí  jenom  kolem  GUSe  a  na  kvalitní  wavetable EMU8000 se jaksi
     zapomíná.  Doufám,  že  po  přečtení  tohoto  článku se konečně najde
     někdo, kdo nebude váhat dát do svého dílka podporu EMU8000.


                                    EMU8000

     Co to vlastně  je EMU8000 ? Je to  wavetable syntezátor který montují
     Creative na karty SB 32 a SB AWE32/64. Tento chip, jak je již z názvu
     patrné,  vyrábí   firma  EMU,  pobočka  Creative,   která  se  zabývá
     profesionální audiotechnikou. EMU8000 obsahuje:

           - 32 zvukových generátorů pracujích v CD kvalitě
           - SPDIF digitální výstup
           - integrovaný digitální efektový procesor
           - 4-bodovou interpolaci
           - 24-bitový pamětový interface umožňující adresovat 28MB DRAM
             a 1MB MGM ROM integrované na čipu. Podporovány jsou pouze
             16-bitové samply.

     Každý ze 32 generátorů obsahuje:

           - 2 LFO (low frequency oscilator)
           - 2 generátory obálek (envelope) DAHDSR
           - Cutoff filter s nastavitelným koeficientem rezonance
           - nastavitelný Reverb efekt
           - nastavitelný Chorus efekt

     Princip vytváření zvuku  je naznačen na obrázku (doufám,  že se v něm
     vyznáte. Je  totiž trochu chaotický). Červeně  jsou označeny ovládací
     signály  (jedná  se  o  registry),  zeleně  je  vyznačena cesta audio
     signálu,  tence žlutě  jsou vyznačeny  ovládací signály,  tence modře
     výstupy  z generátorů  a oscilátorů,  tlustě žlutě  a tlustě modře je
     vyznačena cesta výsledného stereofonního signálu. Trojúhelník znamená
     zesilovač  a  kružnice  se  znaménkem  "+"  je součtový člen. Všechny
     signály se samozřejmě zpracovávají v digitální podobě.


                                      I/O

     EMU8000  je obvykle  umístěn na  adrese DSP  procesoru karty  + 400h.
     Pokud ale  máte  PnP kartu,  tak  vám  nic  nebrání v tom,  abyste si
     bázovou adresu EMU umístili někam jinam (třeba o 40h výš, protože ono
     to  ani o  víc nejde).  I/O porty  jsou následující (uvažujme bázovou
     adresu 220h + 400h =  620h):

           Port  Šířka Název
           620h  32    Data0       (BASE+000h)
           A20h  32/16 Data1       (BASE+400h)
           A22h  16    Data2       (BASE+402h)
           E20h  16    Data3       (BASE+800h)
           E22h  16    Pointer     (BASE+802h)

     Pointer je rozdělen na 3 části. Nejvyšších 8 bitů není využito a jsou
     stále nastaveny na nulu. Bity 7-5  určují číslo registru (0-7) a bity
     4-0 určují oscilátor, se kterým momentálně chceme pracovat (0-31).


                                   Registry

     Následuje seznam  registů EMU8000. Názvy jsem  použil shodné s názvy,
     které  používají Creative.  Ve sloupci  Reg první  číslo reprezentuje
     číslo registru, které  se nastavuje na portu Pointer  a druhá hodnota
     uvádí číslo datového portu, na který se má hodnota vyslat. Ve sloupci
     SZ/OS je  šířka slova a  druhý parametr znamená  číslo oscilátoru, na
     kterém je registr přístupný. Není-li  uvedeno žádné číslo, je registr
     přístupný ze všech oscilátorů.

     Jméno   Reg SZ/OS  Plný Název
     CPF     0/0 32    Current Pitch and Fractional Adress
     PTRX    1/0 32    Pitch Target, Reverb Send and Aux Byte
     CVCF    2/0 32    Current Volume and Filter Cutoff
     VTFT    3/0 32    Volume and Filter Cutoff Targets
     PSST    6/0 32    Pan Send and Loop Start Adress
     CSL     7/0 32    Chorus Send and Loop End Adress
     CCCA    0/1 32    Q Factor, Control Bits and Current Adress
     HWCF4   1/1 32/9  Configuration DoubleWord 4
     HWCF5   1/1 32/10 Configuration DoubleWord 5
     HWCF6   1/1 32/13 Configuration DoubleWord 6
     HWCF7   1/1 32/14 Configuration DoubleWord 7  !! UNOFFICIAL !!
     SMALR   1/1 32/20 Sound Memory Adress - "Left" Read
     SMARR   1/1 32/21 Sound Memory Adress - "Right" Read
     SMALW   1/1 32/22 Sound Memory Adress - "Left" Write
     SMARW   1/1 32/23 Sound Memory Adress - "Rigth" Write
     SMLD    1/1 16/26 Sound Memory "Left" Data
     SMRD    1/2 16/26 Sound Memory "Right" Data
     WC      1/2 16/27 Sample Counter
     HFCF1   1/1 16/29 Configuration Word 1
     HWCF2   1/1 16/30 Configuration Word 2
     HWCF3   1/1 16/31 Configuration Word 3
     INIT1   2/1 16    Initialization Array 1
     INIT2   2/2 16    Initialization Array 2
     INIT3   3/1 16    Initialization Array 3
     INIT4   3/2 16    Initialization Array 4
     ENVVOL  4/1 16    Volume Envelope Delay
     DCYSUSV 5/1 16    Volume Envelope Sustain and Decay
     ENVVAL  6/1 16    Modulation Envelope Delay
     DCYSUS  7/1 16    Modulation Envelope Sustain and Decay
     ATKHLD  4/2 16    Volume Envelope Attack and Hold
     LFO1VAL 5/2 16    LFO #1 Delay
     ATKHLD  6/2 16    Modulation Envelope Attack and Decay
     LFO2VAL 7/2 16    LFO #2 Delay
     IP      0/3 16    Initial Pitch
     IFATN   1/3 16    Initial Filter Cutoff and Attenuation
     PEFE    2/3 16    Pitch and Filter Envelope Heights
     FMMOD   3/3 16    Vibrato and Filter Modulation from LFO #1
     TREMFRQ 4/3 16    LFO #1 Tremolo Amount and Frequency
     FM2FRQ2 5/3 16    LFO #2 Vibrato Amount and Frequency


     Teď  jsem se  tedy pokusil  v krátkosti  naznačit, jak  to na EMU8000
     funguje a teď už přistupme  k samostatným kapitolám. Ještě bych chtěl
     vysvětlit přístup k registrům. Některým  je už možná jasný, ale radši
     ho sem uvedu.

           1) Zapíšete číslo registru a oscilátoru na Pointer port

                 OUT(BASE+802h,(REG SHL 5)+OSC)

           2) Zapíšte hodnotu registru na jeho datový port

                 OUT(BASE+DtaP,Val)

             DtaP je přírustek daného datového portu k bázi.

     Pokud  tedy chcete  zapsat do  registru VTFT  oscilátoru 6 při bázové
     adrese 620h, tak provedete následující instrukce:

                 OUT(0E22h,96+6)
                 OUT(0620h,Value)


                                    Detekce 

                                 Inicializace 

                              Paměťový interface 

                         Zapnutí a vypnutí přehrávání 

                                Modulace zvuku 

                               Efektový procesor 

                   Lepší kvalita zvuku - odstranění AWE Clix 

                            Detailní popis registrů 

                                   Hardware 



     Informace,  které jsem  v tomto  dokumentu použil, nejsou jen  z mojí
     hlavy. Čerpal jsem z následujících zdrojů:

           AWE32 Developer Information Pack
                 Creative Labs

           Unofficial AWE32 Programming Guide
                 Vince Vu a.k.a. Judge Dred

           AWE Control Pack
                 Laďa Kopecký a.k.a. Grinus

     Pokud by byly nějaké dotazy, tak mi můžete poslat e-mail na adresu
     svozilj@spsuh.hiedu.cz


            výheň