F u n M u s i c

Autor: BEWESOFT

ÚVOD

FunMusic je program, který umožňuje snadno hrát jednoduchou hudbu na počítačích ATARI XL/XE. Ovládá se pomocí joysticku nebo myši od ATARI ST (vřele doporučuji). FunMusic nevyžaduje prakticky žádné znalosti hudební teorie (jen trochu citu). Postačí trocha trpělivosti a tento návod.

Hudbu lze také kompilovat pro použití ve vlastních programech. Tady ale musím upozornit, že FunMusic NENÍ opravdový hudební editor. Kdo umí komponovat dobré melodie např. v MUSIC PROTRACKERu 2.4 nebo CHAOS MUSIC COMPOSERu, měl by se toho držet - dosáhne mnohem lepších výsledků. Komu to ale s "opravdovými" hudebními editory nejde, tomu FunMusic nabízí jednoduchou možnost, jak snadno vytvořit alespoň průměrné hudební dílko.

FunMusic je Freeware - program je možné libovolně kopírovat, předávat dalším osobám (doporučuji) atd., ovšem pouze v původní podobě (beze změn).

Poznámka: Hudebníci možná najdou jak v programu, tak i v návodu nějaké nedostatky. Moje znalosti z hudební teorie jsou dost slabé, takže musel mnohde posloužit experiment - opravdu nevím, jak se některé z těch věcí správně nazývají. Program FunMusic NEBYL vytvořen pro pokročilé hudebníky.

ROZDĚLENÍ OBRAZOVKY

Nejdříve se podíváme na základní obrazovku. Jak vidíme, je rozdělena na několik oken. Vidíme také kurzor (malá blikající šipka) - veškeré funkce se provádějí po nastavení tohoto kurzoru na příslušný symbol stiskem tlačítka na ovladači (tzv. kliknutí).

Nahoře vidíme velké šedé okno, které ovládá základní linii skladby. Pod ním jsou další čtyři okna, která odpovídají čtyřem zvukovým kanálům počítače. Tady budeme vybírat nástroje, zapisovat doprovodné melodie, nebo hrát.

Na levém okraji obrazovky jsou základní parametry, které mají vliv na mnohé věci ve všech oknech.

ZÁKLADNÍ PARAMETRY

Najdeme je na levém okraji obrazovky v podobě několika menších políček. První z nich (shora) určuje počet zvukových kanálů, které budeme používat. Zvolíme-li číslo menší než čtyři, některá z oken zvukových kanálů zmizí. Počet hlasů je pak samozřejmě menší, rozšíří se ovšem nabídka nástrojů.

Na druhém místě shora je základní tón - ten ať si každý nastaví dle libosti... Někdy může jeho změna pomoci k lepšímu využití rozsahu zvolených nástrojů.

Třetím parametrem je tempo (9 je nejrychlejší). Při nahrávání hudby ke kompilaci doporučuji nejprve zvolit nižší tempo (abychom se s jednotlivými tóny snadněji strefili do rytmu), a teprve před kompilací pak nastavit definitivní rychlost.

Další políčko obsahuje obrázek diskety. Pokud na ni klikneme, základní obrazovka zmizí a rozběhne se kompilace (viz. dále).

Poslední (a největší) pole v levém sloupci ukazuje nastavení ovladačů. Vidíme zde dva joysticky (případně myši), a mezi nimi symbol I/O konektoru.

Do každého ze vstupů lze připojit buď joystick, nebo myš od ATARI ST. Druhý ovladač se používá jen v režimu hraní, pokud je pro některé z oken zvolen.

Program je po svém spuštění nastaven na dva joysticky. Má-li být použita myš, stačí ji prostě připojit do příslušného vstupu, a trochu s ní pohnout - měla by se v konfiguraci objevit automaticky. Pokud ale budeme ovladače měnit, musíme se o správné nastavení postarat sami. Změnu konfigurace provedeme jednoduše kliknutím na příslušné políčko, a nebo - když nám špatné nastavení brání v manipulaci s kurzorem - stisknutím klávesy "1" nebo "2" na klávesnici.

FunMusic se dá ovládat také pomocí klávesnice, to je ale velice nepohodlné - tato možnost se hodí prakticky jen na orientační vyzkoušení, pokud zrovna není po ruce žádný ovladač. Nejdříve odpojíme z prvního konektoru cokoliv, co by tam snad bylo připojeno, a pak tento vstup nastavíme na joystick. Kurzor pak lze ovládat klávesami se šipkami (nebo "F..." z 1200XL), kliknutí se provádí RETURNem.

