Webová sazba notového zápisu - Softwarové technologie a
Transkript
Webová sazba notového zápisu - Softwarové technologie a
Na tomto míst¥ bude ociální zadání va²í práce • Toto zadání je podepsané d¥kanem a vedoucím katedry, • musíte si ho vyzvednout na studiijním odd¥lení Katedry po£íta£· na Karlov¥ nám¥stí, • v jedné odevzdané práci bude originál tohoto zadání (originál z·stává po obhajob¥ na kated°e), • ve druhé bude na stejném míst¥ neov¥°ená kopie tohoto dokumentu (tato se vám vrátí po obhajob¥). i ii eské vysoké u£ení technické v Praze Fakulta elektrotechnická Katedra po£íta£ové graky a interakce Bakalá°ská práce Webová sazba notového zápisu Daniel Mike² Vedoucí práce: Ing. Adam Sporka, Ph.D. Studijní program: Softwarové technologie a management, Bakalá°ský Obor: Web a multimedia 23. kv¥tna 2012 iv v Pod¥kování Velmi rád bych pod¥koval v²em, kte°í mi pomáhali p°i vzniku téte práce. Zejména vedoucímu mé bakalá°ská práce, Ing. Adamovi Sporkovi, Ph.D., za spolupráci a cenné rady p°i konzultacích. Dále bych rád pod¥koval své rodine za podporu b¥hem celého studia. vi vii Prohlá²ení Prohla²uji, ºe jsem práci vypracoval samostatn¥ a pouºil jsem pouze podklady uvedené v p°iloºeném seznamu. Nemám závaºný d·vod proti uºití tohoto ²kolního díla ve smyslu 60 Zákona £. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o zm¥n¥ n¥kterých zákon· (autorský zákon). V Praze dne 24. 5. 2012 ............................................................. viii Abstract This bachelor thesis deals with typesetting options of standard western music notation in electronic form. It describes dierent ways of creating and editing music notation. It also includes other ndings about music typesetting. The thesis focuses on description of an application which allows music typesetting on the web. The application enables display of music notation on web pages and its subsequent playback. The application handles input in a form of a text string, which represents specic musical composition. A part of this work deals with existing syntaxes and the creation of a syntax t for the application. The syntax has been analyzed and the application has been tested by users. Abstrakt Tato bakalá°ská práce se zabývá moºnostmi sazby standardního notového zápisu v elektronické podob¥. Popisuje zp·soby tvorby a editace notového zápisu a jiné poznatky o sazb¥ not. Práce se zam¥°uje na popsání aplikace umoº¬ující sazbu not ve webovém prost°edí. Aplikace umoº¬uje zobrazování notového zápisu na webových stránkách a jeho následné p°ehrávání. Jako vstup aplikace slouºí textový °et¥zec, který reprezentuje danou hudební skladbu. Sou£ástí práce je prozkoumání stávajících syntaxí a vytvo°ení syntaxe vhodné pro ú£ely aplikace. Syntaxe byla podrobena analýze a celková aplikace byla otestována uºivateli. ix x Obsah 1 Úvod 1 2 Popis problému, specikace cíle 2.1 2.2 2.3 Existující °e²ení sazby not . . . . . . . . 2.1.1 Noteight . . . . . . . . . . . . . 2.1.2 Legato Sheet Music Viewer . . . 2.1.3 Myriad Music Plug-in . . . . . . 2.1.4 ABC converter . . . . . . . . . . Reprezentace not v elektronické podob¥ 2.2.1 TEX . . . . . . . . . . . . . . . . 2.2.2 MusicXML . . . . . . . . . . . . 2.2.3 ABC notace . . . . . . . . . . . . 2.2.4 MIDI . . . . . . . . . . . . . . . 2.2.4.1 Struktura formátu SMF 2.2.5 Shrnutí . . . . . . . . . . . . . . Popis formálního notového zápisu . . . . 2.3.1 Notová osnova . . . . . . . . . . 2.3.2 Tempo . . . . . . . . . . . . . . . 2.3.3 Klí£ . . . . . . . . . . . . . . . . 2.3.4 P°edznamenání . . . . . . . . . . 2.3.5 Metrum . . . . . . . . . . . . . . 2.3.6 Nota . . . . . . . . . . . . . . . . 2.3.7 Pomlka . . . . . . . . . . . . . . 2.3.8 Takt . . . . . . . . . . . . . . . . 2.3.9 Repetice . . . . . . . . . . . . . . 2.3.10 Souzvuk . . . . . . . . . . . . . . 2.3.11 Trámec . . . . . . . . . . . . . . 2.3.12 Te£ka za notou £i pomlkou . . . . 2.3.13 Posuvka . . . . . . . . . . . . . . 2.3.14 Dynamika . . . . . . . . . . . . . 2.3.15 Artikulace . . . . . . . . . . . . . 2.3.15.1 Ligatura . . . . . . . . 2.3.15.2 Legato . . . . . . . . . 2.3.15.3 Staccato . . . . . . . . . 2.3.16 Ornamenty . . . . . . . . . . . . xi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 3 3 4 4 4 4 5 6 7 7 8 8 8 9 9 9 10 11 11 12 13 13 14 15 15 15 15 16 16 16 16 xii OBSAH 2.4 2.3.17 Text skladby . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Cíl práce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3 Analýza a návrh °e²ení 3.1 3.2 3.3 3.4 3.5 3.6 Analýza vyuºitelných technologií . . . . . 3.1.1 Zobrazovácí technologie . . . . . . 3.1.1.1 Adobe Flash . . . . . . . 3.1.1.2 SVG . . . . . . . . . . . . 3.1.1.3 HTML 5 canvas . . . . . 3.1.1.4 Java applet . . . . . . . . 3.1.1.5 Generovaní obrázku . . . 3.1.2 P°ehrávací technologie . . . . . . . 3.1.2.1 P°ehrávání SMF soubor· 3.1.2.2 Audio Data API . . . . . Poºadavky na pouºitou technologii . . . . 3.2.1 Výb¥r technologie . . . . . . . . . Návrh aplikace . . . . . . . . . . . . . . . 3.3.1 Rozpoznání vstupu . . . . . . . . . 3.3.2 Zobrazení . . . . . . . . . . . . . . 3.3.3 P°ehrávání . . . . . . . . . . . . . Funk£ní omezení . . . . . . . . . . . . . . Poºadavky na syntaxi . . . . . . . . . . . Shrnutí . . . . . . . . . . . . . . . . . . . 4 Realizace 4.1 4.2 4.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Implementace klientské £ásti . . . . . . . . . . . . . . . 4.1.1 Struktura datového modelu . . . . . . . . . . . 4.1.1.1 StaManager . . . . . . . . . . . . . . 4.1.1.2 Song . . . . . . . . . . . . . . . . . . . 4.1.1.3 ErrorLog . . . . . . . . . . . . . . . . 4.1.2 Vrstva Parser . . . . . . . . . . . . . . . . . . . 4.1.3 Vrstva Semantics . . . . . . . . . . . . . . . . . 4.1.4 Vrstva Timer . . . . . . . . . . . . . . . . . . . 4.1.5 Vrstva Transform . . . . . . . . . . . . . . . . . 4.1.5.1 Ur£ení pozice noty . . . . . . . . . . . 4.1.5.2 Ur£ení pozice trámce . . . . . . . . . 4.1.5.3 Ur£ení konce °ádku . . . . . . . . . . 4.1.6 Vrstva Drawer . . . . . . . . . . . . . . . . . . 4.1.6.1 Kontext vykreslovacího plátna canvas 4.1.6.2 Vykreslování entit . . . . . . . . . . . 4.1.7 P°ehrávání . . . . . . . . . . . . . . . . . . . . 4.1.7.1 Srovnání knihoven . . . . . . . . . . . Implementace serverové £ásti . . . . . . . . . . . . . . 4.2.1 Problém duplikace . . . . . . . . . . . . . . . . Struktura formátu pdSyntax . . . . . . . . . . . . . . . 4.3.1 Hlavi£ka formátu pdSyntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 19 20 20 21 21 22 22 22 22 23 23 23 24 24 24 24 25 25 26 27 27 28 28 28 29 29 30 30 30 31 31 32 32 32 33 33 34 34 34 35 35 xiii OBSAH 4.3.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Testování funkcionality . . . . . . . . . . Testování pouºitelnosti . . . . . . . . . . 5.2.1 Cílová skupina . . . . . . . . . . 5.2.2 Kritéria výb¥ru participant· . . . 5.2.3 Nastavení testu . . . . . . . . . . 5.2.4 Vybraní ú£astníci . . . . . . . . . 5.2.5 Pr·b¥h testu . . . . . . . . . . . 5.2.6 Výsledky testu . . . . . . . . . . 5.2.6.1 Pouºití znaku mezera . 5.2.6.2 Zápis délky not . . . . . 5.2.6.3 Uchování parametr· not 5.2.6.4 Nestandardní znaky . . 5.2.7 Shrnutí . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.3 4.3.4 T¥lo formátu pdSyntax . . 4.3.2.1 Hlas . . . . . . . . 4.3.2.2 Takt . . . . . . . . 4.3.2.3 Nota . . . . . . . . 4.3.2.4 Pomlka . . . . . . 4.3.2.5 Posuvka . . . . . . 4.3.2.6 Trámec . . . . . . 4.3.2.7 Funkce . . . . . . Ukázka jednoduché skladby Vlastnosti syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . 5 Testování 5.1 5.2 35 35 36 36 36 36 37 37 37 37 39 39 39 40 40 40 40 41 41 41 41 41 42 42 6 Záv¥r 43 A Seznam pouºitých zkratek 47 B esko anglický slovník uºitých hudebních pojm· 49 C Seznamy a tabulky 51 D Testování 53 6.1 6.2 6.3 Spln¥ní cíl· . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Nedostatky aplikace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Budoucí vylep²ení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 C.1 Hudební nauka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 C.1.1 Seznam artikula£ních zna£ek . . . . . . . . . . . . . . . . . . . . . . . 51 C.1.2 Seznam ornament· . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 D.1 Seznam úkol· D.1.1 Úkol £. D.1.2 Úkol £. D.1.3 Úkol £. E UML diagramy . . 1. 2. 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 53 54 54 55 xiv OBSAH F Sazba sloºit¥j²ích konstrukcí 57 F.1 Zápis v jazyce pdSyntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 F.2 Vytvo°ený notový zápis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 G Instala£ní a uºivatelská p°íru£ka G.1 Uºivatelská p°íru£ka . . . . . G.2 Instala£ní p°íru£ka . . . . . . G.2.1 Serverová £ást aplikace G.2.2 Klientská £ást aplikace H Obsah p°iloºeného CD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 59 59 59 59 63 Seznam obrázk· 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 Ukázka sazby noty C 1 s houslovým a basovým klí£em. . . . . . . . . . . . . . Metrum - ukázka moºných zápis·. . . . . . . . . . . . . . . . . . . . . . . . . Ukázka jednotlivých not. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ukázka sazby pomlk r·zných délek. Posloupnost je se°azena od nejdel²ích po nejkrat²í. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ukázka typ· pouºívaných taktových £ar. . . . . . . . . . . . . . . . . . . . . . Ukázka akordu C dur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ukázka trámce. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ukázka nej£asteji pouºívaných posuvek. . . . . . . . . . . . . . . . . . . . . . Ukázka spojení dvou not pomocí ligatury. . . . . . . . . . . . . . . . . . . . . 10 10 12 12 13 14 14 15 16 3.1 Statistika pouºívaných programovacích jazyk· na serveru. Data jsou p°evzata z [4]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.1 4.2 Vrstvy applikace pdDots. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Ukázka struktury datového modelu. . . . . . . . . . . . . . . . . . . . . . . . . 29 E.1 Diagram nasazení. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 F.1 Notový zápis vytvo°ený v aplikaci pdSyntax. . . . . . . . . . . . . . . . . . . 58 H.1 Obsah p°iloºeného CD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 xv xvi SEZNAM OBRÁZK Seznam tabulek C.1 Tabulka slovních ozna£ení dynamiky. . . . . . . . . . . . . . . . . . . . . . . . 51 C.2 Tabulka slovních ozna£ení zm¥ny dynamiky. . . . . . . . . . . . . . . . . . . . 51 D.1 Kongurace testovacího po£íta£e . . . . . . . . . . . . . . . . . . . . . . . . . 54 G.1 Seznam zna£ek v jazyce pdSyntax. . . . . . . . . . . . . . . . . . . . . . . . . 60 G.2 Seznam funkcí v jazyce pdSyntax. . . . . . . . . . . . . . . . . . . . . . . . . 61 G.3 Seznam parametr· hlavi£ky formátu pdSyntax. . . . . . . . . . . . . . . . . . 61 xvii xviii SEZNAM TABULEK Kapitola 1 Úvod Noty jsou základním prvkem hudebního zápisu a provázejí nás sv¥tem hudby uº od nepam¥ti. Lidé si v dobách, kdy nebylo moºné hudbu jakkoli ukládat, kladli otázku, jak ji zachovat tak, aby p°etrvala a bylo moºné si ji op¥tovn¥ poslechnout. V pr·b¥hu £asu proto vznikaly a zanikaly r·zné zp·soby zápisu hudby. V moderní dob¥ se nej£ast¥ji setkáme se standardní notací, díky které se nám nap°íklad dochovala slavná díla hudebních velikán·. A v sou£asnosti, kdy do²lo k obrovskému roz²í°ení osobních po£íta£·, se noty sází p°eváºn¥ v elektronické podob¥. Proto bylo vyvinuto nep°eberné mnoºství softwarových °e²ení, které sazbu not umoº¬ují. V¥t²inu z t¥chto program· je v²ak nutné instalovat na uºivatelov¥ po£íta£i, coº p°iná²í n¥které výhody a nevýhody. S p°íchodem internetu se ale roz²í°il zájem uºivatel· svou hudbu sdílet, a proto se za£alo upou²t¥t od desktopových variant1 . Aplikace by tak mohla pomoci vybudovat online komunitu hudebník·, kte°í by za pomoci této aplikace mohli jednodu²e vytvá°et a sdílet hudební skladby. Webové stránky implementující tuto aplikaci by mohly být obohaceny o r·zné funkce. Nap°íklad o funkci publikování £ástí skladby s návodem a komentá°i k jejímu p°ehrání. Dal²í funkcí by mohla být moºnost spole£né práce více hudebník· na jedné skladb¥. V²echny ilustrace notového zápisu v této práci jsou vysázeny pomocí této aplikace. Výjimku tvo°í ilustrace, u kterých je uveden jiný zdroj. Práce je strukturována po jednotlivých chronologických krocích, které byly nutné k vytvo°ení aplikace. V kapitole 2 jsou popsány cíle této práce a n¥které jiº existující alternativy webové sazby not. Kapitola 3 se zabývá analýzou a popisem struktury syntaxe, která je vyuºita jako uºivatelský vstup a tvo°í tak podstatnou £ást ovládání aplikace. Kapitola 4 objas¬uje návrh °e²ení, zam¥°uje se na implementa£ní stránku aplikace a popisuje pouºité technologie. Kapitola 5 se zabývá testováním. Shrnutí cíl· bakalá°ské práce je sou£ástí kapitoly 6. 1 Desktopovým programem se myslí program, který b¥ºí na hardwaru klientského po£íta£e. 1 2 KAPITOLA 1. ÚVOD Kapitola 2 Popis problému, specikace cíle V sou£asné dob¥ se problému sazby notového zápisu v¥nuje velké mnoºství jiº existujících softwarových °e²ení. V této kapitole n¥které z nich stru£n¥ p°edstavím. Zam¥°ím se na sazbu not ve webovém prost°edí, protoºe desktopové alternativy disponují jinými technickými moºnostmi. Tyto odli²né vlastnosti jsou rozebrány v kapitole 3. 2.1 Existující °e²ení sazby not 2.1.1 Noteight Noteight je webová aplikace, která slouºí pro zápis hudební notace. Po registraci na ociálních stránkách [3] dovoluje svým uºivatel·m vytvá°et, sledovat, ukládat a tisknout notový zápis. Aplikace dále dovoluje zapsanou hudbu p°ehrát rovnou v klientském prohlíºe£i. Noteight umoº¬uje provád¥t s notovým zápisem r·zné operace, jako nap°íklad p°idání nových hudebních stop nebo p°evedení skladby do jiné tóniny. Aplikace je schopna importovat a exportovat soubory typu MusicXML. Moºnost exportu je zde i pro SMF (Simple MIDI File) a WAW soubory. Exportované WAW soubory jsou dokonce sloºeny z nahrávek skute£ných nástroj· a nejsou pouze konvertovány z SMF souboru. Noteight existuje ve dvou distribucích. Uºívaní první distribuce je zdarma, má v²ak omezenou funk£nost a umoº¬uje uloºit omezený po£et skladeb. Druhá distribuce je placená a oplývá zlep²enými funkcemi, jako nap°íklad moºností spolupráce více autor· na jedné skladb¥ nebo pouºití mnoha nahraných vzork· hudebních nástroj·. Noteight, krom¥ standardní notové osnovy, také umoº¬uje vkládat noty pomocí kytarové tabulatury. Produkt dále poskytuje aplika£ní rozhraní pro zve°ejn¥ní vytvo°ených skladeb na externích webových stránkách. Aplikace je kompletn¥ vytvo°ena technologií Flash. 2.1.2 Legato Sheet Music Viewer Legato Sheet Music Viewer je webová aplikace od spole£nosti Legato Media, která se zam¥°uje hlavn¥ na zobrazování a p°ehrávání skladeb. Program dokáºe £íst soubory MusicXML, které jsou uloºené na serveru, a z nich vytvá°et notový zápis. Aplikace umoº¬uje uºivateli sledovat pr·b¥h p°ehrávané skladby, zastavit a op¥t spustit p°ehrávání, transponovat skladbu 3 4 KAPITOLA 2. POPIS PROBLÉMU, SPECIFIKACE CÍLE a m¥nit její tempo. Jak název napovídá, jedná se o aplikaci umoº¬ující pouze výstup notového zápisu a neslouºí proto pro editaci zdrojového souboru. Po£ítá se s tím, ºe k vytvo°ení poºadovaného MusicXML souboru, pouºije tv·rce skladby jiný software. Aplikace je op¥t vytvo°ena technologií Flash. 2.1.3 Myriad Music Plug-in Myriad Music Plug-in je aplikace od spole£nosti Myriad, která se zam¥°uje na aplikace v oblasti hudby a multimedií. Jedná se o sadu zásuvných modul· pro v¥t²inu moderních webových prohlíºe£·. Tyto zásuvné moduly interpretují binární MUS soubory a dovolují tak uºivateli zobrazovat a p°ehrávat hudební skladby. Myriad Music Plug-in je obda°en je²t¥ n¥kolika funkcemi, ale v zásad¥ se op¥t jedná o aplikaci, která neumoº¬uje editovat zdrojový soubor a o£ekává jiº vytvo°ený zdrojový soubor. Pro ú£ely vytvo°ení tohoto souboru bychom od rmy Myriad mohli pouºít nap°íklad produkt Harmony Assistant. 2.1.4 ABC converter ABC converter je webový projekt, který dokáºe ze vstupního textového °et¥zce ve formátu ABC nebo MusicXML vygenerovat obrázek se záznamem sklady v notové osnov¥ a odkaz ke staºení skladby ve formátu MIDI. Tento produkt tedy ne°e²í samotné p°ehrávání hudby v klientském prohlíºe£i, ale pouze vygeneruje data na serveru a p°edá klientovi výsledek. 2.2 Reprezentace not v elektronické podob¥ V této £ásti jsou popsány n¥které formáty, které se dají pouºít k reprezentaci notového zápisu. V¥t²ina desktopových program· pro editaci hudby £i hudebního zápisu má vlastní strukturu vnit°ní reprezentace dat a k tomu odpovídající souborové formáty. Tyto formáty nejsou ur£eny k ²ir²ímu pouºití. 2.2.1 TEX TEX vznikl jako desktopový typogracký systém pro sazbu textu a matematických vzorc·. Postupem £asu k systému TEX p°ibývala r·zná roz²í°ení v podob¥ maker. MuTEX je balí£ek maker pro sazbu notového zápisu v systému TEX. MuTEX neumoº¬uje sázet sloºit¥j²í konstrukce, jako jsou nap°íklad polyfonní skladby. Vznikl v roce 1987 a umoºnil tak ostatním autor·m, aby z n¥j vycházeli. MusicTEX °e²í stejnou úlohu jako MuTEX s tím rozdílem, ºe umoº¬uje sázet polyfonní skladby [5]. To znamená skladby, které mají více hlas·. Tato skute£nost umoºnila vývojá°·m se p°i návrhu tohoto balí£ku soust°edit na jiné vlastnosti, coº má za následek odli²né vykreslovací kvality oproti balí£ku MuTEX. Dal²ím balí£kem je MusiXTEX, který je p°ímo odvozený od balí£ku MusicTEX. MusiXTEX p°iná²í °e²ení minoritních chyb a gracká vylep²ení výsledné sazby. Jednou z t¥ch zm¥n je nap°íklad precizn¥j²í vykreslování zna£ky legata £i ligatury. 2.2. REPREZENTACE NOT V ELEKTRONICKÉ PODOB 5 V²echny tyto balí£ky vnikly za ú£elem poskytnout uºivatel·m komplexní nástroj pro sazbu not. Balí£ky v²ak nerozhodují o estetických problémech gracké reprezentace notového zápisu. Tuto zodpov¥dnost p°edávají do rukou saze£e. Zmín¥né projekty se tedy nespecializují na sazbu not pro ú£ely vytvá°ení skladby. Specializují se p°edev²ím na sazbu notového zápisu v publikacích, kde lze vyuºít i jiné vlastnosti sázecího systému TEX. Saze£ má moºnost p°esn¥ ur£it v²echny parametry tohoto zápisu. Ukázka struktury maker MusicTeX: \generalmeter{\meterfrac{4}{4}}\relax \def\nbinstruments{1} \debutextrait \NOtes\zsong{Ská- }\qu g\enotes \NOtes\zsong{kal } \qu g\enotes \NOTes\zsong{pes } \hu e\enotes \barre \NOtes\zsong{p°es }\qu g\enotes \NOtes\zsong{o- } \qu g\enotes \NOTes\zsong{ves, }\hu e\enotes \barre \NOtes\zsong{p°es }\qu g\enotes \NOtes\zsong{ze- } \qu g\enotes \NOtes\zsong{le- } \qu h\enotes \NOtes\zsong{nou } \qu g\enotes \barre \NOTes\zsong{lou- }\hu g\enotes \NOTes\zsong{ku, } \hu f\enotes \finextrait V této ukázce bylo vyuºito moºnosti sazby hudebních text·. Za pov²imnutí také stojí rozli²ení odsazení díl£ích not pomocí velikosti písmen v makru \notes. Makro \NOtes denuje mezery mezi notami a v¥t²inou se pouºívá pro zadání £tvr´ových not. \NOTes v tomto p°ípad¥ denuje v¥t²í odsazení pouºívané pro noty p·lové. Délka a orientace noºi£ky jsou denovány nap°íklad makrem \gu1 . Parametr makra ur£uje vý²ku noty, ne v²ak vºdy je tento parametr intuitivní. V tomto p°íklad¥ parametr h na °ádku 14 ur£uje notu A, nikoli notu H , která je reprezentována znakem i, coº je následující znak v anglické abeced¥. 2.2.2 MusicXML MusicXML je textový formát zaloºený na zna£kovacím jazyku XML a slouºí jako univerzální vým¥nný formát mezi jednotlivými softwarovými °e²eními interpretace klasické hudební notace. Formát MusicXML je pro jeho ucelenost velice roz²í°ený mezi r·znými hudebními platformami. Formát popisuje jak vlastnosti zvuku, tak i n¥které vlastnosti gracké reprezentace not, které mohou být specické pro autora skladby. Nap°íklad rozhodnutí o orientaci noty. Písmeno q znázor¬uje quarter neboli £tv´ovou notu. Písmeno u (up) °íká, ºe nota má být orientována noºi£kou nahoru. 1 6 KAPITOLA 2. POPIS PROBLÉMU, SPECIFIKACE CÍLE Formát byl vyvinut spole£ností Recordare, která si p°i vytvá°ení specikace tohoto formátu dala za cíl vytvo°it voln¥ ²i°itelný, otev°ený, univerzální a komplexní formát pro reprezentaci notového zápisu. Kv·li tomu, ºe XML obsahují velké mnoºství redundantních dat, existuje i specikace komprimované verze MusicXML souboru, která má zhruba stejnou velikost jako odpovídající SMF soubor [11]. Formát spolu s DTD souborem popisující jeho strukturu je vydán pod licencí Royalty-free licence. Ukázka struktury MusicXML souboru: <attributes> <divisions>64</divisions> <key> <fifths>0</fifths> <mode>major</mode> </key> <time> <beats>4</beats> <beat-type>4</beat-type> </time> <clef number="1"> <sign>G</sign> <line>2</line> </clef> </attributes> <note> <pitch> <step>G</step> <octave>4</octave> </pitch> <duration>64</duration> <voice>1</voice> <type>quarter</type> </note> Jak je vid¥t z ukázky, jedná se o jazyk, který je dob°e £itelný pro stroj i pro £lov¥ka. Nevýhodou z·stává velký po£et redundantních znak·. 2.2.3 ABC notace ABC je ozna£ení pro textovou reprezentaci hudební notace [1]. ABC notace byla zaloºena s ohledem na p°ímou reprezentaci notového zápisu, a proto byl tento jazyk navrhnut tak, aby byl co nejjednodu²²í. Za vznikem tohoto formátu stála snaha o zredukování po£tu znak· nutných k popsání dané skute£nosti. ABC syntax není zdaleka tak komplexní jako MusicXML a sloºit¥j²í konstrukce hudebních entit se, pro malý po£et pouºitých znak·, zapisují pom¥rn¥ neintuitivním zp·sobem. Ukázka ABC syntaxe: 2.2. REPREZENTACE NOT V ELEKTRONICKÉ PODOB 7 T:Skákal pes M:4/4 L:1/4 K:G GGE2 | GGE2 | GGAG | G2F2 | FFD2 | FFD2 | FFGF | F2E2 |] Informa£ní pole L denuje jednotkovou délku noty. Není-li uvedeno jinak, pouºije se pro délku noty jednotková délka. ísla uvedená za znakem noty znázor¬ují, ºe délka noty je násobkem tohoto £ísla a jednotkové délky noty. 2.2.4 MIDI MIDI (Musical Instrument Digital Interface) je ozna£ení standardizovaného protokolu pro p°enos elektronických dat hudebních nástroj· [10]. M·ºe slouºit nap°íklad pro komunikaci elektronického hudebního nástroje a po£íta£e. Zkratka SMF (Simple MIDI le) ozna£uje hudební soubor, který je popsán standardem MIDI. Jedná se o binární soubor a ve v¥t²in¥ p°ípad· je opat°en koncovkou MID nebo MIDI, a proto se £asto p°ezdívá MIDI soubor. Hudební formáty zaloºené na lineární pulzn¥-kódové modulaci audio signálu se skládají z jednotlivých vzork· frekvence a amplitudy zvukového signálu (dále jen vzorkované audio formáty). SMF, na rozdíl od t¥chto formát·, obsahuje informace o jednotlivých tónech skladby, jejich vý²ce, délce, barv¥ a £asu, ve který tón zní. Je moºné denovat i nástroj, který se k p°ehrání pouºije. Struktura SMF souboru velice v¥rn¥ odpovídá notovému zápisu. Proto je tento formát ideální pro generování hudebního záznamu ze znalosti odpovídajícího notopisu. General MIDI je standard popisující sadu nástroj· pro za°ízení pracujících na bázi protokolu MIDI. 2.2.4.1 Struktura formátu SMF Formát obsahuje dva typy datových blok·. Hlavi£kový blok a blok popisující danou skladbu. Zajímavou poloºkou hlavi£kového bloku je typ formátu. Typ formátu udává, zda se jedná o skladbu, která bude mít jednu £i více hudebních stop. Hudebními stopami bychom mohli reprezentovat r·zné nástroje nebo r·zné hlasy. Blok dat obsahuje identikátor, velikost skladby a sadu událostí reprezentující vlastnosti této skladby. Události mohou být trojího druhu: hudební, meta a systémové. Zam¥°íme se pouze na hudební události. Tyto události obsahují zm¥nu £asu od poslední uplynulé události, typ události, identikátor stopy a dva parametry, které se li²í v závislosti na typu události. Kv·li minimalizaci velikosti se zadávají relativní hodnoty £asu, a pokud je toto pole nulové, znamená to, ºe se dv¥ události vykonají ve stejný £as. Nej£ast¥j²í události jsou noteOn a noteOff, které, jak název napovídá, slouºí pro spu²t¥ní a zastavení p°ehrávání daného tónu. Tyto události mají jako parametr £íslo noty a hodnotu hlasitosti. íslo noty je celé £íslo v intervalu od 0 do 127 a jednozna£n¥ tak reprezentuje vý²ku a oktávu dané noty. Minimální hodnota udává notu C , která je o p¥t oktáv niº²í neº st°ední C . Kaºdé následující £íslo p°edstavuje notu vy²²í o p·l £i celý tón. 8 KAPITOLA 2. POPIS PROBLÉMU, SPECIFIKACE CÍLE 2.2.5 Shrnutí V²echny zmín¥né reprezentace mají odli²ný ú£el a tím pádem i strukturu. Popis t¥chto struktur vzhledem k pouºití ve výsledné aplikaci bude popsán v kapitole 3.5. 2.3 Popis formálního notového zápisu Jeden z d·leºitých poºadavk· na funkcionalitu aplikace je korektní zobrazování not, pomlk, akord· atd. (dále hudební entity). Tato £ást je zam¥°ena na popis ukázek korektn¥ vysázených hudebních entit. Vzhledem k tomu, ºe notový zápis bohuºel není nijak standardizován, nedá se v n¥kterých p°ípadech jednozna£n¥ ur£it, jak má takový správný zápis vypadat nebo je p°ípustných více moºností. P°i analýze cíl· bylo tedy nutné prozkoumat mnoho jiº existujících notových zápis· a n¥které záv¥ry vyvodit pouze z praktických ukázek. V této kapitole povaºuji za d·leºité popsat jednotlivé entity hudebního zápisu a jejich grackou reprezentaci. Popis detailních princip· teorie hudební nauky není sou£ástí této práce. V této kapitole bude zárove¬ popsáno velké mnoºství pravidel a výjimek zobrazování notových entit. Ve velké mí°e se jedná o p°ípady, kdy není ºádoucí, aby se jednotlivé entity gracky k°íºily a £inily tak celkový zápis nep°ehledný. Notový zápis vyjad°uje pr·b¥h tón· v £ase, nejedná se v²ak o ryze seriální reprezentaci. Ve velkém mnoºství skladeb je ºádoucí, aby více hlas· zn¥lo soub¥ºn¥. Proto je nutné, aby se daná skute£nost dala zachytit i pomocí notového zápisu. N¥které hudební entity nemají unikátní zna£ku a zapisují se slovy. Pro tyto ú£ely se pouºívají ustálená slovní spojení v italském jazyce. 2.3.1 Notová osnova Notová osnova je základním prvkem notového zápisu. Zna£í místo, kam se umis´ují ostatní notové entity. Notová osnova je tvo°ena p¥ti linkami. Kaºdá z t¥chto linek, v závislosti na pouºitém klí£i, udává umíst¥ným notám jejich hudební vý²ku. Noty v notové osnov¥ se £tou zleva do prava. N¥které notové zápisy mohou obsahovat více hudebních nástroj· £i více notových osnov na znázorn¥ní jednoho nástroje. V t¥chto p°ípadech mluvíme o polyfonních skladbách. Nap°íklad pro klavír pot°ebujeme pro znázorn¥ní hry obou rukou zapsat noty nezávislé délky ve stejný £as. Hra kaºdé ruky bude rozd¥lena do jiného hlasu. Pr·chod jednotlivých hlas· bude paralelní a dané noty budou hrány ve stejný okamºik. Hlas m·ºe být rozd¥len do více paralelních notových osnov nebo se m·ºe nacházet na jedné notové osnov¥. Notové osnovy stejného nástroje jsou obvykle spojovány svorkami. V £astém p°ípad¥, kdy jedna z osnov je opat°ena houslovým klí£em a druhá basovým, se tóny uvedené na t¥chto osnovách mohou £áste£n¥ p°ekrývat a není explicitn¥ °e£eno kam danou notu umístit. V partiturách jsou jednotlivé hlasy £len¥ny od vysokých k hlubokým a jsou seskupeny podle typu nástroj·. Soub¥ºné osnovy se £asto na levé stran¥ spojují tenkou linkou, £ímº tvo°í tzv. systém. 2.3. POPIS FORMÁLNÍHO NOTOVÉHO ZÁPISU 9 Jednotlivé skupiny nástroj· (strunné, dechové atd.) mohou mít pro p°ehlednost vertikáln¥ spojené taktové £áry, aby bylo snaz²í orientovat se v tom, jaké nástroje hrají ve stejný £as. Zárove¬ se jejich osnovy spojují hranatou závorkou. Zp·sob umíst¥ní °ádk· notové osnovy probíhá v závislosti na jejím obsahu. Aby se zabránilo situaci, kdy nota svou vý²kou zasahuje do jiného °ádku notové osnovy, je nutné danému °ádku rezervovat více místa. 2.3.2 Tempo Tempo udává rychlost p°ehrávané skladby. Jedná se o £íselný údaj v jednotkách BPM (beats per minute) vyjad°ující po£et £tvr´ových not za minutu. N¥kdy se tempo vyjad°uje i slovn¥ nebo kombinací £íselné a slovní reprezentace. Slovn¥ se ozna£uje také zm¥na tempa v pr·b¥hu skladby. Absolutní £as, po který tón zní, se dá vyjád°it vztahem: T = 4 · 60 · 1000 · duration tempo (2.1) kde: T . . . £as v ms, po který zní nota zadané délky p°i daném tempu. 4 . . . konstanta na p°epo£et délky £tv´ové noty na celou. 60 · 1000 . . . konstanta na p°epo£et minut na milisekundy. duration . . . délka noty. tempo . . . tempo skladby. 2.3.3 Klí£ Klí£ je zpravidla první znak, který se na notovou osnovu pí²e a udává vý²ku tónu jednotlivých not v této notové osnov¥. Na obrázku 2.1 jsou znázorn¥ny dv¥ osnovy, jedna s houslovým klí£em a druhá s klí£em basovým. Na kaºdé osnov¥ je vysázena nota st°ední C (C 1 ), av²ak její umíst¥ní je jiné. Pouºití houslového klí£e denuje, kterým linkám notové osnovy odpovídá nota které vý²ky. Nota C 1 bude na osnov¥ s houslovým klí£em na první spodní pomocné lince, zatímco totoºná nota na osnov¥ s basovým klí£em se zobrazí na první vrchní pomocnou linku. Stejná pozice noty s pouºitím klí£e houslového by reprezentovala notu A2 . Lze °íci, ºe osnova s basovým klí£em zobrazuje niº²í tóny a li²í se o 12 stup¬·2 od osnovy s klí£em houslovým. 2.3.4 P°edznamenání P°edznamenání ur£uje tóninu skladby a uvádí se na za£átek notové osnovy hned za notový klí£. P°edznamenání denuje, které noty se budou hrát o p·l (p°ípadn¥ £tvrt) tónu vý² nebo níº. V praxi to znamená, ºe k t¥mto notám nemusíme jiº v pr·b¥hu skladby p°idávat posuvky modikující vý²ku tónu. P°i vynechání p°edznamenání je skladba implicitn¥ v tónin¥ Cdur. Gracká reprezentace p°edznamenání je tvo°ena pomocí znak· posuvek. Jednotlivé znaky jsou do p°edznamenání umis´ovány postupn¥ a jejich pozice a po°adí je striktn¥ dáno. 2 Stupn¥m notové osnovy se rozumí vzdálenost mezi linkou a mezerou. 10 KAPITOLA 2. POPIS PROBLÉMU, SPECIFIKACE CÍLE Obrázek 2.1: Ukázka sazby noty C 1 s houslovým a basovým klí£em. V p°ípad¥, ºe máme houslový klí£ a p°idáme jeden k°íºek na linku F 2 , dostáváme se do tóniny Gdur, coº znamená, ºe v²echny noty G budeme hrát o p·l tón· vý², £ímº nám z noty G vznikne nota Gis [7]. Pouºitím jiného klí£e nám linky denují jiné tóny, a proto se znaky posuvek umís´ují odli²n¥. P°edznamenání m·ºe být pro kaºdý takt jiné. V tomto p°ípad¥ se znaky vykreslují na za£átku daného taktu. 2.3.5 Metrum Metrum ur£uje rytmickou sloºku skladby a je denováno dv¥ma £ísly ve form¥ pomyslného zlomku. Vrchní £íslo denuje po£et dob v jednom taktu. Spodní £íslo udává, jak dlouho trvají jednotlivé doby. Ve v¥t²in¥ p°ípad· je £íslo mocninou dvojky a odpovídá délce not. Pokud není v pr·b¥hu skladby zm¥n¥né metrum, vykresluje se zna£ení pouze na za£átek prvního °ádku notové osnovy za znak klí£e. První zápis na obrázku 2.2 °íká, ºe takt bude mít délku t°í dob a jedna tato doba bude mít délku £tvr´ové noty. N¥kdy je také metrum denováno druhým znakem na obrázku, coº je jiné ozna£ení pro £ty°£tvr´ový takt. T°etí znak vymezuje takt se dv¥ma dobami, kdy kaºdá doba má hodnotu p·lové noty (dvou-p·lový takt). Obrázek 2.2: Metrum - ukázka moºných zápis·. N¥které skladby m·ºou mít sloºené metrum. Tato situace je znázorn¥na zp·sobem, kdy je po£et dob zapsán ve form¥ více £ísel odd¥lených znakem plus (+). Tento zápis °íká, ºe se jednotlivým takt·m cyklicky p°id¥luje jedno z £ísel. V p°ípad¥ dvou pomyslných s£ítanc· se první pouºije pro první takt, druhý pro druhý takt a pro takt t°etí se pouºije op¥t s£ítanec první. Liché takty by tedy m¥ly jiné metrum neº takty sudé. Délka jedné doby je 2.3. 11 POPIS FORMÁLNÍHO NOTOVÉHO ZÁPISU pro v²echny takty spole£ná. Ve vzácných p°ípadech se m·ºeme setkat se skladbami, které nemají celo£íselný po£et dob nebo iracionální délky takt·, coº je situace kdy spodní £íslo neodpovídá délce jedné noty. 2.3.6 Nota Nota je základním grackým prvkem hudební osnovy a reprezentuje tón o ur£ité vý²ce a délce. Nota se skládá z hlavi£ky, noºi£ky a praporku. Kombinace hlavi£ky a po£tu prapork· jednozna£n¥ identikuje délku trvání tónu, vertikální pozice noty ur£uje její vý²ku. Jeden stupe¬ vý²ky tónu posune notu o p·l linky notové osnovy. Hodnoty délky jsou udány mocninami dvojky. Zde je uvedeno základní £len¥ní not podle délky: • Celá, • p·lová, • £tvr´ová, • osminová, • ²estnáctinová, atd. Délka je relativní £asový údaj. Absolutní £as trvání noty ur£uje aº tempo pro kaºdou notu £i pomlku v celé skladb¥. Ve £ty°-£tvr´ovém taktu reprezentuje £tvr´ová nota jednu dobu. Délka trvání noty m·ºe být dokonce del²í neº jeden takt. Vertikální pozice noty je tedy udána vý²kou tónu, klí£em a oktávou, ve které se nachází. Horizontální pozice je také denována mnoha faktory, av²ak rozhodnutí p°esné pozice není jednozna£né. Saze£ m·ºe cítit pot°ebu ur£itý blok not logicky seskupit, a mezery mezi jednotlivými notami zmen²it. Noºi£ka se ve standardních p°ípadech znázor¬uje jako úse£ka délky jedné oktávy a s p°ibývajícím po£tem prapork· se délka noºi£ky zv¥t²uje. Po£et prapork· noty je závislý na délce trvání noty a m·ºe být vyjád°en vztahem: ( n= 0, duration > log2 (duration) + 2, duration ≤ 1 4 1 4 Kde: n . . . po£et prapork·. duration . . . délka trvání noty. Obrázek 2.3 ukazuje gracké znázorn¥ní not rozdílné vý²ky a délky. 2.3.7 Pomlka Pomlka je £asový interval, ve kterém v daném hlasu nezní ºádný tón. Gracká reprezentace pomlky, obdobn¥ jako u noty, denuje délku trvání. Délka m·ºe být prodlouºena te£kou. Zna£ky díl£ích pomlk jsou zobrazeny na obrázku 2.4. 12 KAPITOLA 2. POPIS PROBLÉMU, SPECIFIKACE CÍLE Obrázek 2.3: Ukázka jednotlivých not. Obrázek 2.4: Ukázka sazby pomlk r·zných délek. Posloupnost je se°azena od nejdel²ích po nejkrat²í. Existují i pomlky, které trvají déle neº jeden takt. Star²í notace znázor¬ují tento p°ípad jako kombinaci jednotlivých celo£íselných pomlk. M·ºeme se také setkat s nov¥j²ím zápisem, kdy se tento stav vykresluje jako obdélník ohrani£ený dv¥ma vertikálními p°ímkami. Nad tímto znaménkem se £íslem zapisuje délka trvání pomlky ve form¥ po£tu takt·. V osnovách soub¥ºných hlas· se toto znaménko m·ºe vyskytovat, ale dává smysl jen tehdy, pokud je v obou t¥chto hlasech zárove¬. íslo se v této situaci pí²e mezi tato znaménka [6]. 2.3.8 Takt Takt je £ást skladby, která obsahuje elementární hudební entity a je udána po£tem dob. Délku trvání taktu ur£uje metrum. Taktová £ára odd¥luje jednotlivé takty a je vyjád°ena svislou £arou, která je kolmá na linky notové osnovy. Gracká ²í°ka taktu je udána jeho obsahem. Pro vícehlasé skladby slouºí taktová £ára jako synchroniza£ní sloºka, a proto se soub¥ºné takty vykreslují stejn¥ ²iroké nehled¥ na jejich obsah. V tomto p°ípad¥ se pro zvý²ení p°ehlednosti mohou soub¥ºné taktové £áry prodlouºit, £ímº dojde k jejich spojení. Kaºdý takt m·ºe mít nastavené odli²né p°edznamenání a metrum. Tyto modikace jsou znázorn¥ny obdobn¥ jako na za£átku osnovy a jsou umíst¥ny hned za p°edcházející taktovou £áru. Existují i jiné typy taktových £ar. Ty jsou znázorn¥ny na obrázku 2.5. V situaci pouºití více hlas· je nutné, aby soub¥ºné takty m¥ly stejný typ taktové £áry. Dvojitá £ára se nap°íklad pouºívá k logickému odd¥lení £ásti skladby. Za£átek repetice je typ taktové £áry, která reprezentuje opakování v²ech takt· aº do taktové £áry ozna£ující konec repetice. Zna£ka za£átek repetice nem·ºe být na konci notové osnovy. Tato situace se znázor¬uje tak, ºe se takt ukon£í standardní taktovou £arou a na za£átek nového °ádku notové osnovy se vykreslí vý²e zmín¥ná zna£ka. 2.3. POPIS FORMÁLNÍHO NOTOVÉHO ZÁPISU 13 Obrázek 2.5: Ukázka typ· pouºívaných taktových £ar. 2.3.9 Repetice Ve velkém mnoºství skladeb se setkáme s pot°ebou £ást skladby opakovat, aniº bychom opakované £ásti v zápisu duplikovali. Pro tyto ú£ely slouºí znaménka repetice, která ozna£ují odkud a kam se má skladba opakovat. První moºností je pouºití zna£ky repetice p°edchozího taktu. Modikace této zna£ky umoº¬uje zapsat opakování dvou p°ede²lých takt·. Druhou moºností zapsání repetice je pouºití p°íslu²ných taktových £ar. Speciální chování repetic upravuje zakon£ení. Zakon£ení neboli volta ozna£uje takty, které tvo°í výjimku opakování. Prima-volta znázor¬uje zakon£ení £ásti repetice v prvním pr·b¥hu, zatímco secundavolta nabízí alternativní zakon£ení pouºité v druhém pr·chodu repeticí. Poslední alternativou jsou zna£ky segno a coda. Zna£ka segno, zárove¬ se slovním ozna£ením capo (za£átek skladby), se pouºívá pro ozna£ení odkud má zvolená repetice za£ínat. Naopak zna£ka coda spolu se slovem f ine (konec skladby) reprezentuje místo, kde se bude pokra£ovat po skon£ení opakování £ásti skladby. Ozna£ení Dalsegnoalcoda zna£í návrat k p°ede²lé zna£ce segno s následujícím skokem dop°edu ke zna£ce coda. P°esné místo skoku denuje zna£ka alcoda. Navzdory sloºitosti tohoto zápisu se jedná o nejrozsáhlej²í moºnost zapsání repeticí. 2.3.10 Souzvuk Souzvuk je stav, kdy v jeden okamºik zní více tón·. Akord je konkrétním p°ípadem souzvuku, kdy zn¥jí sou£asn¥ více neº dva tóny a jsou organizovány podle ur£itého systému. Noty jednoho souzvuku se kreslí nad sebou a znázo°nují tak, ºe se hrají ve stejný £as. Jedná-li se o noty, které mají délku krat²í neº má celá nota (£ili jsou za normálních okolností opat°eny noºi£kou), mohou být noty souzvuku spojeny jednou prodlouºenou noºi£kou. Na obrázku 2.6 je znázorn¥n p°ípad takového souzvuku. Jednotlivé noty v akordu se v p°ípad¥ umíst¥ní nad polovinou notové osnovy neotá£ejí, ale m·ºe být oto£eno celé gracké znázorn¥ní akordu. Praporek obdobn¥ jako u samotné noty z·stává nato£en sm¥rem doprava. Noty spojeného souzvuku se za£ínají vykreslovat od sm¥ru, který je vzdálen¥j²í od umíst¥ní praporku a v p°ípad¥, ºe se dv¥ následující noty svou vý²kou li²í o mén¥ neº 2 tóny, je nutné jednu z not oto£it na druhou stranu spole£né noºi£ky, aby se vzájemn¥ nep°ekrývaly. P°i zobrazování posuvek jednotlivých not v souzvuku je nutné dbát na to, aby se znaky posuvek nep°ekrývaly a p°ípadn¥ je horizontáln¥ posunout. 14 KAPITOLA 2. POPIS PROBLÉMU, SPECIFIKACE CÍLE Dal²ím p°ípadem m·ºe být souzvuk, který není spojen. Spodní nota by za normálních okolností m¥la svoji noºi£ku nahoru a vrchní dol·. Noty by se zde k°íºily a zápis by nebyl £itelný, proto se zde oto£ení not ignoruje. Obrázek 2.6: Ukázka akordu C dur. 2.3.11 Trámec Trámec je spojení více not £i pomlk do logických blok· nazna£ující rytmus daného bloku tónu. Trámec mimo jiné také zp°ehled¬uje notový zápis, a tím zrychluje £tení délek jednotlivých not. Trámce spojují pouze noty, které mají délku men²í nebo rovnu délce osminové noty, neboli noty, které by za normálních okolností byly opat°eny praporkem. Gracké zobrazení trámce je p°ímka, která protíná konce noºi£ek v²ech obsaºených not. Tato p°ímka je ²iroká p°ibliºn¥ polovinu jednoho stupn¥ notové osnovy a p°i zobrazování zastupuje funkci praporku. Na obrázku 2.7 je gracké znázorn¥ní trámce. Obrázek 2.7: Ukázka trámce. Proto se praporek trámcem spojených not nevykresluje a po£et p°ímek trámce je dán práv¥ po£tem prapork·, které nota má. Notám, které nejsou v p°ímce, se zpravidla prodluºuje nebo mírn¥ zkracuje délka noºi£ky. Princip vykreslení trámce je takový, ºe se nejd°íve nakreslí hlavi£ky v²ech not, které mají být spojeny. Poté se nakreslí noºi£ky koncových not a nakonec jsou propojeny trámcem, na který se napojí ostatní noºi£ky. Existuje mnoho zvlá²tních p°ípad·, kdy je t¥ºké rozhodnout kudy trámec vést. M·ºe nastat p°ípad, ve kterém jsou n¥které noty nad a n¥které pod trámcem. V t¥chto p°ípadech není striktn¥ °e£eno, kde trámec leºí. Toto rozhodnutí je na saze£i not, av²ak velké mnoºství sázecích program· nedovoluje uºivateli zm¥nit rozhodnutí algoritmicky ur£ené pozice trámce. Trámce mohou spojovat i noty odli²né délky. Tento stav se vykresluje jako trámec, který spojuje noty mající stejnou délku jako del²í z not. Z krat²í noty pak vede odpovídající po£et trámcových linek sm¥rem k del²í not¥ a kon£í p°ibliºn¥ ve vzdálenosti ²í°ky hlavi£ky. Ve speciálních p°ípadech mohou trámce vést skrze více takt· nebo dokonce p°es více notových osnov. 2.3. POPIS FORMÁLNÍHO NOTOVÉHO ZÁPISU 15 2.3.12 Te£ka za notou £i pomlkou Te£ka prodluºuje délku trvání not £i pomlk o polovinu jejich p·vodní délky. U pomlk se te£ka kreslí mezi druhou a t°etí linkou notové osnovy. Výjimku tvo°í pomlky s krat²í délkou neº je pomlka ²estnáctinová, u kterých se te£ka kreslí mezi první a druhou linku osnovy. U not je situace komplikovan¥j²í. Te£ka za notou se kreslí vpravo od hlavi£ky noty a vºdy je umíst¥na v meze°e mezi linkami. Leºí-li nota na lince, vykresluje se do mezery nad touto linkou, v opa£ném p°ípad¥ se kreslí do mezery, ve které nota leºí. Te£ka m·ºe být i dvojitá £i trojitá. Kaºdá dal²í te£ka p°idá k délce trvání polovinu koecientu p°ede²lé te£ky. V p°ípad¥, ºe by se jednalo o notu celou, první te£ka p°idá k délce jednu polovinu, druhá te£ka £tvrtinu a t°etí osminu. Ekvivalentní zápis prodlouºení noty lze také realizovat pomocí ligatury. 2.3.13 Posuvka Posuvka je zna£ka, která se pouºívá pro zm¥nu vý²ky noty. Nej£ast¥ji se setkáme s posuvkami, které zvý²í nebo sníºí vý²ku o p·l tónu. Zdvojením t¥chto znak· nám vznikají nové znaky, které modikují vý²ku tónu o celý jeden tón. Na obrázku 2.8 jsou znázorn¥ny tyto zna£ky. Existují i posuvky, které m¥ní tón pouze o £tvrt tónu. V standardní notaci se pouºívají znaky jako je nap°íklad p·l k°íºek £i zna£ka reprezentující posunutí o t°i p·ltóny. V n¥kterých exotických skladbách se k podobným ú£el·m pouºívají zna£ky koron a sori a mohou být obdobn¥ jako k°íºek a bé£ko pouºity v p°edznamenání. Stanovení pozice posuvek je popsáno v podkapitole Nota 2.3.6 a P°edznamenání 2.3.4. Obrázek 2.8: Ukázka nej£asteji pouºívaných posuvek. 2.3.14 Dynamika Dynamika reprezentuje zvukovou intenzitu hudebního p°ednesu. V notovém zápisu je zapsána jako zkratka slov vyjad°ující danou intenzitu. Tabulka C.1 znázor¬uje naj£ast¥ji pouºívaná slova. Existují i zna£ky pro znázorn¥ní zm¥ny intenzity. Jedná se o crescendo (postupné zesilování) a decrescendo (postupné zeslabování). Tyto zna£ky se vykreslují pod nebo nad notovou osnovu. V p°ípad¥ více soub¥ºných notových osnov se mohou vykreslovat mezi n¥. 2.3.15 Artikulace Artikulace popisuje zp·sob interpretace not p°i jejich hraní. Existuje velké mnoºství r·zných artikula£ních zna£ek. Artikulace m·ºe být popsána i slovn¥. N¥které artikula£ní zna£ky se 16 KAPITOLA 2. POPIS PROBLÉMU, SPECIFIKACE CÍLE dají p°epsat do jiné formy bez pouºití t¥chto zna£ek. V této £ásti jsou popsány jen n¥které artikula£ní zna£ky. Seznam ostatních ozna£ení je obsaºen v p°íloze C.1.1. 2.3.15.1 Ligatura Ligatura spojuje dv¥ noty a znázor¬uje, ºe se noty nehrají zvlá²´. Ligatura tedy prodluºuje délku trvání noty a m·ºe spojovat pouze noty stejné délky. Gracké znázorn¥ní ligatury je oblou£ek mezi hlavi£kami spojovaných not. Tato zna£ka je zobrazena na obrázku 2.9. Oblou£ek ligatury m·ºe být teoreticky neomezen¥ dlouhý a m·ºe tak p°esáhnout konec °ádku osnovy nebo konec jedné stránky. V t¥chto p°ípadech se oblou£ek dotáhne do konce °ádku a na dal²ím °ádku se pokra£uje. Obrázek 2.9: Ukázka spojení dvou not pomocí ligatury. 2.3.15.2 Legato Legato ur£uje skupinu not, které se hrají vázan¥. Legato má stejnou grackou reprezentaci jako ligatura. Na rozdíl od ligatury ale spojuje noty odli²né délky. 2.3.15.3 Staccato Staccato na rozdíl od legata ur£uje, které noty se mají hrát s co nejvýrazn¥j²ím rozd¥lením. V praxi se pak délka noty zkracuje a nedosahuje její plné délky. Staccato se znázor¬uje pomocí te£ky nad hlavi£kou noty. Pro noty oto£ené se te£ka kreslí pod hlavi£ku noty. 2.3.16 Ornamenty Ornamenty p°edstavují zápis usnad¬ující £tení not. Jedná se o zp·sob zápisu sloºit¥j²ích, av²ak standardních, konstrukcí pomocí jednoduchých symbol·. Jedná se nap°íklad o trylek, mordent £i appoggiaturu. Popis t¥chto zna£ek je nad rámec této práce. V p°íloze je zahrnutý seznam t¥chto zna£ek s jejich grackými reprezentacemi. 2.3.17 Text skladby Text písn¥ se zapisuje pod °ádek notové osnovy a je v¥t²inou rozd¥len po slabikách. Slabiky jsou p°id¥leny jednotlivým notám a reprezentují v jakém £ase a tónu se má p°íslu²ný text zpívat. V ostatních slokách se hudební sloºka opakuje. Texty ostatních slok lze bu¤ zapsat na dal²í °ádek pod notovou osnovu, nebo je moºné napsat je ve form¥ odstavce na konec skladby. 2.4. 2.4 CÍL PRÁCE 17 Cíl práce Cílem této bakalá°ské práce je vytvo°it aplikaci, která umoºní uºivatel·m vytvá°et notový zápis skladby ve webovém prost°edí. Aplikace svým uºivatel·m umoºní staºení výsledné skladby ve form¥ audio souboru, p°ehrání skladby v klientském prohlíºe£i a zobrazení aktuálního pr·b¥hu p°ehrávání skladby. Tato aplikace funguje jako modul a nebude závislá na stránkách, na kterých bude implementována. To znamená, ºe aplikaci bude moºno distribuovat na r·zné webové stránky. Díl£ím cílem je vybrat vhodný formát vstupního textového zápisu a dané syntaxi p°izp·sobit aplikaci. Výsledná aplikace bude, spolu s vybranou syntaxí, podrobena uºivatelským test·m. 18 KAPITOLA 2. POPIS PROBLÉMU, SPECIFIKACE CÍLE Kapitola 3 Analýza a návrh °e²ení Webové rozhraní p°iná²í pro tvorbu aplikací mnohá omezení. Webové aplikace, které se spou²tí na stran¥ klienta, vºdy b¥ºí v n¥jakém virtuálním prost°edí, které funk£nost dané aplikace m·ºe omezovat. V tomto p°ípad¥ se jedná o webový prohlíºe£. Oproti tomu desktopové programy, které se instalují na klientském po£íta£i, nejsou takto omezeny. B¥ºí p°ímo na hardwaru po£íta£e a mohou vyuºívat sluºeb opera£ního systému. P°íkladem je p°ímý p°ístup ke zvukové kart¥ po£íta£e1 , coº na rozdíl od n¥kterých technologií, které se v dne²ní dob¥ na webu vyuºívají, poskytuje v¥t²í moºnosti z hlediska implementace. To znamená, ºe p°i výb¥ru webové technologie je nutné vzít v potaz tyto aspekty a danou technologii zvolit na míru aplikace. Ve webových technologiích se vývojá° musí drºet ur£itých webových standard· a zárove¬ vyuºívat °e²ení, která fungují univerzáln¥ a nezávisle na pouºitém klientském prohlíºe£i. 3.1 Analýza vyuºitelných technologií Moºnosti vývoje aplikací pro webové rozhraní jsou omezené a je zde pouze pár technologií, které lze vyuºít. Pro ú£ely vytvo°ení aplikace byly n¥které technologie vybrány a popsány v této kapitole. Ke kaºdé technologii jsou popsány výhody a nevýhody pro tvorbu výsledné aplikace. Ve webovém prost°edí m·ºeme £innost prezentace rozd¥lit na dva ú£astníky klient a server. Server je vzdálený stroj, kterému klient zasílá poºadavek na ur£itý obsah. Server poºadavek zpracuje a v p°ípad¥, ºe nenastal ºádný problém, ode²le poºadovaná data klientovi. Sou£ástí odpov¥di m·ºe být nap°íklad kód stanovený k interpretaci na stran¥ klienta nebo spustitelný soubor. Komunikaci popisuje diagram nasazení na obrázku E.1. Aplikace není závisla na zdroji dat. Proto tento diagram neobsahuje na stran¥ serveru databázi, která v reálném nasazení m·ºe a nemusí být sou£ástí. Je ºádoucí, aby aplikace byla napsána s pouºitím moderních technologií, které se skute£n¥ vyuºívají. ím v¥t²í je základna daného jazyka, tím v¥t²í jsou moºnosti pouºití dané aplikace ²irokou ve°ejností. Míra zastoupení programovacího jazyka PHP slouºila jako inspirace pro výb¥r této technologie. Jazyk pouºitý na serveru je pro uºivatele aplikace prakticky neviditelný, a proto pro výb¥r tohoto jazyka nebyly kladeny ºádné dal²í poºadavky. 1 Desktopové programy mají p°ístup k hardwaru po£íta£e p°es vrstvy opera£ního systému. 19 20 KAPITOLA 3. ANALÝZA A NÁVRH EENÍ PHP je programovací jazyk ur£ený k vytvá°ení dynamického obsahu na stran¥ serveru. Tento jazyk drºí vedoucí postavení po celém sv¥t¥. Obrázek 3.1 ukazuje zastoupení jednotlivých serverových programovacích jazyk·.2 PHP ASP.NET JAVA ColdFusion Perl Ruby Python 77.7% 21.4% 4.0% 1.2% 0.9% 0.6% 0.2% Obrázek 3.1: Statistika pouºívaných programovacích jazyk· na serveru. Data jsou p°evzata z [4]. Zobrazování skladby v notovém zápise se provádí na stran¥ klienta. K t¥mto ú£el·m je t°eba pouºít technologie, které nám umoºní programov¥ vytvá°et danou prezentaci. Výb¥r klientské technologie bude popsán v následujících podkapitolách. 3.1.1 Zobrazovácí technologie 3.1.1.1 Adobe Flash Adobe Flash je gracký program, který umoº¬uje vytvá°et vektorové obrázky £i animace. Flash je vybaven i objektov¥ orientovaným skriptovacím jazykem ActionScript, který dokáºe ashovou prezentaci obohatit o moºnost interakce. Výhoda programu Flash je, ºe dokáºe vytvo°enou prezentaci exportovat do souborového formátu SWF. Tento soubor ke svému spu²t¥ní pot°ebuje Adobe Flash Player, který lze nainstalovat do klientského prohlíºe£e a spou²t¥t tak SWF soubory integrované p°ímo na webových stránkách. A£koli není Flash uznán jako webový standard, existuje nep°eberné mnoºství za°ízení, které umoº¬ují ashové aplikace spou²t¥t. N¥které webové portály jsou pln¥ postaveny na této technologii a spoléhají na roz²í°enost p°ehráva£e Flash Player. ActionScript zárove¬ poskytuje aplika£ní rozhraní pro vykreslování r·zných grackých primitiv. Výsledek, jenº je prezentován v programu Flash Player, má tu výhodu, ºe umoº¬uje aplikacím pouºít ²ir²í spektrum aplika£ního rozhraní. Jsou zde nap°íklad v¥t²í moºnosti syntézy hudby. Nevýhodou je, ºe v²ichni uºivatelé nemusí mít Adobe Flash Player nainstalovaný. Dále pak, ºe vykreslovací API nepodporuje kreslení kubických k°ivek. A navíc dochází ke sloºiOciální data jsou po°ízena k datu 1. kv¥tna 2012 a publikována skupinou W3Techs - World Wide Web Technology Surveys. N¥které webové portály mohou vyuºívat více neº jeden serverový programovací jazyk. 2 3.1. ANALÝZA VYUITELNÝCH TECHNOLOGIÍ 21 t¥j²ímu propojení aplikace se zbytkem stránky ve smyslu p°edávání vzdálených dat klientské aplikaci a ukládání vnit°ního stavu aplikace. Podobné technologie: • Adobe Flex Adobe Flex je sada vývojových technologií pro vytvá°ení RIA (Rich Internet Application). Jedná se o sadu nástroj·, která umoº¬uje pouºití uº vytvo°ených komponent, jako jsou nap°íklad formulá°e nebo tla£ítka. Výsledná aplikace je, stejn¥ jako v p°ípad¥ Flash, exportována do SWF souboru. • Adobe Alchemy Adobe Alchemy je projekt, který umoº¬uje kompilaci zdrojových kód· jazyka C a C++ do podoby, která je spustitelná ve virtuálním stroji ActionScriptu. Výsledek této £innosti op¥t m·ºe být SWF soubor, který je spustitelný v Adobe Flash Player. To p°iná²í moºnost vyuºití existujících °e²ení, která by za normálních okolností nebylo moºno pouºít ve webovém rozhraní. 3.1.1.2 SVG SVG (Scalable Vector Graphics) je gracký vektorový formát zaloºený na zna£kovacím jazyce XML. Podpora SVG je v dne²ní dob¥ ve v²ech moderních webových prohlíºe£ích. SVG v²ak dokáºe, krom¥ vykreslování statických vektorových obrázk·, vykreslovat i animace a detekovat události. Velkou výhodou SVG je, ºe je zaloºen na XML. Tato skute£nost umoº¬uje klientskému prohlíºe£i vytvá°et z tohoto souboru DOM (Document Object Model) a pak s ním dále pracovat. To mimo jiné znamená, ºe pomocí skriptovacího jazyka JavaScript m·ºeme p°istupovat k jednotlivým grackým £ástem a jednodu²e m¥nit jejich atributy nebo jejich vzhled pomocí CSS (Cascading Style Sheets). Jelikoº je soubor SVG ve form¥ textového °et¥zce, netrpí n¥kterými nedostatky ze strany p°ístupnosti webové prezentace. Prohlíºe£ totiº dokáºe tento text jednodu²e p°e£íst a správn¥ jej reprezentovat, coº neplatí u ostatních zmín¥ných technologií. 3.1.1.3 HTML 5 canvas Specikace zna£kovacího jazyka HTML od verze 5 obsahuje element canvas, který p°edstavuje kreslící plochu. Ve specikaci je denováno JavaScriptové aplika£ní rozhraní, které poskytuje funkce pro vykreslování grackých primitiv. Kreslení na canvas probíhá pomocí kontext·. Ve specikaci je denován 2D kontext, který umoº¬uje vytvá°et rovinné vizualizace. Dále pak 3D kontext, který dokáºe vykreslit trojrozm¥rnou scénu s vyuºitím hardwarové akcelerace gracké karty a standardu OpenGL. Do budoucna se hovo°í i o hardwarové akceleraci 2D kontextu, coº by vedlo k markantnímu zrychlení vykreslování n¥kterých prezentací. Na rozdíl od formátu SVG dochází p°i vykreslování graky na tuto plochu k rasterizaci. To znamená, ºe zde nelze vyuºít p°íjemných vlastností vektorové graky. Na druhou stranu dokáºe canvas pracovat s jednotlivými pixely, coº dovoluje pouºití r·zných ltr·. 22 KAPITOLA 3. ANALÝZA A NÁVRH EENÍ 3.1.1.4 Java applet Applet je program napsaný v programovacím jazyku Java, který m·ºe být spu²t¥n na stran¥ klienta p°ímo v jeho webovém prohlíºe£i. Zp·sob vykreslení je tedy dán samotným programem a není omezen ºádnou webovou specikací. Klient ode²le HTTP poºadavek na server, který mu vrátí standardní HTML stránku, ve které se nachází tag s názvem applet. Parametry tagu °íkají, na jaké adrese je daný applet uloºen. Umoº¬uje-li prohlíºe£ pouºít program Java applet, stáhne jej a spustí pomocí Java Virtual Machine. Náhled okna programu je pak integrován na webové stránce na místo tagu applet. Výhodou je roz²í°enost programovacího jazyku Java, pro který existuje mnoho knihoven a jiº hotových °e²ení. Za nevýhodu se dá povaºovat chyb¥jící interakce aplikace se zbytkem stránky, protoºe o na£ítání dat se musí postarat daná aplikace. Pomalé spou²t¥ní applet· je dal²ím mínusem. 3.1.1.5 Generovaní obrázku Dal²í moºností je generovat obrázek notového zápisu na serveru a spolu s vytvo°enou skladbou jej poslat klientovi. V této form¥ si uºivatel m·ºe soubory stáhnout. Popisované °e²ení se technologicky podobá °e²ení v kapitole ABC convertor 2.1.4. Tento zp·sob bohuºel neodpovídá poºadavk·m na zobrazování pr·b¥hu skladby. 3.1.2 P°ehrávací technologie SMF soubory svou strukturou odpovídají notovému zápisu, a proto je pom¥rn¥ snadné z uºivatelského vstupu vytvo°it odpovídající hudební soubor v tomto formátu. Posléze je moºné vygenerovat vzorkovaný hudební soubor, který obsahuje stejnou zvukovou informaci jako v p°ípad¥ souboru SMF, av²ak z jeho vnit°ní struktury se jiº p°esný notový zápis získat nedá. S p°íchodem HTML 5 se objevil i tag audio, který umoº¬uje p°ehrávat vzorkované audio formáty p°ímo v klientském prohlíºe£i bez pouºití dodate£ných zásuvných modul·. Specikace HTML 5 audio popisuje podporu formát· MP3, WAV £i OGG ve webovém prohlíºe£i. Ale ne v²echny prohlíºe£e podporují v²echny tyto formáty zárove¬. Jednou z moºností je vytvo°enou skladbu ve formátu MIDI konvertovat do vý²e zmín¥ného vzorkovaného audio formátu. Výhodou tohoto p°ístupu je fakt, ºe by uºivatel nebyl nucen mít ve svém prohlíºe£i zásuvné moduly umoº¬ující p°ehrání tohoto souboru. Nevýhodou v²ak z·stává nutnost p°evedení skladby do jiného formátu, coº nemusí být triviální záleºitost. Druhou moºností je p°ehrát p°ímo SMF soubor. Moºnosti p°ehrání tohoto formátu ve webovém prohlíºe£i jsou popsány dále v této kapitole. 3.1.2.1 P°ehrávání SMF soubor· P°ed p°íchodem HTML 5 slouºila k p°ehrávání hudebních soubor· ve webovém rozhraní p°eváºn¥ technologie Flash. Tato funkcionalita byla zaji²t¥na pomocí programovacího jazyka ActionScript. Podpora p°ehrávání SMF soubor· se do specikace HTML 5 audio zatím 3.2. POADAVKY NA POUITOU TECHNOLOGII 23 nedostala. Jednou z moºností je tedy pouºití technologie Flash. Druhou principieln¥ podobnou moºností je Java Applet. Ob¥ technologie mají spole£né to, ºe nejsou interpretovány v prohlíºe£i, ale v n¥jakém externím prost°edí na klientském stroji. T°etím p°ípadem je pouºití zásuvných modul· prohlíºe£e. Problémem je, ºe se nem·ºeme spolehnout na jejich p°ítomnost v klientském prohlíºe£i. Eventualitou je uºivatele upozornit, ºe pro správný chod aplikace je nutné mít nainstalovaný konkrétní modul pro daný prohlíºe£. tvrtou a poslední zmín¥nou technologií je Audio Data API. 3.1.2.2 Audio Data API Poté co vnikla samotná specikace HTML 5 audio, se vývojá°i za£ali doºadovat roz²í°ených moºností interakce s audio soubory. Audio data API je roz²í°ení specikace HTML 5 audio, které umoº¬uje analyzovat vzorky p°ehrávaného zvuku, reagovat na ur£ité události a manipulovat s pr·b¥hem p°ehrávání [2]. To v²echno v £ase p°ehrávání skladby. Audio Data API je tedy JavaScriptové aplika£ní rozhraní pro práci s tokem audio dat. Toto roz²í°ení se nedostalo do samotné specikace, a tím pádem není normalizováno. S tímto rozhraním p°i²la skupina Mozilla a implementovala jej ve vykreslovacím jádru Gecko, které je pouºito v prohlíºe£i Firefox. Podobné rozhraní implementoval i Google ve svém prohlíºe£i. Problémem z·stává, ºe ostatní pouºívané prohlíºe£e tuto funkcionalitu neumoº¬ují a pravd¥podobn¥ ani nebudou, dokud se nestane sou£ástí standardu. 3.2 Poºadavky na pouºitou technologii Zde shrnu poºadavky na výb¥r technologie pouºité ve vytvá°ené aplikaci. • Jednoduchý zp·sob vykreslování Z hlediska roz²i°itelnosti aplikace je d·leºité, aby vykreslovací API bylo jednoduché a zárove¬ komplexní. Tyto p°edpoklady jsou d·leºité pro dal²í údrºbu aplikace. • Efektivní vykreslovací funkce Je d·leºité, aby technologie umoº¬ovala vykreslení velké ²kály grackých primitiv, ze kterých je moºné poskládat sloºit¥j²í obrazce. Zobrazování by m¥lo být natolik rychlé, aby se ve vykreslovacím cyklu dala animovat daná prezentace. Animováním se rozumí dosaºení dostate£n¥ velkého po£tu snímk· za vte°inu. • iroká podpora ve webových prohlíºe£ích Toto kriterium je d·leºité p°edev²ím pro uºivatele aplikace. Volba správné technologie nám m·ºe pomoci p°i zaji²t¥ní p°ístupnosti vytvá°ené aplikace. 3.2.1 Výb¥r technologie Jako zobrazovací technologii jsem pro svou aplikaci vybral práv¥ HTML 5 canvas. Tato technologie sice není podporována ve v²ech prohlíºe£ích, nicmén¥ je pom¥rn¥ nová a dá se o£ekávat stále se zv¥t²ující podpora tohoto standardu. Výb¥r mi také usnadnila osobní záliba 24 KAPITOLA 3. ANALÝZA A NÁVRH EENÍ programovacího jazyka JavaScript. Tento jazyk za£íná být stále populárn¥j²í a to nejen jako klientský jazyk. V sou£asné dob¥ se jeho pouºití roz²i°uje i na server. Dále se tento jazyk pouºívá v n¥kterých desktopových aplikacích jako dopl¬ující skriptovací jazyk. Motivací pro mne bylo prohloubení znalostí této technologie. 3.3 Návrh aplikace Návrh °e²ení aplikace jsem rozd¥lil do n¥kolika logických blok·. V této kapitole popisuji hrubou strukturu aplikace a jednotlivé kroky nutné k dosaºení cíl· aplikace. Aplikace se má chovat jako nezávislý modul. Je ºádoucí, aby se vytvo°ená aplikace dala distribuovat na r·zné webové portály a byla kompatibilní s tímto prost°edím. Administrátor jednoho portálu by cht¥l vyuºít pouze zobrazovací £ást, kdy vstupní data poskytuje pouze administrátor a na jiných stránkách by bylo ºádoucí, aby vstup do aplikace vytvá°eli uºivatelé t¥chto stránek. Aplikace tedy musí být nezávislá na zdroji vstupních dat. 3.3.1 Rozpoznání vstupu Aplikace pro svou £innost pot°ebuje zpracovat vstupní textový °et¥zec a zkontrolovat zda vyhovuje ur£itým kriteriím. V p°ípad¥, ºe je vstupní °et¥zec ve správné form¥, dojde k vygenerování vnit°ní struktury reprezentující notový zápis. 3.3.2 Zobrazení K dosaºení správného vykreslení notového zápisu musí být zaji²t¥na kontrola podmínek denující pravidla sazby not. Tyto podmínky jsou popsány v podkapitole 2.3 u jednotlivých hudebních entit. Dal²ím krokem je správné umíst¥ní grackých zna£ek daných entit. Protoºe jsou n¥které entity svojí pozicí závislé na ostatních, musí být nezávislé entity umíst¥ny jako první. Aplikace na základ¥ vnit°ní struktury vykreslí jednotlivé entity. Po°adí vykreslování jednotlivých entit musí být v n¥kterých p°ípadech specikováno. Jelikoº canvas nepodporuje vykreslení více vrstev, na daném míst¥ se zobrazí naposledy vykreslený obrazec. Nap°íklad taktové £áry by m¥ly být, kv·li p°ekrývání, vykresleny d°íve neº ostatní entity na notové osnov¥. Vykreslování by nem¥lo být p°íli² náro£né na výpo£etní systém. Proto je ºádoucí, aby byla ve vykreslovacím cyklu v²echna data kompletní a nebylo pot°eba znovu po£ítat n¥která data, která jsou nutná k vykreslení. Efektivita samotných vykreslovacích funkcí je krom¥ toho dána pouºitou technologií. 3.3.3 P°ehrávání Aplikace p°ehraje uºivatelem zapsanou skladbu. M·ºe zde v²ak nastat problém synchronizace p°ehrávané skladby a animace, zobrazující, která £ást skladby se práv¥ p°ehrává. Oba mechanismy mají stejné £asování na základ¥ zadaného tempa skladby. Ov²em m·ºe nastat situace, kdy hudební soubor není na klientském stroji pln¥ na£tený a jeho p°ehrávání bude 3.4. FUNKNÍ OMEZENÍ 25 opoºd¥no oproti zobrazování pr·b¥hu. Je tedy nutné o²et°it p°ípady, kdy se jeden z t¥chto mechanism· m·ºe opozdit oproti druhému. 3.4 Funk£ní omezení Jelikoº aplikace vyºaduje jako vstup textový °et¥zec, je nutné, aby byla p°ipravena na neo£ekávané vstupy. U £íselných údaj· je ºádoucí, aby daná vlastnost byla omezena minimální a maximální hodnotou. Délky not a pomlk jsou omezeny jednou ²edesáti-£tvrtinou. Tato délka not se tém¥° nevyuºívá a v praxi je zbyte£né podporovat noty krat²í délky. Maximální tempo skladby jsem stanovil na 300 BMP. Reáln¥ nejrychlej²í skladby dosahují rychlostí okolo 200 BPM. Ze vztahu 2.1 vyplývá, ºe nejkrat²í povolená nota bude p°i maximálním tempu znít po dobu 12,5 ms. P°i animování pr·b¥hu p°ehrávané skladby je nutné po£ítat i s t¥mito krajními p°ípady. Zmín¥ný £asový interval, kdy bude p°ehrávaná nota zvýrazn¥na, je pro lidské oko nepost°ehnutelný. Maximální rychlost animace proto omezím na 50 snímk· za sekundu. 3.5 Poºadavky na syntaxi P°i analýze syntaxe vstupního °et¥zce jsem vytvo°il kritéria hodnocení, podle kterých výb¥r jazyka, ur£eného k zápisu vstupních dat, probíhal. • Korespondence syntaxe a skute£ného notového zápisu Poºadovaná syntaxe by m¥la brát v úvahu pravidla skute£ného notopisu. V p°ípad¥, ºe tento p°edpoklad bude spln¥n, bude syntaxe pro hudebníky intuitivn¥j²í a rychlej²í na nau£ení. Syntaxe by m¥la obsahovat co moºná nejmen²í mnoºství meta dat a systémových p°íkaz·, které nemají pro hudební zápis ºádný význam. • Malá míra verbalismu Toto kriterium poºaduje, aby byla daná skute£nost reprezentována co nejmen²ím po£tem znak·. Ale zmen²ením po£tu znak· p°es ur£itou mez, by syntaxi mohlo znep°ehlednit. D·leºité proto je, aby tato mez nebyla p°ekro£ena a bylo dosaºeno kompromisu po£tu znak· a intuitivního p°ehledného zápisu. Kompromisu m·ºe být dosaºeno nap°íklad pomocí systému alias·, kdy jedna skute£nost m·ºe být zapsána více zp·soby. Jednalo by se nap°íklad o dv¥ verze textových °et¥zc· reprezentujících stejnou skute£nost. Odborník, který daný jazyk pouºívá, by mohl pouºívat zkrácené varianty klí£ových slov, zatímco nový uºivatel by ocenil, ºe klí£ové slovo je srozumitelné. • Roz²i°itelnost Syntaxe by m¥la být exibilní k p°ípadným zm¥nám. Jazyk by se tak mohl p°izp·sobit speciálním poºadavk·m ur£itých exotických hudebních zápis·, na které syntax v této chvíli není p°ipravena. 26 3.6 KAPITOLA 3. ANALÝZA A NÁVRH EENÍ Shrnutí Z vý²e uvedených kriterií vyplývá, ºe MusicTeX syntax není ideální syntaxí pro vstup aplika£ních dat. MusicTeX makra mají své opodstatn¥ní vzhledem k programu TeX, nicmén¥ vzhledem k vytvá°ené aplikaci nevyhovuje prvnímu kritériu. Podobn¥ je na tom formát MusicXML, který vyuºívá velkého po£tu znak· a jeho struktura nekoresponduje s notovým zápisem. ABC notace má n¥které zajímavé prvky, jako je nap°íklad provázanost struktury textu a notového zápisu. Takto striktní provázání v²ak p°iná²í omezení moºnosti sazby n¥kterých hudebních entit. ABC syntaxe nap°íklad lpí na tom, aby mezery byly pouze tam, kde noty nejsou spojeny trámci a konce °ádku tam, kde skute£n¥ kon£í notová osnova. Uºivatel si tedy nem·ºe vstupní text zp°ehlednit p°ípadnými mezerami. ABC syntaxe se zam¥°uje na skute£n¥ nejmen²í míru verbalismu. Ale v n¥kterých p°ípadech je tato snaha kontraproduktivní, protoºe vede ke znep°ehledn¥ní sloºit¥j²ích zápis·. V²echny vý²e zmín¥né formáty mají pro ú£ely vstupního formátu aplikace n¥které nedostatky. Proto vytvo°ím syntaxi uzp·sobenou na míru této aplikace. ABC syntaxe mi poslouºí v mnoha ohledech jako inspirace pro vytvo°ení vhodné syntaxe. Kapitola 4 Realizace Vytvá°enou aplikaci jsem pojmenoval pdDots. Název syntaxe jsem odvodil z názvu aplikace, tedy pdSyntax. innost aplikace jsem rozd¥lil na £ást serverovou a klientskou. V této kapitole popí²i funkcionalitu obou £ástí se zam¥°ením na nestandardní °e²ení, která byla vyuºita v aplikaci pdDots. Jedná se p°edev²ím o n¥které problémy sazby not, jejichº °e²ení není jednozna£né. Dal²í £ástí této kapitoly je popis vlastností vytvo°ené syntaxe a n¥které ukázky zápisu. 4.1 Implementace klientské £ásti Klientská £ást °e²í zobrazování notového zápisu v uºivatelském prohlíºe£i a p°ehrávání této skladby. Jako programovací jazyk na stran¥ klienta je pouºit jazyk JavaScript. Klientskou £ást aplikace jsem rozd¥lil do vrstev zobrazených na obrázku 4.1. Díl£í vrstvy postupn¥ zpracovávají vstupní data a vypo£ítávají r·zné parametry hudebních entit. Jednotlivé hudební entity jsou reprezentovány t°ídami. Zodpov¥dnosti t¥chto t°íd jsou popsány níºe. Obrázek znázor¬uje rozd¥lení klientské aplikace do jednotlivých vrstev. Vrstva rozpoznávání textového vstupu je reprezentována t°ídou Parser. Tato t°ída zpracuje vstupní °et¥zec, vygeneruje a navrátí kontejner t°ídy Song. Kontejner obsahuje seznam jednotlivých hlas·, které jsou sloºeny z proudu hudebních entit. Mimo to objekt t°ídy Song uchovává data zadaná v hlavi£ce pdSyntax. Vrstva Semantics má za úkol hudebním entitám p°id¥lit informace, které jsou nutné v dal²ích vrstvách a zárove¬ nebyly p°ístupné v dob¥ zpracovávání textového °et¥zce. P°íkladem m·ºe být kalkulace velikosti odsazení jednotlivých not. Ur£ení v²ech podmínek vyºaduje kompletní informace o dané not¥. T°etí vrstvou je vrstva Timer, která se stará o p°id¥lení absolutního £asu kaºdé entit¥. Jelikoº kaºdý takt m·ºe mít nastavené jiné metrum, je nutné postupn¥ nastavit £as jednotlivým takt·m. Soub¥ºné takty budou mít samoz°ejm¥ nastavený stejný £as. Aº podle absolutního £asu, kdy je takt aktivní, je moºné nastavit £asovou hodnotu entitám v tomto taktu. Následující vrstvu reprezentuje t°ída Transform, která se stará o správné umíst¥ní hudebních entit a notových osnov. N¥které závislé atributy lze vypo£ítat aº poté, co jsou umíst¥ny v²echny nezávislé entity. Nap°íklad pozicování trámc· vyºaduje, aby byly známy pozice v²ech 27 28 KAPITOLA 4. REALIZACE Parser Semantics Timer Transform Drawer Obrázek 4.1: Vrstvy applikace pdDots. trámcovaných not. Proto musí být vrstva Transform rozd¥lena do n¥kolika men²ích vrstev, které pracují ve striktním po°adí. N¥které z pouºitých algoritm· jsou detailn¥ji popsány v kapitole 4.1.5. Funkcí poslední vrstvy je vykreslování notové osnovy. T°ída Drawer p°edpokládá, ºe jsou p°ijaté entity p°ipravené k vykreslení a za£ne je vykreslovat. Vnit°ní reprezentace dat v aplikaci pdDots je popsána v následující podkapitole. 4.1.1 Struktura datového modelu Kaºdá hudební entita je reprezentována t°ídou, která d¥dí n¥které vlastnosti od t°ídy hudební entity. Tento stav znázor¬uje obrázek 4.2. Parametry t°íd v tomto modelu z velké £ásti odpovídají parametr·m popsaných v kapitole 2.3. Krom¥ t°íd samotných entit se v aplikaci vyskytují n¥které t°ídy, které prostupují celou aplikací a nelze je za°adit do konkrétní vrstvy. U t¥chto t°íd je ºádoucí, aby byla v aplikaci vºdy pouze jedna instance1 . 4.1.1.1 StaManager T°ída StaffManager se stará o p°id¥lování notových osnov entitám. Kaºdá entita je totiº svou pozicí závislá na °ádku notové osnovy. 4.1.1.2 Song T°ída Song obsahuje strukturu vnit°ních dat. Obsahuje hodnoty v²ech atribut· z hlavi£ky formátu pdSyntax a seznam pouºitých hlas·. Hlas dále obsahuje v²echny díl£í entity. 1 Instance t°ídy je konkrétní datový objekt v pam¥ti, který byl vytvo°en podle ur£itého vzoru (t°ídy). 4.1. 29 IMPLEMENTACE KLIENTSKÉ ÁSTI Diagram: Domain Objects class Domain Obj ects Pomlka HudebniEntita délka - - Klíč Hlas čas odsazení pozice velikost název - - obsahuje 1..* typ 1 1 Nota - Funkce číslo oktávy délka výška 1 - parametetry typ Song - obsahuje autor metrum název skladby předznamenání tempo Trámec modifikuje 0..* 1 Modifikator - BarLine typ - type Staff / obsahuje 1..* +Následující takt +Předchozí takt 1 - délka odsazení pozice Souběžný takt Obrázek 4.2: Ukázka struktury datového modelu. 4.1.1.3 ErrorLog ErrorLog je t°ída, která se stará o notikaci chybových stav· aplikace. Jedná se p°edev²ím o syntaktické chyby, kterých se uºivatel m·ºe dopustit v pr·b¥hu vytvá°ení skladby. Rozli²ujeme dva typy událostí, varování a kritickou chybu. Varování nastane v p°ípad¥, kdy se aplikace dokáºe z nestandardního stavu vzpamatovat. Chyba je stav, kdy aplikace nepokra£uje ve svém chodu. V obou situacích je uºivatel upozorn¥n a je mu poskytnuto doporu£ení, jak se neºádoucímu stavu vyhnout. Ukazatel na objekt t°ídy ErrorLog je globální, coº umoº¬uje zbytku aplikace p°istupovat k tomuto objektu odkudkoliv. 4.1.2 Vrstva Parser T°ída Parser musí jednozna£n¥ ur£it díl£í entity a p°id¥lit jim iniciální stav. Dal²í zodpov¥dností této t°ídy je p°id¥lit entitám n¥která dodate£ná data. Niº²í vrstvy pot°ebují znát data, za jejichº po°ízení jsou zodpov¥dné vy²²í vrstvy. Zodpov¥dnosti vrstev Parser a Semantics se £áste£n¥ p°ekrývají, av²ak jsou logicky rozd¥leny podle toho, zda je nutné znát celou strukturu dokumentu nebo pouze rozpoznávané lokální okolí. P°íkladem m·ºe být spojení not trámci pomocí operátoru. Noty propojené trámci jsou vzájemn¥ spojeny ukazatelem a tvo°í tak spojový seznam. Trámec v aplikaci pdDots nemá vlastní t°ídu, a tudíº se nep°ená²í do dal²ích vrstev. Z tohoto d·vodu se struktura tvo°í jiº ve t°íd¥ Parser. V opa£ném p°ípad¥, kdy spojení dlouhého bloku not trámcem probíhá pomocí 30 KAPITOLA 4. REALIZACE funkce2 , se daná struktura vytvá°í práv¥ ve vrstv¥ Semantics. P°i zavedení nové entity je nutné p°izp·sobit t°ídu Parser tak, aby dokázala rozeznat její textovou reprezentaci. Pro jednoduché entity sta£í p°idat do t°ídy Parser následující blok kódu a odpovídající metody pro analyzování vstupního slova a vytvá°ení p°íslu²ného objektu. if(this.isRest(word)){ entity = this.buildRest(word); } 4.1.3 Vrstva Semantics Ve vrstv¥ Semantics je podobn¥, jako v ostatních vrstvách pouºit jednotný zp·sob volání ur£ité metody. JavaScript neobsahuje ºádný mechanismus, který donutí danou t°ídu implementovat metodu ur£itého rozhraní. V p°ípad¥ roz²í°ení aplikace o dal²í hudební entity není nezbytn¥ nutné upravovat jednotlivé vrstvy, sta£í pouze, aby entita implementovala tyto univerzální funkce. for(var i = 0; i < voice.getLength(); i++){ var entity = voice.getEntity(i); // Ov¥°í existenci jak prototypových tak instan£ních metod if(entity.prepare && typeof entity.prepare == 'function'){ entity.prepare(); } ... 4.1.4 Vrstva Timer Aplikace negeneruje takty automaticky v závislosti na délce trvání zadaných entit a nutí uºivatele, aby takty odd¥loval sám. Výhodou této skute£nosti je, ºe má uºivatel v rukou komplexn¥j²í nástroj, který je zárove¬ odoln¥j²í k chybám. Chyba v jednom taktu se nedistribuuje skrz celou skladbu. Na druhou stranu m·ºe nastat pom¥rn¥ £astý p°ípad, kdy délka trvání v²ech not v taktu je del²í neº celý takt. To v praxi znamená, ºe hudebník nestihne tuto notu zahrát a je v hudebním zápise zbyte£ná. Aplikace dovolí uºivateli do tohoto stavu dojít, av²ak vygeneruje varování, aby uºivatel mohl zareagovat a p°ípadnou chybu odstranit. 4.1.5 Vrstva Transform Ve vrstv¥ Transform je ur£ena pozice hudebních entit. Vrstva se zárove¬ stará o p°id¥lování a umís´ování °ádk· notové osnovy. N¥které z algoritm· t¥chto £inností jsou popsány v této podkapitole. 2 Jedná se o konstrukce jazyka pdDots. Funkce jsou popsány dále v této kapitole. 4.1. IMPLEMENTACE KLIENTSKÉ ÁSTI 31 4.1.5.1 Ur£ení pozice noty Rozhodování o horizontálním umíst¥ní not bude probíhat algoritmicky. U skladeb jedné notové osnovy bude umís´ování jednotlivých not probíhat na základ¥ t¥chto parametr·: • Pozice p°edchozí noty, • modikátory, • délka noty, • trámcování. Kaºdá nota má ve výchozím stavu nastavené odsazení na levé i pravé stran¥. Realizace umis´ování noty vychází z modikace parametru odsazení. Umís´ování hudebních entit se provádí sériov¥. Pro zji²t¥ní pozice noty je nutné znát pozici p°edchozí hudební entity, od které se spolu s údajem odsazení odvíjí pozice aktuální noty. Modikátory v tomto kontextu rozumíme posuvky, te£ky a jiné hudební entity, které modikují chování jednotlivých not. Protoºe se tyto zna£ky nesm¥jí p°ekrývat, je nutné dané not¥ alokovat více místa na notové osnov¥. Zm¥na odsazení odpovídá gracké ²í°ce t¥chto modikátor·. U not r·zných délek se mezery mezi nimi li²í. Noty, které jsou krat²í, mají men²í mezery, a tak se jich vejde více do takt·, které mají xní £asovou délku. Podobn¥ pak noty, které jsou spojeny trámci a tvo°í tak logické celky, mají mezi sebou zmen²ené mezery. Odsazení je v tomto p°ípad¥ procentueln¥ zredukováno. V p°ípad¥ polyfonních skladeb probíhá pozicování na základ¥ vý²e zmín¥ných pravidel pro umíst¥ní not v jedné notové osnov¥, ale s tím rozdílem, ºe p°i umis´ování hraje roli £as pr·b¥hu daného tónu. Polyfonní skladby mají více soub¥ºných takt·, a proto je d·leºité nazna£it, ºe se soub¥ºné noty hrají ve stejný £as v rámci taktu. K t¥mto pravidl·m je nutné zahrnout je²t¥ £as a ur£it pozici p°eváºn¥ podle n¥j. 4.1.5.2 Ur£ení pozice trámce U trámc· není p°esn¥ denováno jak je umis´ovat. Popis kreslení trámc· popsaný v sekci 2.3.11 není dosta£ující. Mohou nastat p°ípady, kdy pouhým spojením první a poslední noty poru²íme n¥které zásady. Zp·sob, jaký je pouºit v aplikaci pdDots, vychází z ur£ení stavu s nejmen²ím po£tem neºádoucích jev·. Iniciální stav je vypo£ten z pr·m¥rné zm¥ny postavení jednotlivých not. Z tohoto stavu je vytvo°ena p°ímka, na kterou se posléze napojí noºi£ky v²ech spojovaných not. V p°ípad¥ velké strmosti p°ímky musí být p°ímka modikována. Podobn¥ je p°ímku nutné narovnat do horizontální polohy v p°ípad¥, kdy posloupnost pozic not je na jedné £ásti intervalu klesající a na druhé stoupající. Po ustanovení sklonu p°ímky jsou cyklicky testovány r·zné stavy v závislosti na posunutí p°ímky. T¥mto stav·m je p°i°azován koecient, který °íká, jak moc je pouºitelný daný stav. Výpo£et je kv·li optimalizaci omezen n¥kolika pr·b¥hy, aby se nepo£ítaly situace, které o£ividn¥ budou mít p°íli² velký koecient. Na konci pr·b¥hu tohoto algoritmu se vyhledá stav s minimálním koecientem a pouºije se pro nastavení parametr· trámce. 32 KAPITOLA 4. REALIZACE 4.1.5.3 Ur£ení konce °ádku V notovém zápise je nutné, aby na kaºdém °ádku notové osnovy kon£il takt. Jinými slovy, aby poslední takt na °ádku notové osnovy nep°etékal do dal²ího °ádku. Proto je d·leºité nastavit ²í°ku jednotlivých takt· tak, aby obsadily celý °ádek. V n¥kterých skladbách se zárove¬ takty jedné notové osnovy, které jsou pod sebou, kreslí stejn¥ ²iroké. Toto pravidlo v²ak nelze pouºít pro v²echny skladby, a proto jeho implementace není moºná v globálním m¥°ítku. V aplikaci pdDots toto kritérium nebylo implementováno. í°ka jednotlivých takt· je závislá na ²í°ce obsahu. Pozice obsaºených entit je naopak závislá na pozici taktu. Kaºdá entita má parametr udávající odsazení od ostatních entit, které je modikováno v závislosti na vnit°ním stavu dané entity. V prvním kroku algoritmu je se£tena ²í°ka a odsazení jednotlivých entit. Tato hodnota reprezentuje minimální ²í°ku taktu. Minimální ²í°ka je po£ítána pro v²echny soub¥ºné takty zvlá²´, ale je uloºena pouze nejv¥t²í z nich. Takty se poté skládají na notovou osnovu tak dlouho, dokud jejich ²í°ka není v¥t²í neº °ádek notové osnovy. V tomto p°ípad¥ se odebere poslední takt, který zap°í£il p°echod na dal²í °ádek. Pro zbylé takty je vypo£tena celková minimální ²í°ka, která v pom¥ru ²í°ky notové osnovy udává koecient roz²í°ení takt·. Skute£nou ²í°ku taktu dostaneme násobkem tohoto koecientu a minimální ²í°ky taktu. Roz²í°ené takty pasují p°esn¥ na ²í°ku °ádku notové osnovy a nedochází tak ke zmen²ení takt· pod jejich p°ípustnou hranici a zmen²ení mezer mezi notami. Av²ak v teoretickém p°ípad¥ velice dlouhého taktu p°es celou notovou osnovu m·ºe docházet k t¥snému postavení not v tomto taktu. P°i zji²´ování pozice °ádk· notové osnovy m·ºe nastat p°ípad, kdy je n¥jaká nota umíst¥na v takové pozici, kdy je nutné, aby bylo pro celý °ádek vymezeno více prostoru. Umís´ování díl£ích °ádk· notové osnovy je tedy, podobn¥ jako v p°ípad¥ takt·, závislé na jejich obsahu. 4.1.6 Vrstva Drawer Aplikace obsahuje globální metody pro snadn¥j²í pouºití vykreslení n¥kterých grackých primitiv, jako je nap°íklad úse£ka £i kruh. T°ídy jednotlivých entit implementují metodu kreslení svým vlastním zp·sobem, ale v²echny by m¥ly dodrºovat stanovené rozhraní. V jazyce JavaScript není mechanismus abstraktních t°íd a nelze donutit potomky t°ídy, aby implementovali ur£ité rozhraní. Metoda kreslení jako parametr vyºaduje ukazatel na kreslící kontext elementu canvas. Druhým parametrem je barva vykreslované entity. Zm¥na barvy noty m·ºe slouºit jako zvýrazn¥ní. 4.1.6.1 Kontext vykreslovacího plátna canvas Kontext vykreslovacího plátna canvas si uchovává zásobník nastavených stav·. Stav kontextu se skládá nap°íklad z: • Transforma£ní matice, • pozice bodu, kde skon£ilo p°edchozí vykreslení, 4.1. IMPLEMENTACE KLIENTSKÉ ÁSTI 33 • hodnoty n¥kterých atribut·. Transforma£ní matice obsahuje informace o rotaci, translaci a zm¥n¥ m¥°ítka bod· vykreslovaného obsahu. Atributy stavu jsou nap°íklad barva £áry a výpln¥, font, pr·hlednost £i nastavení stín·. Objekt context obsahuje metodu save, která dokáºe uchovat sou£asný stav na vrchol zásobníku. K obnov¥ p°edchozího stavu ze zásobníku slouºí metoda restore[9]. V²echny moderní prohlíºe£e podporují 2d kontext elementu canvas. Prohlíºe£e, ve kterých testování funk£nosti probíhalo, jsou uvedeny v kapitole 5.1. 4.1.6.2 Vykreslování entit Aplikace pdDots vykresluje entity pomocí vektorových dat. Vlastností elementu HTML5 canvas je, ºe p°i vykreslování dochází k rasterizaci. Pouºití bitmapových formát· by vedlo k omezení kvality vykreslovaného obrazu. Za t¥chto okolností by p°i detailním náhledu byla patrná úrove¬ detailu zdrojové bitmapy. Canvas API v²ak, krom¥ moºnosti vykreslování bitmapových obrázk·, poskytuje rozhraní pro vykreslování vektorových k°ivek. P°i zv¥t²eném vykreslovacím plátn¥ by v²ak, i s pouºitím vektorových dat, byly vid¥t jednotlivé pixely rasterizované k°ivky. V p°ípad¥ vektorových dat lze v²ak p°iblíºené plátno znovu p°ekreslit s v¥t²í úrovní detailu. Výsledek této operace se rasterizuje, coº vede k zachování kvality p°i zv¥t²eném detailu zobrazované skute£nosti. Jednoduché tvary, jako jsou úse£ky, obdélníky £i elipsy, jsou vykresleny pomocí odpovídajících p°íkaz· v HTML5 canvas API. Sloºit¥j²í tvary jako houslový klí£ £i hlavi£ka noty jsou vykreslovány pomocí Bézierových k°ivek t°etího °ádu. Aplika£ní rozhraní umoº¬uje tyto k°ivky kreslit a uzav°ené tvary vyplnit nastavenou barvou. Kubická Bézierova k°ivka je aproxima£ní k°ivka vyjád°ena £ty°mi body. Prvním a posledním bodem jsou koncové body, kterými k°ivka prochází. Druhým a t°etím bodem jsou kontrolní body, které p°itahují ur£itou váhou k°ivku k sob¥[8]. Na obrázku je znázorn¥na Bézierova k°ivka s t¥mito body. Klasické Bézierovy k°ivky, na rozdíl od racionálních, mají váhu jednotlivých bod· ur£enou £íslem jedna. Popis matematického modelu Bézierových k°ivek není sou£ástí této práce. 4.1.7 P°ehrávání K p°ehrávání skladby ve form¥ SMF souboru ve webovém prohlíºe£i lze pouºít JavaScriptovou knihovnu Jasmid. Tato knihovna vyuºívá Audio Data API v prohlíºe£ích, které toto roz²í°ení umoº¬ují. Sou£ástí knihovny je skript napsaný v jazyce ActionScript, který umoºní p°ehrávání skladby v prohlíºe£ích, které nepodporují vý²e zmín¥nou technologii. Alternativou této knihovny je knihovna MIDI.js, která obdobn¥ jako Jasmid umoº¬uje p°ehrávat SMF soubory. MIDI.js dokáºe £íst strukturu SMF souboru, ze kterého vytvo°í hudební tok dat, který následn¥ p°ehrává. Podle podpory pouºitého prohlíºe£e se k p°ehrávání pouºije Flash, HTML 5 nebo Audio Data API. Knihovna dokonce umoº¬uje pouºití r·zných hudebních font·, které denují nástroj p°ehrávané skladby. MIDI.js obsahuje i JavaScriptové rozhraní pro generování tón·. 34 KAPITOLA 4. REALIZACE 4.1.7.1 Srovnání knihoven Nevýhodou knihovny Jasmid je, ºe syntetizovaný zvuk nedosahuje takových kvalit, jako v p°ípad¥ p°ehrání souboru v n¥kterém z desktopových p°ehráva£·. V n¥kterých prohlíºe£ích se jednotlivé tóny vygenerované hudby p°edbíhají. MIDI.js oproti tomu dokáºe vytvo°it velice kvalitní zvuk, ale vzhledem k tomu, ºe vyuºívá knihovny Jasmid pro £tení SMF soubor·, objevuje se problém synchronizace tón· i v tomto projektu. A práv¥ kv·li tomuto nedostatku jsem se rozhodl pouºít knihovnu MIDI.js a její aplika£ní rozhraní. P°ehrávané tóny tedy nebudou £teny z vygenerovaného SMF souboru a jako zdroj dat poslouºí vnit°ní stav klientské aplikace. Podpora p°ehrávání skladby v jednotlivých prohlíºe£ích je popsána v kapitole 5.1. 4.2 Implementace serverové £ásti Serverová £ást je zodpov¥dná za poskytnutí poslední verze uºivatelského vstupu v odpov¥di na klientský poºadavek. Uºivatelský vstup m·ºe být zárove¬ uloºen na serveru. Klientská £ást aplikace v²ak m·ºe být modikována do podoby nezávislé na serveru. Mezi dal²í zodpov¥dnosti serverové £ásti aplikace pat°í vytvo°ení hudebního souboru. Generování SMF souboru ze zadaného °et¥zce probíhá pomocí PHP knihovny PHP MIDI class. Knihovna dokáºe generovat binární SMF soubor a jako vstup vyºaduje textový °et¥zec ve formátu XML nebo prostého textu. Tento textový formát svou strukturou odpovídá SMF souboru a obsahuje v²echna pot°ebná data pro jeho vytvo°ení. Server, podobn¥ jako v p°ípad¥ klienta, rozpozná textový °et¥zec a vytvo°í datovou strukturu, se kterou pracuje zbytek aplikace. Informace o jednotlivých notách slouºí k vytvo°ení XML souboru, který je pouºit jako vstup vý²e zmín¥né knihovny, která vytvo°í poºadovaný hudební soubor. 4.2.1 Problém duplikace N¥které £ásti aplika£ní logiky jsou shodné pro server i klienta. Prvním °e²ením je danou logiku implementovat na obou platformách. Nevýhodou je duplikace kódu, coº m·ºe vést k problému udrºovatelnosti systému. Alternativním °e²ením je p°edávání zpráv mezi klientem a serverem. Pro ú£ely komunikace klientského JavaScriptu a serverového PHP skriptu se nabízí pouºití formátu JSON. V²echny obdobné formáty jsou zaloºeny na p°edávání textového °et¥zce, který je snadno £itelný pro ob¥ platformy. Tento formát v²ak neumoº¬uje serializovat k°íºové odkazy, které jsou nutné pro spojení entit modelu klientské aplikace. Vytvá°ení odkaz· by vyºadovalo n¥jakým zp·sobem rozpoznat serializovaná data. Tento p°ístup je ale principieln¥ podobný p·vodní my²lence rozpoznávat prvotní textový °et¥zec. Ob¥ £ásti aplikace obsahují své globální úloºi²t¥ klí£ových slov a konstant. Je neºádoucí mít tato úloºi²t¥ duplicitní. V p°ípad¥, ºe administrátor zm¥ní klí£ová slova rozpoznávaného jazyka pouze na jednom míst¥, dojde k nekonzistenci dat, která vyvolá chybu aplikace. Proto je nutné mít jeden zdroj t¥chto dat a p°edávat je mezi serverem a klientem. Jinou situací je systém rozpoznávání textového vstupu, kdy kaºdá £ást má spole£né a odli²né prvky. I p°esto, ºe serverová £ást nepot°ebuje rozpoznávat ve²keré informace, bylo nutné se smí°it s ur£itou mírou duplikace aplika£ní logiky. 4.3. STRUKTURA FORMÁTU PDSYNTAX 4.3 35 Struktura formátu pdSyntax Formát pdSyntax je sada pravidel popisujících strukturu vstupního °et¥zce. Tato syntaxe popisuje, jakým zp·sobem je t°eba formulovat vstupní data aplikace, abychom dosáhli poºadovaného výsledku. Struktura této syntaxe je popsána dále v této kapitole. 4.3.1 Hlavi£ka formátu pdSyntax Hlavi£ka obsahuje nepovinné údaje, které se vztahují k celé skladb¥. Jednotlivé parametry se zadávají ve tvaru: klí£kové slovo = parametr1 parametr2 Seznam klí£ových slov je obsaºen v p°íloze G.3. 4.3.2 T¥lo formátu pdSyntax T¥lo obsahuje denici jednotlivých hudebních entit. V této podkapitole je popsána strukturu bloku t¥la. Seznam pouºitých znak·, v£etn¥ jejich £íselné reprezentace ve standardu Unicode, je uveden v p°íloze. 4.3.2.1 Hlas Hlas v podání pdSyntax se mírn¥ li²í od hudební podstaty hlasu. M·ºe totiº být libovoln¥ dlouhý a v n¥kterých p°ípadech m·ºe slouºit jako pomocný nástroj k sazb¥ n¥kterých souzvuk· £i jiných sloºit¥j²ích konstrukcí. Hlas je moºné denovat pomocí klí£ového slova voice. Povinným parametrem je název tohoto hlasu, který se pí²e bezprost°edn¥ za denici klí£ového slova. Název se pro p°ehlednost doporu£uje psát s velkým po£áte£ním písmenem a je nutné, aby název hlasu byl unikátní a neopakoval se u jiných hlas·. Do kulatých závorek za název hlasu se pí²e denice klí£e, který se pouºije na v²ech °ádcích notové osnovy s tímto hlasem. Do závorek m·ºeme napsat dokonce denici dvou odli²ných klí£·, coº zna£í p°ípad, kdy se pro jeden hlas pouºijí dv¥ notové osnovy. V tomto p°ípad¥ je nutné dodate£n¥ denovat, který tón poslouºí jako hranice pro noty, které se mají psát na horní osnovu a které na dolní. Poslední £ástí p°íkazu jsou sloºené závorky, které uzavírají hudební entity obsaºené v tomto hlase. Ukázka struktury p°íkazu: voiceTreble(F){ . . . } Seskupením t¥chto p°íkaz· za sebe vytvo°íme dva nezávislé a soub¥ºné hlasy. Entity v t¥chto hlasech se budou hrát zárove¬. Jednotlivé hlasy je moºné skládat dohromady. V p°ípad¥, ºe chceme, aby se z hlavního hlasu v pr·b¥hu skladby odpojil jiný hlas, chvíli si ²el svou cestou a následn¥ zanikl, jedná se o pouºití sloºeného hlasu. Klí£ové slovo je totiº moºné pouºít i v t¥le jiného hlasu, av²ak po£et takt· vno°eného hlasu nesmí p°esahovat po£et zbylých takt· nad°ízeného hlasu. Hudební entity nelze sázet bez toho, aby byly obsaºeny v n¥jakém hlase. Jedná se proto o p°íkaz, který bude v t¥le skladby pouºit jako první. 36 KAPITOLA 4. REALIZACE 4.3.2.2 Takt Odd¥lování takt· se provádí obdobn¥ jako v ABC syntaxi. Taktová £ára se reprezentuje znakem svislá £ára. Taktová £ára slouºí k odd¥lení takt· a na za£átek skladby se neuvádí. Naopak entity, které nejsou ukon£eny taktovou £arou, se nevyhodnotí. Tabulka ostatních typ· taktových £ar je obsaºena v p°íloze. 4.3.2.3 Nota Prvním znakem zápisu noty je malé písmeno reprezentující vý²ku tónu nezávisle na oktáv¥. Prvním £íselným údajem je £íslo oktávy. Následující £ást °et¥zce reprezentuje délku trvání noty. Zbytek °et¥zce p°edstavuje nepovinný blok pro zápis posuvek modikující vý²ku noty. V hudební nauce se setkáváme s více r·znými zp·soby zápisu oktávy. Nap°íklad nota st°ední C je v n¥kterých zdrojích ozna£ována jako C 1 nebo C‘.3 V jiných zdrojích se vyuºívá ozna£ení C4 , protoºe na klasickém pianu s 88 klávesy se jedná o £tvrté C . Zárove¬ r·zné formáty zna£í oktávy odli²ným zp·sobem. Nap°íklad standard MIDI denuje st°ední C jako C0 a oktávy, které jsou niº²í, mají záporné £íslo aº do £ísla -5. P¥t oktáv pod st°edním C se totiº nacházejí tóny blíºící se hranici sly²itelnosti lidským uchem. Pro syntaxi pdSyntax byl pouºit stejný systém £íslování oktáv jako v p°ípad¥ standardu MIDI. Protoºe se p°edpokládá, ºe u not v jedné skladb¥ se nebude £asto m¥nit oktáva, není nutné toto £íslo zadávat pro kaºdou notu zvlá²´. Parser jazyka pdSyntax si pamatuje naposledy pouºité £íslo oktávy a pouºívá jej pro noty, u kterých není denována oktáva jiná. Stejný princip platí i pro délku not, a£koli se p°edpokládá £ast¥j²í zm¥na tohoto parametru. Délka trvání je od zbytku °et¥zce odd¥lena znakem / nebo *. V p°ípad¥ prvního znaku se jedná o podíl jedné doby a zadaného £ísla. V opa£ném p°ípad¥ se jedná o násobek. Te£ka za £íslem délky trvání reprezentuje prodlouºení tónu o polovinu jeho délky. Struktura tohoto p°íkazu je pevn¥ dána a jednotlivé bloky musí, v p°ípad¥ jejich uvedení, být v tomto po°adí. Ukázka struktury p°íkazu: c2/4.bb 4.3.2.4 Pomlka Jako textová reprezentace hudební pomlky byl vybrán znak poml£ky. Pomlky, podobn¥ jako v p°ípad¥ not, obsahují informaci o délce trvání, která se zapisuje stejn¥ jako v p°ípad¥ noty. Stejn¥ tak se p°i nevypln¥ní délky pomlky nastaví naposledy pouºitá délka. V p°ípad¥, ºe je²t¥ ºádná nastavena nebyla, pouºije se délka implicitní. Ukázka struktury p°íkazu: -/4 4.3.2.5 Posuvka Znaky posuvek se pí²í p°ímo k náleºícím notám. Zp·sob pouºití je vid¥t na ukázce textové reprezentace noty 4.3.2.3. Jedná se o notu, která se na osnov¥ s houslovým klí£em pí²e na první pomocnou linku od zdola a její tón dosahuje frekvence p°ibliºn¥ 261Hz. 3 4.3. STRUKTURA FORMÁTU PDSYNTAX 37 4.3.2.6 Trámec Spojování not trámci se dá zapsat více zp·soby. Klasickým zp·sobem je pouºití znaku podtrhávací £áry jako odd¥lova£e dvou not. Druhým zp·sobem m·ºe být pouºití funkcí. Ukázka pouºití: c/4_d 4.3.2.7 Funkce Funkce je v syntaxi pdSyntax ozna£ení pro p°íkaz upravující chování £i zobrazení bloku hudebních entit. Funkce se skládá z klí£ového slova a ze znak· ozna£ujících za£átek a konec bloku. První moºnost tohoto zápisu se podobá funkcím v programovacích jazycích, kdy se za klí£ovým slovem pouºijí kulaté závorky na uzav°ení v²ech argument·. Druhou moºností pouºití funkcí je tzv. p°epína£. Za£átek bloku je ozna£en klí£ovým slovem s parametrem On, konec bloku stejným klí£ovým slovem s parametrem Off. Funkce je moºné vno°ovat. To znamená, ºe v bloku argument· m·ºeme denovat dal²í funkci, která se vztahuje na podmnoºinu argument· nad°azené funkce. Nevýhodou obou zápis· je fakt, ºe funkce nelze vzájemn¥ k°íºit. To znamená, ºe nelze zapsat skute£nost, ºe vno°ená funkce má disjunktní mnoºinu argument·. Ve skute£nosti se jedná spí²e o modikátory a v n¥kterých p°ípadech narazíme na situace, kdy chceme tyto funkce k°íºit. Výhodou prvního zápisu je v¥t²í p°ehlednost. Výhodou druhého zápisu je, ºe dokáºe rozeznat p°ípad k°íºení odli²ných typ· funkcí. P°idáním jednozna£ného identikátoru jako parametru funkce dokáºeme rozeznat i p°ípady k°íºení funkcí stejného typu. Seznam v²ech funkcí v je obsaºen v p°íloze G.2. Ukázka pouºití: tie(c d e f g a h) tieOn c d e f g a h tieOff 4.3.3 Ukázka jednoduché skladby name = Skákal pes tempo = 100 time = 4/4 voiceTreble(G){ g/4 g e/2 | g/4 g e/2 | g/4 g a g | g/2 f | f/4 f d/2 | f/4 f d/2 | f/4 f g f | f/2 e |. } 4.3.4 Vlastnosti syntaxe A£koli je moºné klí£ v pr·b¥hu skladby m¥nit, je nutné, aby se klí£ zadával pro celý hlas, nikoli pouze pro notovou osnovu. ádky notové osnovy jsou totiº automaticky generovány 38 KAPITOLA 4. REALIZACE v závislosti na po£tu hudebních entit v hlasu a uºivatel dokáºe jen st¥ºí odhadnout, jaký takt bude na kterém °ádku notové osnovy. P°i pouºití více hlas· je synchronizace provád¥na pomocí takt·. Nevýhodou je, ºe pokud uºivatel chce modikovat jeden takt ve v²ech hlasech, musí p°epo£ítat jednotlivé takty, aby v¥d¥l, kolikátý takt chce modikovat. Mezi výhody popsané syntaxe pat°í nap°íklad její roz²i°itelnost. P°i vytvá°ení nové entity by bylo ºádoucí pouºít znaky, které co nejvíce p°ipomínají popisovanou skute£nost. V p°ípad¥, ºe bychom takové znaky jiº nena²li, m·ºeme pouºít mechanismus funkcí a vytvo°it tak novou funkci, která se postará o umíst¥ní nové entity. Kapitola 5 Testování V této kapitole je popsána podpora webových prohlíºe£· vzhledem k aplikaci pdDots. Dále je zde popsán pr·b¥h a výsledky uºivatelského testování. 5.1 Testování funkcionality Jazyk JavaScript se interpretuje ve webovém prohlíºe£i klienta a vzhledem k tomu, ºe podpora tohoto jazyka v prohlíºe£ích není stejná, m·ºe se stát, ºe narazíme na konstrukce, které n¥který z prohlíºe£· nepodporuje. Výsledná aplikace se pak m·ºe chovat odli²n¥ u r·zných klient·. Z tohoto d·vodu bylo nutné otestovat, zda se aplikace chová ve v²ech prohlíºe£ích stejn¥. Funk£nost aplikace jsem testoval ve v²ech moderních webových prohlíºe£ích. Konkrétn¥ se jedná o prohlíºe£e Google Chrome verze 18, Mozilla Firefox 12.0, Safari 5.1.7, Opera 11.62 a Internet Explorer 9. Z testu vyplynulo, ºe zobrazovací £ást aplikace pdDots je kompatibliní se v²emi zmín¥nými prohlíºe£i. Knihovna MIDI.js, která se stará o p°ehrávání dané skladby, je zaloºena na více dopl¬ujících se technologiích. Z tohoto d·vodu dokáºe generovat zvuk ve v²ech testovaných prohlíºe£ích. Pro m¥°ení rychlosti b¥hu klientské £ásti aplikace jsem pouºil webový prohlíºe£ Google Chrome. Kongurace po£íta£e, na kterém m¥°ení probíhalo, je uvedena v p°íloze D.1.3. Jako vstupní data byla pouºita skladba uvedená v kapitole 4.3.3. M¥°ení rychlosti probíhalo ve dvou krocích. Prvním krokem bylo m¥°ení rychlosti aplikace od obdrºení vstupních dat po dokon£ení vykreslování. Nam¥°ený £as byl v pr·m¥ru 23,1 ms. Druhým krokem bylo m¥°ení rychlosti vykreslovácí £ásti. Rychlost jednoho vykreslovacího cyklu byla v pr·m¥ru 10,3 ms. 5.2 Testování pouºitelnosti Jelikoº aplikace není závislá na webových stránkách, na kterých je implementována, m·ºe být aplikace distribuována na r·zné webové portály. Testování pouºitelnosti webových stránek tedy nebylo sou£ástí testu. D·leºité bylo zam¥°it se na vlastnosti webového rozhraní obecn¥ a zjistit zda uºivatele n¥jakým nelimitují p°i vytvá°ení vstupního °etezce. 39 40 KAPITOLA 5. TESTOVÁNÍ P°i pouºití aplikace pdDots nejde pr·chod mezi ur£itými stavy. Aplikace pdDots má ve své podstat¥ malé mnoºství r·zných p°ípad· uºití. Ovládací prvky aplikace jsou velice intuitivní a nem¥ly by uºivatel·m zp·sobovat problémy. K pouºití aplikace je nutné znát strukturu vstupního formátu. Zam¥°il jsem test tedy p°edev²ím na praktické pouºití syntaxe, kterou jsem v rámci práce vytvo°il. Domnívám se proto, ºe by v tomto p°ípad¥ nebyly p°ínosné testy heuristické evaluace £i kognitivního pr·chodu. Expertovi, který danou syntaxi dob°e zná, nebude pouºívání aplikace £init ºádné potíºe. P°istoupil jsem tedy k form¥ testování s reálnými uºivateli. 5.2.1 Cílová skupina Cílovou skupinu aplikace tvo°í hudebníci, kte°í mají zájem své skladby sdílet £i rychle vytvá°et jednoduché melodie. Jiným p°ípadem uºití m·ºe být modikace publikované skladby. Sou£ástí cílové skupiny jsou i uºivatelé, kte°í se v hudební nauce vzd¥lávají nebo se cht¥jí nau£it hrát ur£itou skladbu. Aplikace t¥mto uºivatel·m m·ºe pomoci sledovat rytmickou sloºku skladby sou£asn¥ s jejím p°ehráváním. 5.2.2 Kritéria výb¥ru participant· Z kriterií pro výb¥r vzorku potenciálních uºivatel· aplikace jsem vytvo°il dotazník. Dotazník má za úkol pomoci shromáºdit data pro ltrování poºadovaných ú£astník· testu. Aplikace se nezam¥°uje na ºádnou konkrétní v¥kovou skupinu. Pro zaji²t¥ní v¥rohodn¥j²ích dat je ºádoucí, aby se testu zú£astnili zástupci obou pohlaví. Vzhledem k tomu, ºe n¥které konstrukce vytvo°ené syntaxe mohou vzdálen¥ p°ipomínat programovací jazyk, rozhodl jsem zohlednit i technické dovednosti participant·. 5.2.3 Nastavení testu as a místo testování se li²ilo v závislosti na £asových moºnostech vybraných participant·. Testování probíhalo na p°enosném po£íta£i s moºností p°ipojení k internetu. Technické parametry stroje jsou popsány v p°íloze D.1.3. Na po£íta£i byl ukládán záznam obrazu, který obsahuje ve²keré akce uºivatel·. V²echny testy byly provád¥ny na zmín¥ném po£íta£i. N¥kte°í uºivatelé ale vlastní po£íta£ s jiným rozloºením kláves. Je nutné vzít v úvahu, ºe tento fakt hraje roli v rychlosti ovládání aplikace. 5.2.4 Vybraní ú£astníci Pro testování aplikace byli vybráni £ty°i ú£astníci. Z oslovených lidí se povedlo vybrat vyváºený vzorek lidí odpovídající poºadovému prolu. T°i ze £ty° participant· uvedli své znalosti hudební nauky za pokro£ilé a dva z nich dokonce aktivn¥ hrají na n¥jaký hudební nástroj. tvrtým participantem je za£ínající hudebník, který nemá rozsáhlé znalosti v oblasti hudební nauky. Vybraný vzorek obsahoval dva muºe a dv¥ ºeny. Polovina tohoto vzorku uvedla d°ív¥j²í zku²enosti s programováním. 5.2. TESTOVÁNÍ POUITELNOSTI 41 5.2.5 Pr·b¥h testu Na webových stránkách, na kterých je aplikace implementována, je popsána struktura jazyka pdSyntax. Sou£ástí jsou i praktické ukázky jiº vysázených skladeb. Ú£astníci mohli do t¥chto pom·cek v pr·b¥hu testu nahlíºet. Participant·m byl p°ed testem p°edloºen seznam úkol·. Zadáním prvního úkolu bylo vysázení ur£itých hudebních entit. Jednotlivé kroky tohoto úkolu byly popsány slovn¥ a byly formulovány tak, aby nenapovídaly °e²ení. Druhý úkol byl zam¥°en na práci s jiº vysázenou skladbou, která obsahovala chybové hlá²ení. Uºivatel m¥l za úkol chyby rozeznat a opravit. Posledním úkolem byl p°epis fragmentu skladby do aplikace pdDots. Ú£elem poslední úlohy bylo prozkoumat, zda si uºivatel po dobu testování stihl syntaxi osvojit. P°esné zadání t¥chto úkol· je uvedeno v p°íloze D.1. 5.2.6 Výsledky testu Testování aplikace pdDots p°ineslo hned n¥kolik poznatk·, které jsou uvedeny v následujících podkapitolách. 5.2.6.1 Pouºití znaku mezera V¥t²in¥ uºivatel· d¥lalo problém rozhodování o tom, mezi které znaky umístit mezeru. V materiálech, které m¥li participanti k dispozici, byla popsána struktura p°íkaz· pro vytvo°ení jednotlivých entit. V materiálech ale nebylo explicitn¥ popsáno, v jakých p°ípadech se mezera vkládá. Po druhém testu bylo do p°íru£ky dopln¥no pouºití mezer, av²ak ú£astníci stále nerozum¥li tomu, v jakých situacích tento znak pouºít. Nej£ast¥j²í chybou bylo neodd¥lení taktové £áry od zbytku taktu. e²ením tohoto nedostatku je zm¥na struktury jazyka pdSyntax. 5.2.6.2 Zápis délky not T°i ze £ty° participant· se setkalo s problémem ur£ení délky not. Ú£astníci se domnívali, ºe £íslo udávající délku noty se vztahuje k délce aktuálního taktu. astým zápisem £tv´ové noty ve t°í-£tvr´ovém taktu bylo c/3. Aplikace rozeznává délky not absolutn¥ a výsledek tohoto zápisu není denován. Ú£astník v²ak po£ítal s tím, ºe se jedná o podíl délky taktu. Poté co uºivatel p°i²el na korektní zp·sob zápisu, se dalo pozorovat, ºe zadávání not tímto zp·sobem je pro uºivatele p°ízniv¥j²í. e²ením tohoto problému by mohlo být roz²í°ení syntaxe o moºnost nastavení zp·sobu zápisu. Nicmén¥ jedna z t¥chto kongurací musít být nastavena jako výchozí. Uºivatel, který by nastavení ignoroval, by se v²ak mohl ocitnou ve stejné situaci jako v p°ípad¥ testování. 5.2.6.3 Uchování parametr· not Aplikace pdDots si pamatuje délku £i oktávu naposledy zadané noty. V¥t²ina ú£astník· si v p°íru£ce této moºnosti nev²imla a objevila ji aº náhodou. Poté co si participant na tuto moºnost zvykl, o£ekával, ºe délka pomlky a noty bude uloºena ve stejné prom¥nné. P°i návrhu 42 KAPITOLA 5. TESTOVÁNÍ jsem miln¥ p°edpokládal, ºe uºivatelé ocení, ºe je tato pam¥´ rozd¥lena a pouºita pro kaºdou entitu zvlá²´. 5.2.6.4 Nestandardní znaky P°íru£ka obsahovala tabulku s hudebními entitami a jejich textovou reprezentací v jazyku pdSyntax. Sou£ástí tabulky byl i popis vytvo°ení sloºit¥j²ích znak· pomocí klávesnice. Nicmén¥ pro n¥které ú£astníky byla tato £innost náro£ná a proto n¥které znaky kopírovali z jiných ukázek. e²ením tohoto problému je p°izp·sobit webové stránky této aplikaci a umoºnit tak uºivatel·m rychlej²í a pohodln¥j²í vkládání text·. 5.2.7 Shrnutí Ú£astník·m, kte°í mají technické i hudební vzd¥lání, d¥lalo ovládání aplikace men²í problémy neº ostatním. Naopak uºivatelé, kte°í se nesetkali s ºádným po£íta£ovým jazykem1 , m¥li ze za£átku v¥t²í problémy s pochopením struktury této syntaxe. Pozitivní zprávou v²ak je, ºe se efektivita jednotlivých participant· postupn¥ zvy²ovala. V¥°ím proto, ºe aplikace je pouºitelná i pro uºivatele, kte°í nemají zku²enosti s po£íta£ovými jazyky. Po p°ekonání úvodních p°ekáºek m·ºe aplikace slouºit jako velice efektivní program pro sazvu not. 1 Po£íta£ovým jazykem se myslí programovací, zna£kovací nebo dotazovací jazyky. Kapitola 6 Záv¥r 6.1 Spln¥ní cíl· V této kapitole shrnu, do jaké míry byly spln¥ny cíle uvedené v zadání bakalá°ské práce. • Prove¤te re²er²i prost°edk· pro zápis hudby na po£íta£i. Prostudujte standardy pro zápis not pomocí textových °et¥zc· (nap°. MusicXML £i MusicTeX). V rámci této bakalá°ské práce jsem popsal n¥které jiº existující zp·soby zápisu not. Vlastnosti t¥chto formát· jsou popsány v kapitole 2.2. Poté jsem vytvo°il nový formát zápisu not pomocí textového °et¥zce a pouºil jej ve vytvá°ené aplikaci. • Realizujte webovou aplikaci, která umoºní sazbu not dle vstupního textového °et¥zce a p°ehrání této skladby. Aplikace by m¥la nap°. umoº¬ovat vkládání hudebních ukázek do HTML stránek. P°i tvorb¥ aplikace jsem se °ídil t¥mito poºadavky. Ze vstupního °et¥zce je vytvo°en notový zápis podle poºadavk· popsaných v kapitole 2.3. Výsledný produkt umoº¬uje vkládat hudební ukázky ve form¥ SMF soubor· na HTML stránky. Druhou moºností je dokonce i p°ehrání skladby v klientském prohlíºe£i. • Realizovanou aplikaci podrobte uºivatelským test·m. Aplikace byla, spolu s vytvo°eným formátem vstupního °et¥zce, otestována uºivateli. Popis testování je uveden v kapitole 5. 6.2 Nedostatky aplikace Notový zápis obsahuje nep°eberné mnoºství hudebních zna£ek. V rámci bakalá°ské práce se mi bohuºel nepovedlo v²echny tyto zna£ky implementovat. Postupoval jsem v²ak od t¥ch nejd·leºit¥j²ích. Ale v¥°ím, ºe i s tímto omezením je aplikace schopna provozu. Seznam v²ech podporovaných zna£ek jsem uvededl v p°íloze. Serverovou £ást aplikace jsem bohuºel v rámci bakalá°ské nestihl dokon£it. Hlavní rysy °e²ení jsou v²ak nazna£eny a dokon£ení této £ásti bych se rád v budoucnosti v¥noval. 43 44 6.3 KAPITOLA 6. ZÁV R Budoucí vylep²ení Budoucí roz²í°ení aplikace by mohlo být orientováno nap°íklad na zlep²ení vlastností zadávání vstupních dat. Uºivatelské testy poukázaly na to, ºe by n¥kte°í uºivatelé ocenili, moºnost vkládání hudebních entit pomocí grackého rozhraní. Gracké rozhraní by ov²em m¥lo m¥nit pouze textovou reprezentaci, nikoli vnit°ní stav aplikace. V opa£né situaci by uºivatel nem¥l celou aplikaci pod kontrolou, jako je tomu v p°ípad¥ £ist¥ textového vstupu. Dal²ím roz²í°ením by mohlo být obarvování a zvýraz¬ování segment· vstupního °et¥zce podle jejich významu, podobn¥ jako je tomu v p°ípad¥ vývojových prost°edí a zvýraz¬ování syntaxe programovacích jazyk·. Pro uºivatele je tak jednodu²í rozeznat strukturu. Syntaxe by dále mohla být opat°ena mechanismy pro nastavení v¥t²ího po£tu parametr·. P°íkladem m·ºe být roz²í°ení a zúºení takt· £i p°ed£asné ukon£ení °ádku notové osnovy. Aplikace by dále mohla na server ukládat obrázky, které vznikly jako výsledek vykreslování klientského prohlíºe£e. To by v omezené mí°e umoºnilo zobrazit notový zápis i uºivatel·m, kte°í nemají podporu vykreslovacího plátna ve svých prohlíºe£ích. Generování MusicXML souboru by mohlo být dal²ím roz²í°ením. To by uºivatel·m umoºnilo vytvo°ené skladby modikovat v jiných softwarových °e²eních. Literatura [1] ABC music notation [online]. [cit. 8. 4. 2012]. Dostupné z: <http://abcnotation. com/>. [2] Audio Data API [online]. [cit. 20. 5. 2012]. Dostupné z: <https://wiki.mozilla.org/ Audio_Data_API>. [3] Noteight [online]. [cit. 8. 4. 2012]. Dostupné z: <http://www.noteflight.com/>. [4] W3Techs [online]. [cit. 4. 5. 2012]. Dostupné z: <http://w3techs.com/technologies/ overview/programming_language/all>. [5] Daniel Taupin. MusicTEX - Using TEX to write polyphonic or instrumental music. 2010. [6] Glen Rosecrans. A music notation primer. 1976. second edition. ISBN 0. [7] Ji°í Neuºil a Ji°í Neuºil. Skripta základ· hudební teorie. [8] Lubomír Alexandr. Bézierovy kubiky [online]. [cit. 20. 4. 2012]. Dostupné z: <http: //lubovo.misto.cz/_MAIL_/curves/bezierc.html>. [9] Mozilla group. HTML 5 cancas - 2d context [online]. [cit. 29. 4. 2012]. Dostupné z: <http://dev.w3.org/html5/2dcontext>. [10] Pavel Ti²novský. Rozhraní MIDI [online]. [cit. 8. 5. 2012]. Dostupné z: <http://www. root.cz/clanky/rozhrani-midi-na-osobnich-pocitacich>. [11] Recordare LLC. MusicXML 3.0 Tutorial. 2011. 45 46 LITERATURA P°íloha A Seznam pouºitých zkratek XML Extensible Markup Language DTD Document Type Denition MIDI Musical Instrument Digital Interface SMF Simple MIDI File SWF ShockWave Flash API Application Programming Interface RIA Rich Internet application SVG Scalable Vector Graphics DOM Document Object Model OpenGL Open Graphics Library HTML HyperText Markup Language HTTP HyperText Transfer Protocol MP3 MPEG (Motion Picture Experts Group) layer 3 WAV WAVeform audio le format BPM Beats Per Minute PHP PHP: Hypertext Preprocessor JS JavaScript 47 48 PÍLOHA A. SEZNAM POUITÝCH ZKRATEK P°íloha B esko anglický slovník uºitých hudebních pojm· Notová osnova Klí£ P°edznamenání Metrum Hlas Nota Délka noty Vý²ka noty Hlavi£ka Noºi£ka Praporek Pomocná linka Pomlka Taktová £ára Akord Ligatura Legato Trámec Posuvky Nota s k°íºkem Nota s bé Nota s odráºkou Sta Clef Key signature Time signature Voice Note Duration Pitch Head Stem Flag Leger line Rest Bar line Chord Tie Slur Beam Accidentals Sharp note Flat note Natural note 49 50 PÍLOHA B. ESKO ANGLICKÝ SLOVNÍK UITÝCH HUDEBNÍCH POJM P°íloha C Seznamy a tabulky C.1 Hudební nauka Zkratka Slovní ozna£ení Význam ppp pp p mp pf f ff fff piano pianissimo pianissimo piano mezzopiano mezzoforte forte fortissimo forte fortissimo nejslab¥ji velmi slab¥ slab¥ poloslab¥ polosiln¥ siln¥ velmi siln¥ nejsiln¥ji Tabulka C.1: Tabulka slovních ozna£ení dynamiky. Zkratka Slovní ozna£ení Význam cresc. decresc. dim. acc. sf sfz crescendo decrescendo diminuendo accent sforzato accent zesilovat zeslabovat zeslabovat a zpomalovat d·raz velmi silný d·raz velmi silný d·raz Tabulka C.2: Tabulka slovních ozna£ení zm¥ny dynamiky. C.1.1 Seznam artikula£ních zna£ek • Legato • Tenuto 51 52 PÍLOHA C. • Marcato • Staccato • Staccatissimo • Ligatura • Legato • Fermata • Portamento (Portato) • Akcent C.1.2 Seznam ornament· • Trill • Mordent • Pralltriller • Appoggiatura • Acciaccatura • Turn • Glissando • Slide SEZNAMY A TABULKY P°íloha D Testování D.1 Seznam úkol· D.1.1 Úkol £. 1 Sou£ástí prvního úkolu je vysázení n¥kterých základních hudebních entit v aplikaci pdDots. Vyuºijte ²ablony vytvo°ené skladby s názvem Va²e skladba 1. V prvním taktu vysázejte: • celou notu st°ední C . V druhém taktu vysázejte: • P·lovou notu st°ední C zvý²enou o p·l tónu. • Dv¥ £tvr´ové noty, které jsou o 3 tóny vý², neº p°edchozí. Ve t°etím taktu vysázejte: • Osm osminových not libovolné vý²ky. • První 4 noty spojte trámcem. • Zbylé 4 noty spojte trámci po dvou. Ve £tvrtém taktu: • Libovolný souzvuk. V posledním taktu vysázejte: • Pomlku délky celého taktu. • Skladbu zakon£ete p°íslu²nou taktovou £arou. 53 54 PÍLOHA D. TESTOVÁNÍ D.1.2 Úkol £. 2 Opravte chyby Skladby s názvem Skladba 3 obsahuje chyby. Va²ím úkolem je chyby identikovat a odstranit je. P°i eliminaci chyb zkuste zachovat co nejvíc p·vodních prvk· této skladby. D.1.3 Úkol £. 3 Posledním úkolem je p°epis £ásti skladby do aplikace pdDots. P°íslu²nou skladbu obdrºíte od moderátora. Vyuºijte ²ablony s názvem Va²e skladba 2. Model: Procesor: Pam¥´: Opera£ní systém: Rozli²ení obrazovky: HP compaq 6730s AMD Turion X2 Ultra DualCore 2.20 GHz 2 GB Windows 7 32-bit version 1200 × 800 Tabulka D.1: Kongurace testovacího po£íta£e P°íloha E UML diagramy Diagram: Network deployment Netw ork «device» Serv er «executionEnvironment» Webov ý serv er «device» Klient Serv erov á část aplikace «executionEnvironment» Webov ý prohlížeč Klientská část aplikace HTTP Obrázek E.1: Diagram nasazení. 55 Generov ání souborů 56 PÍLOHA E. UML DIAGRAMY P°íloha F Sazba sloºit¥j²ích konstrukcí V této £ásti jsou uvedeny n¥které ukázky sloºit¥j²ích konstrukcí jazyka pdSyntax. K tomuto ú£elu jsem vysázel jednu skladbu. Nejedná se o skute£nou hudební skladbu, ale spí² o soubor ukázek zajímavých moºností zmín¥né syntaxe. Sou£ástí je obrázek F.1 s notovým zápisem, který byl vytvo°en, na základ¥ uvedeného textového vstupu, aplikací pdDots. F.1 Zápis v jazyce pdSyntax name author tempo key time = = = = = Excellent song John Doe 125 bbbbbbb 4+5/8 voiceX(G){ c0/16 e/32 a/64 || (d/8 e g h) -/4 | (c1 d e) | c0/8_a h_c1 | c2/1 | tieUp(c/8 tieDown(c c) c) |: d1/8_c0_e_h_c :|: | d. :| voiceZ(G){ a/1 h | c | } } c/1 d | (a/2 g h) | -/4 | c | |. voiceY(F){ d1/16 h0/32 g/64 || c/4# hb c/8bb hx f1 | a0 d | a_h_a_a | c/8_d_e_f_g | a_d d_a |: tieUp(c/2 d/2 e/2) :|: -*4 | -*2 :| } -/1 | -/2 -/4 -/4 | -/8 -/16 | -/32 -64 | |. 57 58 F.2 PÍLOHA F. SAZBA SLOIT JÍCH KONSTRUKCÍ Vytvo°ený notový zápis Obrázek F.1: Notový zápis vytvo°ený v aplikaci pdSyntax. P°íloha G Instala£ní a uºivatelská p°íru£ka G.1 Uºivatelská p°íru£ka Jako p°íru£ka pro koncové uºivatele by mohla být pouºita kapitola s popisem syntaxe pdSyntax 4.3, která bude obsaºena i na webových stránkách, kde bude modul pdDots nasazen. Tabulky G.1 a G.3 obsahují textové reprezentace artefakt· syntaxe pdSyntax. V²echny tyto hudební entity jsou podporovány aplikací pdDots. Sou£ástí tabulky jsou i £íselné reprezentace znak· ve standardu Unicode. G.2 Instala£ní p°íru£ka P°iloºené CD obsahuje v²echny pot°ebné soubory k nasazení aplikace. Struktura CD je uvedena dále v této p°íloze. Prvním krokem je zkopírování soubor· na webový server. Ve sloºce /src/php jsou obsaºeny v²echny PHP skripty pot°ebné k b¥hu serverové £ásti aplikace. Sloºka /src/lib obsahuje voln¥ ²i°itelnou knihovnu PHP MIDI class, která slouºí ke generování zvukových SMF soubor·. G.2.1 Serverová £ást aplikace Serverová £ást se v tomto p°ípad¥ stará p°eváºn¥ o vytvá°ení SMF soubor·. P°ehrávání skladby v klientském prohlíºe£i v²ak nevyºaduje tento soubor. Z tohoto d·vodu není nasazení serverové £ásti aplikaci nutné. V p°ípad¥ nasazení se administátor musí postarat o na£tení PHP skript·. Poté uº sta£í vytvo°it instanci t°ídy pdDots. Jedná se o fasádu zapouzd°ující funk£nost celé serverové £ásti aplikace. Zaji²t¥ní vstupních dat aplikace je zcela na uváºení administrátora. G.2.2 Klientská £ást aplikace Ve sloºce /src/js jsou v²echny pot°ebné skripty pro b¥h klientské £ásti aplikace. Dále je nutné JavaScriptové soubory p°ipojit do HTML. Zp·sob p°ipojení skriptu do HTML stránky: 59 60 PÍLOHA G. INSTALANÍ A UIVATELSKÁ PÍRUKA Entita Textová reprezentace Unicode reprezentace nota C nota D nota E nota F nota G nota A nota H pomlka te£ka za notou jednoduchá taktová £ára taktová £ára - za£átek repetice taktová £ára - konec repetice taktová £ára - za£átek a konec repetice taktová £ára - dvojitá taktová £ára - konec skladby k°ízek bé dvojitý k°íºek dvojité bé odráºka trámec houslový klí£ basový klí£ violový klí£ c d e f g a h . | |: :| :|: || |. # b x bb _ G F C 99 100 101 102 103 97 104 45 46 124 124, 58 58, 124 58, 124, 58 124, 124 124, 46 35 98 120 98, 98 167 95 71 70 67 Tabulka G.1: Seznam zna£ek v jazyce pdSyntax. <script type="text/javascript" src="./js/nazev_skriptu.js"></script> Aplikace dále vyºaduje n¥které identikátory HTML element·, které jsou nutné k jejímu b¥hu. Tyto elementy tedy musí být obsaºeny v dokumentu. • Identikátor elementu canvas, který bude slouºit k vykreslení notové osnovy. • Identikátor tabulky, která bude slouºit k zobrazení chybových hlá²ení. P°íklad: <canvas id='identifikator' width='900' height='1000'></canvas> Aplikace pot°ebuje v¥d¥t, který element slouºí k vykreslení notové osnovy. Tento element je nutné p°edat konstruktoru t°ídy pdDots. Dále je moºné registrovat HTML element, který poslouºí jako výstupní hlá²ení chyb zp·sobených nestandardními vstupy. K t¥mto ú£el·m jsou v aplikaci vyhrazeny speciální funkce. Funkce registerErrorLog(DOMobj, app) slouºí k registraci tohoto elementu. DOM objekt lze p°edat aplikaci následujícím zp·sobem. G.2. 61 INSTALANÍ PÍRUKA Entita Funkce Parametry ligatura legato souzvuk trámec tie slur chord beam Up/Down Up/Down Up/Down Tabulka G.2: Seznam funkcí v jazyce pdSyntax. Parametr Význam name author key time tempo název skladby autor skladby p°edznamenání metrum tempo Tabulka G.3: Seznam parametr· hlavi£ky formátu pdSyntax. <script type="text/javascript"> var canvasDOM = document.getElementById('identifikator'); var errorlogDOM = document.getElementById('identifikator2'); var app = new pdDots(canvasDOM); registerErrorLog(errorlogDOM, app); </script> Sou£ástí skript· jsou i funkce, které reprezentují uºivatelské akce. Metoda playAndAnimate() slouºí k p°ehrávání skladby a zobrazování aktuálního pr·b¥hu. Tuto funkci je nutné navázat na odpovídající událost. <button id='tlacitko-spustit'>Spustit</button> <script type="text/javascript"> var app = new pdDots(); // První zp·sob registerPlayButton('tlacitko-spustit', app); // Druhý zp·sob var button = document.getElementById('tlacitko-spustit'); button.onclick = function(){ app.playAndAnimate(); } </script> Poslední v¥cí, kterou musí administrátor zajistit, je zavolaní metody run(data), která je obsaºena v souboru main.js. Tato metoda vyºaduje vstupní texový °et¥zec. Je nutné 62 PÍLOHA G. INSTALANÍ A UIVATELSKÁ PÍRUKA zabezpe£it, aby se vý²e zmín¥ný kód provád¥l v klientském prohlíºe£i aº po na£tení celého dokumentu. Toho lze docílit registrováním události onload. Ukázka spu²t¥ní aplikace: <script type="text/javascript"> window.onload = function(){ // P°edpokládá se, ºe prom¥nné canvas a data jsou nastaveny. var app = new PdDots(canvas); // Dále je moºné provést registraci událostí aplikace pdDots... // ... app.run(data); } </script> P°íloha H Obsah p°iloºeného CD / js/ pdDots/ client.zip Klientská část aplikace pdDots. midi.js.zip Knihovna použitá k přehrávání SMF souborů. midi.js/ php/ pdDots/ server.zip Serverová část aplikace pdDots php_midi_class/ php_midi_class.zip Knihovna použitá k generování SMF souborů. latex_src.zip Zdrojové soubory LaTeXu. text/ LaTeX/ BP_mikesda1.pdf demoClient.zip Jednoduchý web, který implementuje modul pouze na straně klienta. demoNette.zip Šablona PHP frameworku Nette, která imlementuje aplikaci pdDots README.txt Soubor s návodem k instalaci. Obrázek H.1: Obsah p°iloºeného CD. 63