Toto je starší verze dokumentu!
LnxTracker - hudba
Někdy chceme, aby náš projekt v ZX Spectru obsahoval hudbu. Možností máme několik. Existuje spousta hudebních editorů. Na výběr máme buď pro klasický „pípák“ (např. editory WHAM48, Orfeus), nebo pro hudební čipy (např. editory MusicBox128, MusicTracker). V ZX Spectru 128 byl montován AY čip, případně je možné použít SAA které se připojovalo jako přidavné interface.
Popíšu jak použít pro vložení hudby do našeho projektu hudební editor LnxTracker. V našem projektu kanály rozdělíme tak, že na SAA bude hrát hudba, a AY se bude starat o zvukové efekty.
Export z LnxTrackeru
Assembler
Do našeho assembler projektu importujeme soubor „shadow of the beast 3.bin“ který jsme si vyexportovali z LnxTrackeru. Nic dalšího není potřeba, protože v LnxSpectrum je přehrávací rutina pro LnxTracker obsažená v knihovnách v editoru.
Tato hudební rutina má velikost kolem 2 KB, a umí ovládat 2xAY a SAA čip, a to i současně. Pokud se použije jen ta část pro AY, část SAA se nebude do projektu kompilovat, stejně tak naopak. Pokud se použije jen SAA, AY části nebudou použity.
Ovládání je jednoduché. Hudbu inicializujeme zavoláním příkazu mus.load_play, zastavíme ji zavoláním mus.stop. Důležité je, aby každém přerušení (50x za sekundu) byla zavolána obsluhujicí rutina mus.int, a to i v případě, že se zrovna hudba nepřehrává. Je to zvukový engine, který musí být stále aktivní.
mus.int máme několik druhů, podle použití:
mus.int_ay | pro přehrávání jen jedním AY čipem, standartní pro ZX Spectrum 128. |
mus.int_ts | pro přehrávání dvou AY čipů, tzv. TurboSound. |
mus.int_saa | pro přehrávání pomocí čipu SAA. |
mus.int_all | pro použití všech předchozích variant. |
; LnxSpectrum ASM editor (www.ilnx.cz) 17.5.2019 org 32768 ld de,Music1 call mus.load_play ; Sound routine called each interrupt (50x per sec). ; Interrupt simulation:
ei interrupt call mus.Patterns ;Music control call mus.int_SAA ;Sound engine halt jr interrupt include "LnxTrackerEngine.slb"
Music1 include "shadow of the beast 3.bin"