OKNA ZVUKOVÝCH KANÁLŮ

Každý zvukový kanál může být použit buď pro doprovodný hlas, nebo pro přímo hranou melodii. Tento výběr umožňuje malé políčko na levém konci každého z oken. Pro doprovodný hlas se tam objeví integrovaný obvod, zatímco pro melodii uvidíme malý obličej s číslem ovladače. Nastavení je nezávislé pro každý kanál.

Druhé políčko zleva slouží k výběru nástroje. V jeho horní části vidíme malou sinusovku, vedle číslo a nad ním někdy ještě písmeno. Číslo označuje zvolenou barvu zvuku (poly-čítač), písmeno pak vyjadřuje režim zvukového generátoru (bez písmena = 8-bitový čítač, "H" = 8-bitový čítač s hodinami 1.79MHz, "D" = 16-bitový čítač).

Výběr provádíme jednoduše opakovaným kliknutím, dokud se neozve požadovaný zvuk. Je dobré vědět, že nabídku nástrojů ovlivňuje také nastavení ostatních kanálů - současně lze zvolit jen dva nástroje s "H" nebo "D", a každé "D" vyžaduje vypnutí jednoho dalšího kanálu. (Takže při 4 kanálech se "D" nedá použít vůbec, při 3 kanálech můžeme zvolit jedno "D", a při 1 nebo 2 kanálech je nabídka kompletní.)

O kousek níže najdeme ukazatel hlasitosti, který nám umožní zvolit hlasitost příslušného kanálu (ve čtyřech stupních).

V dolní části políčka se pak skrývá ještě jedna volba - druh nástroje ("zvon" s úderem, nebo "trumpeta" s plynulým začátkem), a délka dozvuku (větší symbol = delší dozvuk).

Na horním okraji největší části okna se nachází vodorovná čára s barevnými políčky. Ukazuje nám rozsah tónů existujících pro zvolený nástroj. Zeleně se zobrazují nejkvalitnější tóny, modře ty o trošičku horší, a červené tóny jsou spíše mizerné (vpravo poněkud rozladěné, vlevo bručivé). Tenká čára odpovídá tónům, které pro daný nástroj neexistují.

Těsně pod touto čarou je další podlouhlé políčko - žluté - které znázorňuje rozsah zvolený pro hraní. Kliknutím ho můžeme posouvat, a tak zvolit jak vysoko mají jednotlivé kanály hrát. Zvolený rozsah může mírně přesahovat i na tenkou čáru, omezuje to však rozsah pro hraní (je lepší se tomu vyhnout). Pro melodii se hodí zelené oblasti, doprovodné hlasy se většinou spokojí i s modrými (pro nástroj s nižší hlasitostí a kratším zvukem); červenou použijeme jen v nouzi (pokud nejsme moc citliví na přesné ladění).

Tento ukazatel nám jasně ukáže, k čemu slouží ta "záhadná" písmenka "H" a "D" - "H" posunuje rozsah nástroje nahoru, a "D" dává velké množství kvalitních "zelených" tónů.

Pod ukazatelem rozsahu - v hlavní části okna - se mohou objevit dvě různé věci. Slouží-li kanál pro doprovodný hlas, objeví se definice doprovodné melodie. Kliknutím můžeme zapisovat nové tóny (které rovnou také slyšíme); chceme-li tón zrušit, klikneme na něj znovu.

Kanál pro melodii nám ukáže dvojitou vodorovnou čáru se zelenými a modrými tečkami. Pokud sem klikneme, přejdeme do režimu hraní. Na zmíněné čáře (ev. čárách, je-li přímo hraných hlasů více) se objeví kurzor (kurzory), kterým lze pohybovat pouze vodorovně. Doprovodné hlasy začnou hrát, přičemž právě hrané tóny jsou zvýrazněny. Také horní okno (základní linie) oživne - o tom později.

Kliknutím na jednotlivé tečky teď můžeme hrát svou melodii (předchozí tón nám vždy ukazuje větší žlutá tečka nad čarou). Zelené tečky jsou vhodné pro dlouhé a důležité tóny, zatímco modré slouží jen jako přechodové. Na začátku každého taktu program zahraje tón i v případě, že ke kliknutí nedošlo. Pokud je přímo hraných melodií více, některé tečky čas od času mizí, aby tak zabránily kolizím mezi melodiemi.

