¢ 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) tn - 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 tny 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+ ovlivuje 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 tn+ existuj)c)ch pro zvolen` n*stroj. Zelen% se zobrazuj) nejkvalitn%j&) tny, mod@e ty o tro&i'ku hor&), a 'erven[ tny jsou sp)&e mizern[ ╱vpravo pon%kud rozlad%n[, vlevo bru'iv[$. Tenk* '*ra odpov)d* tn+m, kter[ pro dan` n*stroj neexistuj).¢ T%sn% pod touto 'arou je dal&) podlouhl[ pol)'ko - (lut[ - kter[ zn*zoruje 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" tn+.¢¢ 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[ tny ╱kter[ rovnou tak[ sly&)me$; chceme-li tn 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[ tny 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) tn n*m v(dy ukazuje v%t&) (lut* te'ka nad 'arou$. Zelen[ te'ky jsou vhodn[ pro dlouh[ a d+le(it[ tny, zat)mco modr[ slou() jen jako p@echodov[. Na za'*tku ka(d[ho taktu program zahraje tn 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 kdu$, 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.¢¢¢