Uživatelské nástroje

Nástroje pro tento web


lnxspectrum:lnxtrackerengine

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 je v Beta verzi. Ovládání se může měnit.

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.txt · Poslední úprava: 2018/07/31 10:05 (upraveno mimo DokuWiki)