Režim hraní opustíme buď kliknutím daleko na levé straně (kdesi v prostoru základních parametrů), nebo stisknutím klávesy ESC.

OKNO ZÁKLADNÍ LINIE

Šedé okno základní linie se trochu podobá oknům zvukových kanálů. Ovládá změny doprovodných akordů - kdo neví, co mám na mysli, ať si to vyzkouší... Také tohle okno se dá v malém políčku na levém konci přepnout buď na některý z ovladačů, nebo do automatického režimu.

V automatickém režimu zapisujeme linii stejným způsobem, jako jsme jinde sestavovali doprovodné melodie - kliknutím umístíme značku, druhým ji zrušíme. (Po jejím umístění budou chvilku hrát doprovodné hlasy, abychom slyšeli výsledek provedené volby. Potrvá to do dalšího kliknutí, nebo do konce taktu.)

Pokud je okno přepnuté na některý z ovladačů, kliknutím přejdeme do režimu hraní (stejně tak i při kliknutí na druhé políčko zleva (prostor pro Šipku) - tak přecházíme do režimu hraní, jestliže máme všechny kanály přepnuté na doprovodné hlasy).

Je-li okno základní linie v ručním režimu, na začátku hraní se vyprázdní. Změny doprovodu provádíme pohybem ovladače nahoru a dolů. Při tom se ve druhém políčku zleva objeví Šipka (potvrzující povel); na začátku dalšího taktu se podle toho pozmění doprovod a Šipka zmizí. Doprovodná linie se zaznamenává do horního okna, kde ji lze později použít (i upravovat) v automatickém režimu.

KOMPILACE

Všechno, co zazní v režimu hraní, se automaticky ukládá do paměti počítače. (Kapacita tohoto záznamu je 64 taktů - to je dvakrát celé okno základní linie - později se již hudba neukládá.) Pokud se nám líbí melodie, kterou jsme právě dohráli, můžeme ji zkompilovat pro použití ve vlastních programech. Kompilují se vždy pouze celé bloky po čtyřech taktech (svislé čáry v horním okně).

Před kompilací můžeme případně ještě upravit tempo. To je v tuto chvíli jediné, co se dá změnit - jiné změny nemají na záznam buď žádný vliv, nebo ho zcela zruší (změny týkající se nástrojů, rozsahů a režimu zvukových kanálů).

Kompilaci zahájíme kliknutím na symbol diskety na levé straně. Místo různobarevné základní obrazovky se nám objeví normální modrá textová stránka a rozběhne se kompilátor.

Tady je třeba zadat (z klávesnice) adresu v paměti, na které hudební modul poběží v našem programu (viz. též dále), a název souboru. (Opravy provádíme klávesou DELETE.) Melodie se uloží do určeného souboru jako hotový programový modul, a pak se vrátí základní obrazovka FunMusic.

Během editace adresy a názvu souboru počítač přehrává zaznamenanou hudbu - přesně tak, jak bude nakonec znít v našem programu. Pokud nejsme spokojeni, můžeme se vrátit k základní obrazovce klávesou ESC.

V kompilátoru máme k dispozici ještě dvě speciální kombinace: CONTROL+X vrací všechny parametry do základního stavu (jako by byl celý program spuštěn znovu), a CONTROL+Q slouží k opuštění programu (návrat do DOSu). Obě funkce mají ještě bezpečnostní dotaz.

HUDBA V BASICu

Při použití hudby v Basicových programech obvykle dáváme hudební modul do horní části paměti. V kompilátoru proto zkusíme zadat adresu $9000 (pro TurboBasic $B000), zatím však nemačkáme RETURN, ale zkontrolujeme koncovou adresu vedle. Pokud je nižší než $A000 (pro TurboBasic $C000), můžeme být spokojeni. V opačném případě vyzkoušíme adresu $8000 ($A000), nebo dokonce $7000 ($9000). Když koncová adresa vyhovuje, zapíšeme si použitou počáteční adresu, a můžeme pokračovat zadáním názvu atd. (Pokud chceme Basicový program po stisknutí RESETu znovu spouštět bez opakovaného načítání hudebního modulu z diskety, musí být koncová adresa nižší než $9C20 (pro TurboBasic $BC20).)

