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 E’ENÍ
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 VYUšITELNÝ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 E’ENÍ
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.
POšADAVKY NA POUšITOU 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 E’ENÍ
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.
FUNKƒNÍ 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 E’ENÍ
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Í POUšITELNOSTI
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 POUšITÝ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 UšITÝ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 SLOšIT…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.
INSTALAƒNÍ A UšIVATELSKÁ PÍRUƒKA
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
INSTALAƒNÍ PÍRUƒKA
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.
INSTALAƒNÍ A UšIVATELSKÁ PÍRUƒKA
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