Uživatelské nástroje

Nástroje pro tento web


lnxspectrum:lnxtracker

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"
lnxspectrum/lnxtracker.txt · Poslední úprava: 2019/05/17 16:52 autor: lanex

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki