Uživatelské nástroje

Nástroje pro tento web


lnxspectrum:lnxtrackerengine

Toto je starší verze dokumentu!


Přehrávač LnxTracker pro Z80

Jako další můj projekt je LnxTrackem hudební editor, ve kterém se dá vytvářet hudba a zvukové efekty pro zvukové čipy AY (např. ZX Spectrum 128) a SAA (např. SamCoupé). LnxTracker podporuje také hudební interface SAAY! (1x AY + 1x SAA), TurboSound B/C (2x AY) a TurboSound Easy (2x AY + 1x SAA). Dá se v něm tedy vytvářet hudba hrající ve 3 až 12 kanálů současně. Aby mohla být hudba přehrávána na reálném stroji, potřebuje právě tuto hudební rutinu LnxTrackerEngine (dále jen LTEN).

LTEN se skládá ze tří hlavních částí. První zpracovává posloupnost hudby, Patterny a určuje ve kterém kanálu se bude přehrávat jaký sampl a s jakými parametry. Kanály jsou pevně rozdělené tak, že kanál 0-2 je první AY čip, 3-5 je druhý AY čip (TurboSound) a kanály 6-11 jsou SAA. Druhá část se stará o přehrávání samplů na čipech AY a třetí poslední část se stará o přehrávání samplů na čipu SAA-1099.

LTEN se ovládá pomocí nadefinovaných návěstí, začínající vždy „mus.“. Návěstí mají tyto základní funkce:

Návěstí Funkce
mus.load_play Inicializuje spuštění hudby
mus.stop Zastaví právě přehrávanou hudbu a stiší všechny kanály
mus.Patterns Volá se při přerušení. Zpracuje přehrávanou hudbu
mus.int_AY Volá se při přerušení. Přehrává samply na čipu AY
mus.int_TS Volá se při přerušení. Přehrává samply na dvou čipech AY (TurboSound)
mus.int_SAA Volá se při přerušení. Přehrává samply na čipu SAA
mus.int_All Volá se při přerušení. Přehrává samply na dvou čipech AY a jednom SAA

Dále mají rozšířené funkce:

mus.GetChan Vrací adresu objektu pro konkrétní kanál
mus.module_smp Zde se ukládá adresa dat všech Samplů použitých v hudbě
mus.module_effects Zde se ukládá adresa dat všech Samplů použitých jako zvukové efekty
mus.PlaySmpSpustí v určeném kanále určený Sampl
mus.PlayEffectSpustí v určeném kanále určený zvukový efekt

Jak ovládat rutinu

Jako první je potřeba zajistit pravidelné volání rutin při přerušení. Volat při přerušení by se měla neustále, i když nic nepřehrává. V závislosti na tom jaké rutiny se budou volat, rozhodne se kompiler které části kodu z přehrávací rutiny vloží. Takže pokud se bude volat jen část pro AY, nepřikompilují se rutiny pro SAA.

		org	50000		; od adresy 50000
	
;volaná rutina při přerušení pro konfiguraci SAAY! (1x AY + 1x SAA)
INT		push_all		; Makro - push všech registru
					; (AF, BC, DE, HL, AF', BC', DE', HL', IX, IY) 
		call	mus.Patterns	; Spracování Hudby / Patternů
		call	mus.int_AY	; Přehrávání zvuků na AY
		call	mus.int_SAA	; Přehrávání zvuků na SAA
		pop_all			; Makro - pop všech registrů
		ret
 

Při přerušení se dají volat tyto rutiny:

Návěstí Funkce
mus.Patterns Spracování Hudby / Patternů - musí se volat jako první
mus.int_AYZpracování samplu pro AY
mus.int_SAAZpracování samplu pro SAA
mus.int_TSSpracování samplu pro TurboSound
mus.int_AllSpracování samplu pro TurboSound a SAA

Příklady: Vždy nejprve zavoláme mus.Patterns která spracuje hudbu. Pokud budeme hudbu chtít přehrávat na AY a SAA současně (SAAY!), musí se zavolat mus.int_AY a poté mus.int_SAA. Pokud budeme chtít používat TurboSound, musíme volat mus.int_TS, ten obslouží obě AY. Pokud budeme chtít používat jen SAA, stačí volat mus.int_SAA.

Když máme zajištěné pravidelné volání při přerušení, můžeme spustit hudbu. Do registru DE dáme adresu exportovaných dat z LnxTrackeru a zavoláme mus.LoadPlay. Tato funkce také inicializuje SAA1099, který inicializaci vyžaduje. Hudba by měla začít hrát. Pokud jí chceme ukončit, zavoláme mus.Stop.

lnxspectrum/lnxtrackerengine.1512741231.txt.gz · Poslední úprava: 2018/07/31 10:04 (upraveno mimo DokuWiki)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki