Inicializace To, co bude teď následovat, je pouze pro ty, kteří mají silné nervy. Inicializace EMU je totiž pěkně zdlouhavá záležitost. Inicializace se skládá ze dvou částí. První část je vynulování všech registrů a druhá část je zapsání inicializačních polí do EMU. Pokud jste tedy psychycky připraveni, tak jdeme na to. Procedure InitAWE; for o:=0 to 31 do out(DCYSUSV[o],80h); {vypne generátor obálek u všech oscilátorů} for o:=0 to 31 do out(ENVVOL[o],0); for o:=0 to 31 do out(ENVVAL[o],0); for o:=0 to 31 do out(DCYSUS[o],0); for o:=0 to 31 do out(ATKHLDV[o],0); for o:=0 to 31 do out(LFO1VAL[o],0); for o:=0 to 31 do out(ATKHLD[o],0); for o:=0 to 31 do out(LFO2VAL[o],0); for o:=0 to 31 do out(IP[o],0); for o:=0 to 31 do out(IFATN[o],0); for o:=0 to 31 do out(PEFE[o],0); for o:=0 to 31 do out(FMMOD[o],0); for o:=0 to 31 do out(TREMFRQ[o],0); for o:=0 to 31 do out(FM2FRQ[o],0); for o:=0 to 31 do out(PTRX[o],0); for o:=0 to 31 do out(VTFT[o],0); for o:=0 to 31 do out(PSST[o],0); for o:=0 to 31 do out(CSL[o],0); for o:=0 to 31 do out(CCCA[o],0); {vynuluje registry ENVVOL, ENVVAL, DCYSUS, ATKHLDV, LFO1VAL, ATKHLD, LFO2VAL, IP, IFATN, PEFE, FMMOD, TREMFRQ, FM2FRQ, PTRX, VTFT, PSST, CSL a CCCA u všech oscilátorů} for o:=0 to 31 do out(CPF[o],0); for o:=0 to 31 do out(CVCF[o],0); {vynuluje registry CPF a CVCF u všech oscilátorů} Uf. První část máme za sebou. Vypadá to jednoduše, co ? Nyní bude následovat největší kotrmelec celé inicializace, a tím je zápis inicializačních polí. Inicializační pole určují také vlastnosti efektového procesoru, ale o tom se víc dozvíte v kapitole, kterou jsem této tématice věnoval. Inicializační pole, které zde budou uvedeny,nastaví eqalizér EMU na plochou křivku (Bass & Treble = 0) a nastaví implicitně chorus efekt na Chorus 3 a reverb na Hall 2. Inicializační pole jsou původně 4, ale pokud se na ně podíváte, tak se dají redukovat na 3 a při posílání druhého pole použijete pole první a ke keždé druhé hodnotě přičtete před zápisem na port 8000h. Inicializační pole si můžete exportovat v assemblerovském formátu, takže přepis do vyšších jazyků by neměl být problém. Nebudu je uvádět ani do tohoto textu, protože by to byla jen halda čísel a zbytečně by vás to odrazovalo. :) for o:=0 to 31 do out(INIT1[o],InitArray1[o]); {první část inicializačního pole č.1 na INIT1} for o:=0 to 31 do out(INIT2[o],InitArray1[o+32]); {druhá část inicializačního pole č.1 na INIT2} for o:=0 to 31 do out(INIT3[o],InitArray1[o+64]); {třetí část inicializačního pole č.1 na INIT3} for o:=0 to 31 do out(INIT4[o],InitArray1[o+96]); {čtvrtá část inicializačního pole č.1 na INIT4} x:=in(WC)+1024; repeat in(WC)<>x; {čekáme 1024 period (24 msec)} for o:=0 to 31 do out(INIT1[o], InitArray1[o] or ((o and 1) shl 15)); {první část inicializačního pole č.1 na INIT1 každá druhá hodnota OR 8000h} for o:=0 to 31 do out(INIT2[o], InitArray1[o+32] or ((o and 1) shl 15)); {druhá část...} for o:=0 to 31 do out(INIT3[o], InitArray1[o+64] or ((o and 1) shl 15)); {třetí část...} for o:=0 to 31 do out(INIT4[o], InitArray1[o+96] or ((o and 1) shl 15)); {čtvrtá část...} for o:=0 to 31 do out(INIT1[o],InitArray2[o]); {první část pole č.2 na INIT1} for o:=0 to 31 do out(INIT2[o],InitArray2[o+32]); {druhá část pole č.2 na INIT2} for o:=0 to 31 do out(INIT3[o],InitArray2[o+64]); {třetí část pole č.2 na INIT3} for o:=0 to 31 do out(INIT4[o],InitArray2[o+96]); {čtvrtá část pole č.2 na INIT4} out(HWCF4,0); out(HWCF5,83h); out(HWCF6,8000h); for o:=0 to 31 do out(INIT1[o],InitArray3[o]); {první část pole č.3 na INIT1} for o:=0 to 31 do out(INIT2[o],InitArray3[o+32]); {druhá část pole č.3 na INIT2} for o:=0 to 31 do out(INIT3[o],InitArray3[o+64]); {třetí část pole č.3 na INIT3} for o:=0 to 31 do out(INIT4[o],InitArray3[o+96]); {čtvrtá část pole č.3 na INIT4} out(HWCF3,4); {zapne audio výstup} Procedure_End; Tak, a inicializace je za námi. Pokud byste chtěli již při inicializaci měnit nastavení eqalizéru a efektů, tak byste si museli najít příslušné hodnoty ve třetím inicializačním poli a opravit je v tabulce. výheň