V Basicovém programu musíme nejdříve vyhradit potřebnou část paměti pro hudební modul (což je třeba opakovat vždy po stisknutí RESETu). Například takto:

POKE 106,x : GRAPHICS y

Grafický režim může být kterýkoliv, hodnota "x" ovšem závisí na adrese hudebního modulu:

      $7000 -> 112    $8000 -> 128
      $9000 -> 144    $A000 -> 160
      $B000 -> 176

(Vždy se musí jednat o násobek šestnácti, jinak se budou některé grafické režimy zobrazovat chybně.)

Dalším krokem je zavedení hudebního modulu do paměti, což lze provést několika způsoby. V TurboBasicu by měl být použit příkaz:

BLOAD "D:název"

V normálním AtariBasicu takový příkaz bohužel není. Pokud používáme BW-DOS nebo SpartaDOS, můžeme psát:

CLOSE #1:XIO 40,#1,4,128,"D:název"   

Většinou to funguje i pro MYDOS, formálně správný zápis je však pod MYDOSem trochu odlišný;

CLOSE #1:XIO 39,#1,7,0,"D:název"

Další možností je čistě Basicové řešení. Je sice dlouhé a pomalé, funguje však s každým DOSem a pod oběma verzemi Basicu:

10 OPEN #1,4,0,"D:název":GET #1,A:GET #1,B:IF A<255 OR B<255 THEN ? "CHYBA":END
20 GET #1,A:GET #1,B:PLAY=A+256*B:GET #1,A:GET #1,B:C=A+256*B
30 FOR A=PLAY TO C:GET #1,B:POKE A,B:NEXT A:CLOSE #1

Existují samozřejmě i jiné možnosti (rychlé a univerzální, s použitím podprogramů ve strojovém kódu), to už ale jde nad rámec tohoto návodu.

Když máme hudební modul zavedený v paměti, můžeme používat následující příkazy:

A=USR(adresa,1) ... Spuštění hudby
A=USR(adresa,0) ... Zastavení hudby

Použitá "adresa" bude samozřejmě stejná, jako při kompilaci. V TurboBasicu můžeme zapsat rovnou např. "$A000" (jako v kompilátoru), pro AtariBasic však musíme adresu převést do desítkové soustavy:

  $7000 = 28672    $8000 = 32768
  $9000 = 36864    $A000 = 40960
  $B000 = 45056

Poznámka: Opakované spuštění hudby (t.j. od začátku) bez předchozího zastavení je přípustné, podobně ani opakované zastavení není chybou. Jestliže chybí parametr, hudba se zastaví, případné parametry navíc se ignorují.

Pro pokročilejší programátory: Hudební modul používá přerušení VBI - vektor VVBLKD ($224,5) - které samozřejmě nesmí být uživatelským programem zakázané. Spolupráce s jinými rutinami, které používají zmíněný vektor, je možná, pokud jsou instalovány před spuštěním hudby, a adresa se nemění až do jejího zastavení. Jestliže má být nějaká VBI-rutina instalována při běžící hudbě, musí na svém konci zajistit skok na původní adresu (hudba). V tomto případě se při zastavení hudby přehrávací rutina z VBI neodstraní - hudební modul pak nelze ničím přepsat!

HUDBA V ASSEMBLERU

Hudební modul je uložen jako normální binární segmentovaný soubor. Na začátku nejdeme několik důležitých adres:

PLAYER+0 ... Rutina pro BASIC
PLAYER+3 ... Inicializace
PLAYER+6 ... Rutina VBI
PLAYER+9 ...  Hlasitost (4 byte)

Nejdříve zavoláme inicializaci (JSR PLAYER+3), přičemž parametr (1=Start 0=Stop) uložíme do registru A. Rutinu VBI je třeba volat (JSR PLAYER+6) vcelku libovolným způsobem 50x za vteřinu. Na adrese PLAYER+9 najdeme vždy momentální hlasitost všech čtyř kanálů (neměnit!), což se může hodit pro nějaké grafické vyjádření.

Jinou možností je volat modul stejně, jako z Basicu:

MUSICON  LDA  #1  ;Parametr
         PHA
         LDA  #0  ;(Horní byte)
         PHA
         LDA  #1  ;Počet parametrů
         PHA
         JMP  PLAYER

V tomto případě přehrávač nainstaluje svoji vlastní rutinu do přerušení VBI.