====== 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. Základní ovládání je jednoduché. Hudbu inicializujeme vložením adresy naší skladby do registru DE, a zavoláním příkazu **mus.load_play**. Přehrávanou hudbu zastavíme zavoláním **mus.stop**. Důležité je, aby při každém přerušení (50x za sekundu) byla zavolána rutina **mus.patterns**, která se stará o přehrávání hudby, a rutina **mus.int**, která má na starosti přehrávání vzorků na čipech. Volány musí být i v případě, že se zrovna hudba nepřehrává. Je to zvukový engine, který musí být stále aktivní. Zvukový engine (verze 3.4) potřebuje většinu registrů procesoru. Jsou to HL, DE, BC, AF, HL', DE', BC', IX. ^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.| Ukázkový základní kód pro přehrávání hudby na SAA: ; LnxSpectrum ASM editor (www.ilnx.cz) 17.5.2019 org 32768 ; Inicializace hudby ld de,Music1 call mus.load_play ; Simulace přerušení, rutinu zavoláme 50x za sekundu ei interrupt call mus.Patterns ;Music control call mus.int_SAA ;Sound engine halt jr interrupt ; Tady připojíme přehrávací rutinu pro LnxTracker include "LnxTrackerEngine.slb" ; Tady připojíme naší hudbu vyexportovanou z LnxTrackeru Music1 include "shadow of the beast 3.bin"