České vysoké učení technické v Praze Fakulta elektrotechnická
Bakalářská práce
Editor kytarových tabulatur Václav Myška
Vedoucí práce: Ing. Adam Sporka Studijni program: (BN1) Elektrotechnika a informatika, strukturovaný Typ programu: (B) Bakalářský Forma studia: prezenční Obor: Výpočetní technika srpen 2006
Prohlášení Prohlašuji, že jsem svou bakalářskou 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 23.8.2007 ..........................
Abstract This work presents a newly created open source application used for creating, editing and exporting guitar tabs. The application was implemented in Free Pascal for operating systém GNU/Linux, for user interface is used GLIB library and playing through ALSA sound system. Control is possible with keyboard and mouse.
Abstrakt Tato práce prezentuje nově vytvořenou open source aplikaci pro vytváření, editaci a export kytarových tabulatur. Aplikace byla implementována v jazyce Free Pascal pro operační systém GNU/Linux, pro uživatelské rozhraní využívá knihovnu GLIB a pro přehrávání zvukový systém ALSA. Ovládání je možné klávesnicí a myší.
Obsah Seznam obrázků 1 2
3
4
5
Úvod 1.1 Cíle práce Teorie 2.1 Tabulatura 2.2 Existující editory tabulatur 2.2.1 Guitar Pro 2.2.2 DGuitar 2.2.3 KGuitar Návrh programu 3.1 Uživatelské požadavky 3.2 Grafický návrh aplikace 3.3 Výběr vhodných knihoven 3.4 Rozdělení tabulatury na menší celky Vývoj 4.1 Programovací jazyk a vývojové prostředí 4.2 Důležité implementované třídy 4.2.1 TPlayer 4.2.2 TTabulatura 4.3 Třídy implementované pro okna 4.3.1 THlavniOkno 4.3.2 TSettings 4.4 Třídy projektu Lazarus využívané aplikací 4.4.1 TCanvas 4.4.2 TImage 4.4.3 TImageList 4.4.4 TOpenDialog 4.4.5 TSaveDialog 4.4.6 TTimer 4.4.7 Ostatní třídy využívané aplikací Současný stav aplikace 5.1 Hlavní nabídka 5.1.1 Nabídka File 5.1.2 Nabídka Settings 5.1.3 Help 5.2 Ovládání 5.2.1 Ovládání klávesnicí 5.2.2 Ovládání myší 5.2.3 Ovládání kombinací klávesnice/myš 5.3 Přehrávání 5.4 Zobrazení tabulatury 5.5 Export tabulatury
1 1 2 2 4 4 5 6 7 7 8 10 10 11 11 11 11 12 13 13 14 15 15 15 15 15 15 15 15 17 17 17 17 17 17 17 18 19 19 20 21
6
7 A B
Uživatelský test 6.1 Uživatel č. 1 6.2 Uživatel č. 2 6.3 Celkové vyhodnocení testu Závěr Obsah přiloženého CD Seznam použité literatury
22 22 23 23 24 25 26
Seznam obrázků 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Ukázka délek not Pomlky Guitar Pro DGuitar KGuitar Skica 1 Skica 2 Skica 3 Reprezentace tabulatury spojovým seznamem THlavniOkno TSettings Panel nástrojů – noty Panel nástrojů – příznaky Panel nástrojů – přehrávač Panel nástrojů – tempo Nastavení zařízení ALSA Příklad exportované tabulatury
2 3 4 5 6 8 8 9 10 13 14 18 19 19 19 20 21
1 Úvod Moderní zápis hudby pomocí speciálních značek se vyvíjel velmi dlouhou dobu. Původní potřeba záznamu hudby pochází z 8. století, značky používané k zápisu se nazývaly neumy a byly využívány pro zápis liturgických písní do kancionálů. V době renesance a baroka se začíná ve větší míře vyvíjet jiný typ záznamu, a to tabulatura. Většina variací tabulatur byla určena pro loutny a varhany. Dnes se však tabulatury používají převážně pro strunné nástroje s hmatníkem a pražci. Tabulatura například, na rozdíl od běžné notace, vyjadřuje možnost hrát stejný tón na různých strunách nebo provedení tzv. skluzu (jízda prstu po struně), což je výsadou pouze strunných nástrojů a notový záznam toto neumí vyjádřit. S pomocí dnešních moderních technologií je stále větší tendence všechny záznamy digitalizovat a psát s pomocí výpočetní techniky. Výhody jsou poměrně jasné, trvanlivý záznam, snadnější editace, možnost kopírování či masivního šíření s pomocí internetu. Proto jsou zapotřebí i nástroje umožňující zápis not, případně pak další funkce. Běžnou praxí je například to, že uživatel, který zapisuje tabulaturu, si není jist, zda je zápis správně. Z tohoto důvodu je téměř nutné, aby editor tabulatur umožňoval přehrávání zapsaných skladeb. Ve světě již existuje celá řada nástrojů pro zápis i přehrávání tabulatur, bohužel, jen několik jich je kvalitních a ty jsou všechny zástupci skupiny komerečního software. Nejlepším programem je zřejmě „Guitar Pro“.
1.1 Cíle práce Cílem této práce navrhnout a realizovat editor kytarových tabulatur pro operační systém GNU/Linux (v budoucnu možná více platforem) umožňující alespoň základní možnosti tabulatury a přehrávání zapsané skladby. Editor by měl poskytovat možnost ovládání klávesnicí i myší. Je nutné navrhnout intuitivní, přehledné a rychle ovladatelné GUI pro snadnou a efektivní práci. Pro tabulaturu je nutné navrhnout vhodnou datovou strukturu(y) a k ní i formát souboru pro ukládání. Je zapotřebí navrhnout jednoduchý přehrávač na některém standartním zvukovém systému, nejlépe ALSA. Tisk tabulatury může (alespoň pro začátek) probíhat uložením tabulatury do obrázku, následně tisk pomocí jiné aplikace, v budoucnu by však měl být do programu zakomponován.
1
2 Teorie Předně podotýkám, že tabulatura je pro kytaristy sice nejběžněji používaným způsobem zápisu not, ale není nijak standardizován její formát, v hudební teorii je preferován zápis pomocí not a všechna „pravidla“ pro zobrazení a použití tabulatur jsou jen souborem domluvených hodnot, který se dodržuje, aby si hudebníci rozumněli. Běžně se lze v praxi setkat s velmi různorodými úpravami, často se objevují značky z běžné notové osnovy, které se dříve v tabulaturách nepoužívaly.
2.1 Tabulatura Jak bylo již výše uvedeno, tabulatura je (původně pro kytaru) upravený notový zápis. Osnova obsahuje tolik linek, kolik má nástroj strun, tudíž pro kytaru je tento počet 6. Nejvýše znějící struna bývá zpravidla zakreslována nohoře. Na linky se zapisují čísla, od kterých jdou nožičky. Nožičky mají stejný význam, jako u běžných not, akorát se pro zjednodušení zápisu zjednodušil dvat jejich ocásku. Čísla na jednotlivých linkách představujících struny znamenají vždy číslo pražce, na kterém má být struna zkrácena. Běžné kytary, které se dnes prodávají, mívají maximálně 23 pražců, proto může být hodota tohoto čísla omezena. Každý pražec zvyšuje základní tón struny o půl tónu. Jednotlivé struny mají základní tóny v pořadí od nejvýše znějící tyto: e2, h1, g1, d1, a, e. Protože však je kytara nástroj transponovaný, což znamená, že do not zapisujeme jiný tón, než který hrajeme, do notové osnovy by se zapsaly jako následující tóny: e1, h, g, d, A, E. Nožičky, resp. tvar značky, u notových značek (jak bylo již výše naznačeno) představují délku noty. Nota celá vypadá tak, že se číslo pražce uvede do kroužku. Samostatné číslo bez kroužku a bez nožičky představuje notu půlovou. Pak tedy přichází nota čtvrťová, což je číslo s obyčejnou nožičkou (svislá čára dolů). Následne pak noty osminová, šestnáctinová a dva a třicetinová mají jeden, dva nebo tři ocásky. Ocásek se zakresluje jen jako vodorovná čárka od nožičky, v některých variacích tabulatur, však nemusí být vodorovná, občas bývá vedena i pod úhlem (odhadem max. 45°). Ještě existuje nota čtyři a šedesátinová, v tabulaturách se však nevyskytuje, neboť je na kytaru prakticky nehratelná. Jednotlivé délky not na prázdné struně g ukazuje obrázek 1.
Obrázek 1: Ukázka délek not Pomlky (značky znamenající ticho po určitou dobu) se zakreslují do tabulatury stejně, jako do notové osnovy, někdy bývají zjednodušené krátké pomlky (od osminové) tak, že se nezakreslují jejich ocásky jako z ručního kreslení, ale jen jako ocásky u nožiček. Pomlky (stejné jako v notové osnově) ukazuje obrázek 2. 2
Obrázek 2: Pomlky Dále se mezi jednotlivými značkami tabulatury mohou vyskytovat speciální přechodové značky, které jsou definovány pouze pro tabulaturu, neexistují tedy v notové osnově, a z těch původních se jedná o následující: H.O. – Hammer On – Příklep T.O. – Tear Off – Odtrh SL. – Slide – Skluz První 2 ve své podstatě znamenají totéž, nicméně je pro kytaristu lepší, má-li odlišné značky pro odlišné úkony. Tedy příklep znamená, že drží strunu na některém pražci a následnou notu zahraje tak, že klepne jiným prstem na vyšší pražec. Odtrh je opačná operace příklepu, takže kytarista drží strunu na některém pražci a následující tón na nižším pražci zahraje tak, že chytí nižší pražec jiným prstem a původním prstem sjede prodce do strany tak, aby se struna rozezněla. Skluz je trochu jiný typ přechodu, takže zde je značka striktně daná a znamená to, že kytarista drnkne tón a po celou délku noty jede po struně prstem směrem k nové notě tak, aby struna stále zněla.
3
2.2 Existující editory tabulatur 2.2.1 Guitar Pro Guitar Pro je dnes patrně nejlepším a nejznámějším editorem tabulatur. Existuje pouze pro operační systém Windows, ale dnes ho lze již zprovoznit například pomocí Wine i pod Linuxem. Jedná se opravdu o velmi kvalitní program, který umí dělat tabulatury všech strunných nástrojů, umí pracovat s více stopami (takže je možné udělat například i kompletní návrh skladby), paralelně s tabulaturou vede i notovou osnovu, takže je možné použít oba druhy zápisu, podporuje přehrávání (jak v podobě MIDI, tak vlastní bankou reálných zvuků), jeho formát souboru se díky jeho proslulosti stává postupem času de facto standardem. Jeho vzhled je na obrázku 3.
Obrázek 3: Guitar Pro Tento program by mi měl být jakýmsi vzorem při budoucím vývoji tohoto projektu.
4
2.2.2 DGuitar Zde se jedná o multiplatformní aplikaci psanou v Javě, umí tabulatury editovat, přehrávat a hlavně načítá i tabulatury formátu Guitar Pro. Tento projekt je open source a funguje i na všech platformách. Má však několik problémů. Jeho způsob zobrazování tabulatur je trochu nepřehledný, v kódu je mnoho chyb, takže není příliš stabilní a konrétně na linuxu určitě mívá problémy s MIDI, takže většinou program ani nepřehrává. DGuitar je na obrázku 4.
Obrázek 4: DGuitar
5
2.2.3 KGuitar KGuitar je program určený nativně pro prostředí KDE, jak již napovídá písmenko K v začátku neho názvu. Tento program také zvládá všechny základní funkce, které by pro běžnou práci postačovaly, ale jeho kompatibilita s Guitar Pro není zatím příliš dobrá (ne všechny soubory se správně načítají) a program se vyznačuje více, než pohodlnou prací, hlavně svou nestabilitou. Tento program je na obrázku 5.
Obrázek 5: KGuitar
6
3 Návrh programu Na počátku práce na projektu jsem se zeptal šesti lidí, co by od takového projektu chtěli, jak by měl program vypadat, jak by ho chtěli ovládat, co by měl kdy program dělat.
3.1 Uživatelské požadavky Uživatelské poždavky jsou velmi rozličné a pro všechny uživatele rozhodně nesplnitelné. Část uživatelů chce ovládat pouze myší, část pouze klávesnicí, někteří by rádi kombinaci (například držet některou klávesu a tím volit funkci myši), část uživatelů chce program v klasickém GUI, jak jsou na něj zvyklí z jiným aplikací, část chce moderní grafické a nejlépe hodně animované GUI. Je toho opravdu hodně a spousta požadavků si protiřečí, nicméně jsem se pokusil skloubit maximum požadavků a zde je hrubý výsledek: ● ● ● ● ● ● ● ●
Uživatelské rozhraní aplikace by mělo být přehledné a srozumitelné Na obrazovce by měla být rovnou vidět výsledná tabulatura Program by měl jít ovládat pouze klávesnicí Program by měl jít ovládat pouze myší Tabulaturu musí být možné přehrát na zvukovém zařízení Zadávání tabulatur by mělo být rychlé (efektivita ovládání) Aplikace by měla být v moderním designu, se zaoblenými rohy tlačítek, bez standardního rámečku, který poskytuje window manager. Celou práci s programem by měly provázet pěkné animace a nějaký „pomocník“.
7
3.2 Grafický návrh aplikace Nejprve jsem s pomocí několika uživatelů zkoušel navrhnout „vzhled“ programu. Pro ilustraci uvádím několik náčrtků návrhů vzhledu aplikace v obr. 6, 7 a 8.
Obrázek 6: Skica 1
Obrázek 7: Skica 2
8
Obrázek 8: Skica 3
9
3.3 Výběr vhodných knihoven Pro aplikační GUI jsem se rozhodl využít statickou verzi GLIB, kterou standardně využívá použitý vizualizační nástroj. Toto nabízí širokou možnost spouštění na různých platformách a odpadá nutnost kompilace pro každý stroj zvlášť. Dále bylo nutné vybrat knihovny pro přístup ke zvukovému zařízení. V linuxu je na výběr hned několik zvukových systémů. První variantou je postavit aplikaci na některém zvukovém serveru, který poskytuje snadné rozhraní, možnost softwarového směšování a mnoho dalších funkcí, nicméně to s sebou nese i zápory, jako jsou například podstatně vyšší hardwarové nároky, nutnost instalace dalších podpůrných balíčků apod. Z tohoto důvodu jsem se chtěl takovému řešení raději vyhnout. Tudíž zbývá pouze možnost vybrat si některý ze zvukových systémů. Výběr není těžký, protože běžně používané systémy jsou v současnosti jen dva. Prvním je již zastaralý Open Sound System (OSS), který je stále ještě hojně využíván aplikacemi, ale není již nadále vyvíjen a na většině počítačů existuje jen jako emulace na druhém zvukovém systému, kterým je Advanced Linux Sound Architecture, zkráceně ALSA. Tento zvukový systém je nejběžnější a podporuje pravděpodobně největší množství zvukových karet. Proto moje volba spočívala právě v tomto zvukovém systému.
3.4 Reprezentace tabulatury v paměti Před realizací vlastního programu je zapotřebí si rozmyslet, jakým způsobem budeme k celé tabulatuře přistupovat, jakým způsobem ji budeme reprezentovat v paměti, aby bylo možné snadno provádět editaci. Můžeme ji dělit na takty, takty na jednotlivé značky, každou značku ještě na dalších max. 6 not (pro každou strunu jednu). Vezmeme-li v úvahu to, že je možné udělat rytmickou chybu hned v počátku tabulatury, nemůžeme provádět editaci po taktech, jelikož je nutné přesouvat značky mezi takty. Právě naopak, takt bude pouze estetické rozdělení souvislého toku značek. Editace po značkách, už možná je a dokonce by měla být tím nejvhodnějším řešením. Tabulatura tedu bude reprezentována spojovým seznamem značek, kdy každá bude obsahovat informace o každé struně v daném bodě a ostatní informace o značce (délka noty, příznaky přechodu atd.). Nejlépe to bude vidět z obrázku 9.
Obrázek 9: Reprezentace tabulatury spojovým seznamem
10
4 Vývoj 4.1 Programovací jazyk a vývojové prostředí Pro vývoj jsem se rozhodl použít vývojovou platformu Lazarus Project, což je open sourcová podoba komerečních Delphi od Borlandu. Je založen na jazyce Free Pascal, konkrétně jeho objektové podobě. Tento jazyk poskytuje výborný vizuální návrh formulářů aplikace a umožňuje snadný a rychlý vývoj běžných aplikací, přičemž staticky linkuje výsledné spustitelné soubory, což na jednu stranu zvyšuje velikost výsledné aplikace, na druhou stranu však odpadají problémy s kompilací, instalací potřebných balíčků a hlavičkových souborů a je možné program spustit prakticky na všech běžných linuxových desktopech používajících X server. Při kompilaci však nastává jeden problém navíc, neboť většina linuxových balíčků je psána v C nebo v C++, je zapotřebí si stáhnout balíček s přepsanými hlavičkovými soubory pro platformu ALSA, který je dostupný pod názvem ALSAPAS. Tento jazyk jsem zvolil ještě z jednoho důvodu, a to proto, že s ním mám již z dřívějška mnoholeté zkušenosti.
4.2 Důležité implementované třídy 4.2.1 TPlayer Tato třída slouží jako přehrávač MIDI tónů. Jedná se o vlastní interface poskytující jednoduchou variantou funkce potřebné pro tuto aplikaci. Využívá ke své práci hlavičkové soubory balíčku ALSAPAS a poskytuje tímto aplikaci následující funkce: ● konstruktor Create(_client, _port) - vytváří instanci třídy - jako parametry si bere číslo klienta a portu ALSA (identifikace zařízení) ● destruktor Free ● PgmChange(_channel, _instrument) - nastavuje hudební nástroj _instrument na jeden midi kanál _channel ● PlayTone(_channel, _note, _on=true, _length=127) - zahraje na daném kanálu _channel konkrétní notu _note - nepoviný parametr _on určuje, zda bude nota zahrána nebo zastavena - nepoviný parametr _length určuje délku hraní noty – výchozí je na max. ● PlayString(_string, _fret, _length=127) - zahraje na dané struně _string tón na pražci _fret s délkou _length - kontroluje, zda struna aktuálně nehraje, případně ji předem zastaví ● StopString(_string) - zastaví strunu _string ● StopAll - zastaví přehrávání všech strun ● isSoundAvailable - kontroluje, zda byla úspěšná inicializace zvukového zařízeni MIDI Jednotka této třídy dále ještě poskytuje statickou funkci FillMidiInfo(_list), která _list naplní seznamem MIDI zařízení, jež jsou aktuálně k dispozici.
11
4.2.2 TTabulatura Toto je třída, která uchovává spojový seznam značek v daném pořadí – představuje tabulaturu. Pro práci s těmito daty také poskytuje potřebné funkce: ● konstruktor Create ● destruktor Free ● Znacka(_index) - vrací značku tabulatury na indexu _index ● PocetZnacek - vrací celkový počet značek v tabulatuře ● PřidatZnacku(_index, _delka) - vloží do seznamu na pozici _index novou značku o delce _delka (_index = PocetZnacek -> vloží značku na konec seznamu) ● SmazatZnacku(_index) - smaže značku z pozice index ● Delka - spočítá délku tabulatury na dobu trvání not (nota celá = 32 – interní jednotky) ● PoziceNaZnacku(_pozice) - vrací index značky v tabulatuře podle její X-vzdálenosti ● SetTempo(_tempo) - nastavuje tempo tabulatury ● GetTempo - vrací tempo tabulatury ● SetTaktLength(_citatel, _jmenovatel) - nastavuje předznamenání tabulatury – délka taktu ● GetTaktLength - vrací délku taktu v interních jednotkách ● GetTaktCitatel - vrací citatele z předznamenání délky taktu ● GetTaktJmenovatel - vrací jmenovatel z předznamenání délky taktu ● SaveToFile(_filename) - uloží tabulaturu do souboru se jménem (_filename) ● LoadFromFile(_filename) - načte tabulaturu ze souboru podle jména (_filename)
12
4.3 Třídy implementované pro okna 4.3.1 THlavniOkno Jedná se o třídu hlavního okna. Obsluhuje události tohoto okna i jeho vykreslení. Jedná se o hlavní třídu celého programu. Okno třídy je na obrázku 10. Obsahuje všechny funkce rozhraní aplikace: ● Vykreslení tabulatury (PaintTabToCanvas) ● Vykreslení tabulatury do hlavního okna (PaintTab) ● Obsluha myši (Image1MouseDown, Image1MouseMove, Image1MouseUp) ● Obsluha klávesnice (FormKeyDown) ● Načtení konfigurace (LoadConfig) ● Uložení konfigurace (SaveConfig) ● Vytvoření výchozí konfigurace (Default Config) Vlastní instance ostatních tříd a pracuje s nimy: ● midi – instance třídy TPlayer ● tabulatura – instance třídy TTabulatura ● AboutBox – instance třídy TAboutBox ● Settings – instance třídy TSettings
Obrázek 10: THlavniOkno (Hlavní okno)
13
4.3.2 TSettings Třída TSettings se stará o okno Nastavení (Settings) a vrací událost, zda nové nastavení bylo potvrzeno či stornováno. Její okno je na obrázku 11.
Obrázek 11: TSettings (Nastavení)
14
4.4 Důležité třídy projektu Lazarus využívané aplikací 4.4.1 TCanvas Jedná se o „plátno“, které umožňuje vykreslení libovolného rastru. Podporuje všechny základní vykreslovací funkce, ale každá funkce vždy jen obraz vykreslí přímo na zobrazovací zařízení. TCanvas neuchovává obraz v paměti, při jeho překrytí a opětovném vykreslení se vykreslí jen prázdné plátno. 4.4.2 TImage Tato třída je vlastně takový interface, který pod sebou hierarchicky zahrnuje všechny ostatní třídy pracující s obrazem, takže obsahuje TCanvas s pamětí, TPicture (pro práci s grafickými soubory), TBitmap, TGraphic atd. Takže s jeho pomocí je možné vykreslovat rastrový obraz do okna, načítač nebo ukládát soubory, umí základní funkce, jako např. přizpůsobit obrázek oknu. 4.4.3 TImageList Třída, která umožňuje načíst více obrázků do seznamu, třídí je podle indexů, následně je umožňuje vykreslit. Hlavní výhodou je to, že tyto obrázky se ukládají v interních resourcech (zdrojích) projektu a při kompilaci se přilinkují do spustitelného souboru, čímž je zajištěno, že je některý nevychovaný uživatel nesmaže nebo nenahradí jinými apod. V této aplikaci je výhodné použít TImageList pro ikonky do panelu nástrojů, případně pro vykreslování rastrových značek do tabulatury (např. pomlky). 4.4.4 TOpenDialog Systémové okénko pro otevření souboru. Umožňuje zadat filtry pro zobrazení souborů, návratová hodnota je boolean (true, pokud uživatel potvrdil otevření souboru). Tento dialog je ve Free Pascalu implementován multiplatformě a nezávisle na použitém souborovém systému ani na oddělovači v cestě k souborům ( / , \ , ...). 4.4.5 TSaveDialog Třída téměř identická s TOpenDialog, jen slouží pro ukládání souboru. 4.4.6 TTimer Časovač, který volá událost rodičovské třídy po vypršení limitu. Umožňuje pouze periodické časování, tudíž chceme-li jen jedno časování, je potřeba ve voláné události časovač zastavit. Nejkratší jednotkou času, kterou umí časovat, je 1ms. Bohužel se při zatížení systému stává i to, že volání události přijde až po dlouhé době, neboť tento časovač má poměrně nízkou prioritu a nelze ji změnit. Pro přesnější časování existuje TEpikTimer, který umí časovat až do řádu nanosekund, ale ten není standardní součástí Free Pascalu, je zapotřebí ho stáhnout jako externí balíček a zkompilovat ho. 4.4.7 Ostatní třídy využívané aplikací Jedná se ve směs pouze o třídy, které vkládají do okna nějaký vizuální prvek, většinou jen volají nějakou událost rodičovské třídy, proto se o nich není třeba nijak zvlášť rozepisovat a je zde uveden jen velmi stručný popis. ●
TMainMenu - třída pro vložení hlavního menu do okna 15
● ● ● ● ● ● ● ● ●
TMenuItem - položka hlavní nabídky TToolBar - panel nástrojů TToolButton - tlačítko panelu nástrojů TLabel - jednoduchá popiska, vykresluje vše stejným fontem, umí více řádků TButton - běžné systémové tlačítko TEdit - jednořádkové editační pole pro text TSpinEdit - editační políčko pro číslo, obsahuje šipky nahoru a dolu pro změnu hodnoty TScrollBox - aktivní oblast, je-li její obsah větší než velikost, umožňuje rolování pomocí posuvníků TBevel - vizuální oddělení – čára nebo obdélník
16
5 Současný stav aplikace 5.1 Hlavní nabídka (tohle není vyvoj, tohle spis uz patri do manulu.) Funkce aplikace jsou zatím omezeny jen na ty základní (včetně editačních), proto hlavní nabídka obsahuje nabídku pro práci se souborem (File), Nastavení (Settings) a Nápovědu (Help). 5.1.1 Nabídka File Zde najdete položky New (Otevře novou prázdnou tabulaturu), Open (Otevře tabulaturu ze souboru), Save (Uloží rozpracovanou tabulaturu), Save as (Uloží tabulaturu do souboru pod zadaným jménem), Export image (Exportuje tabulaturu jako obrázek BMP), Quit (Ukončí program). 5.1.2 Nabídka Settings Je zde pouze položka Settings (Nastavení), kde v otevřeném okně můžete nastavit délku taktu (4/4, 3/4, …), zvukové zařízení ALSA – program nabízí seznam dostupných MIDI zařízení a šířku exportovaného obrázku (v pixelech). 5.1.3 Help V této nabídce můžete otevřít nápovědu volbou Contents (Obsah) nebo otevřít okno „O programu“ zvolením možnosi About.
5.2 Ovládání Podle uživatelských požadavků byl program navržen tak, aby umožňoval ovládání pouze klávesnicí i ovládání pouze myší. 5.2.1 Ovládání klávesnicí Klávesnice nabízí v programu běžné editační funkce. Editace probíhá pomocí kurzoru, který lze posouvat po celé délce napsané tabulatury. Pohyb kurzoru je možný pomocí kurzorových kláves (šipky doleva, doprava, nahoru, dolu), klávesa home přesune kurzor na první značku tabulatury, klávesa end za konec tabulatury (za konec proto, aby bylo možné snadno přidávat značku na konec tabulatury – zapsáním čísla běžnou značku či klávesou insert pomlku). Tlačítky +/- se zkracuje/prodlužuje délka noty. Nově přidávaná nota má vždy automaticky na počátku délku noty, na které byl při přidávání kurzor. Číslo pražce se zadává buďto z alfanumerické nebo z numerické klávesnice. Dvoumístné číslo zadáte snadno postupným stiskem číslic, na které jsou k dispozici 2 vteřiny. Není tomu tak pouze v případě, že zadáním první číslice je naznačeno, že výsledné číslo by bylo vyšší, než maximální hodnota. Pokud zadáte vyšší číslo, než je maximální hodnota, je automaticky opraveno na maximální hodnotu. Klávesou delete smažete aktuální číslo pod kurzorem. Bude-li smazáno poslední číslo na aktuální značce, ze značky se stává pomlka. Naopak při zadání čísla na některou strunu přes pomlku, z této se pak stává hraná značka. 17
Klávesa delete na pomlce odstraní pomlku a všechny následující noty posune o tuto značku doleva. Vložit pomlku před aktuální notu je možné klávesou insert. Pro změnu tempa je možné použít klávesu Page Up, která tempo zvýší, nebo klávesu Page Down, která jej naopak sníží. V neposlední řadě je funkce klávesy mezerník, která způsobí přehrání tabulatury od aktuální pozice kurzoru. Přehrávání od začátku není na klávesnici implementováno, tedy je nutné nejprve skočit na začátek klávesou Home a následně spustit přehrávání klávesou mezerník. Probíhá-li již v době stisknutí mezerníku přehrávání, bude naopak zastaveno. Pro změnu příznaků jsou k dispozici následující klávesy: ● klávesa H – příklep ● klávesa T – odtrh ● klávesa S – skluz Ostatní funkce jsou přístupné z hlavní nabídky, kterou lze otevřít klávesou F10 nebo přímo podnabídku File stiskem kláves Alt+F. Jedná se tedy o funkce Nový soubor, Otevřít soubor, Uložit soubor, Exportovat obrázek, Ukončit, Nastavení a Nápověda. 5.2.2 Ovládání myší Myš nabízí v aplikaci trochu zvláštní a zcela nový způsob zadávání tabulatur, až časem se ukáže, zda je efektivní. Jedná se o maximální využití myši tak, aby nebylo nutné moc často opouštět kurzorem tabulaturu, ale aby šlo nastavovat všechny podstatné parametry rovnou z místa značky. Funkce myši jsou tedy rozděleny podle stisknoutého tlačítka. Při stisknutém levém tlačítku je myš v editačním režimu. To znamená, že edituje značku. Editace probíhá způsobem click&drag, tedy klini a táhni. Uchopením čísla a tažením myší (kurzor zůstává stát na místě) se mění daná značka, tažením doleva/doprava se snižije/zvyšuje číslo pražce, tažením nahoru/dolu se zkracuje/prodlužuje doba trvání noty. Pokud kliknutí proběhne na struně bez čísla, automaticky bude na počátku vloženo číslo pražce 0. Při kliknutí na notu, která je určena k editaci, bude zárověň na tuto pozici posunut i kurzor. Obdobným způsobem, jako editace, probíhá i přidávání značek, ale s použitím prostředního tlačítka. Automaticky se vloží nová značka do místa kliknutí a na vybrané struně bude vloženo číslo pražce 0. Stále platí možnost click&drag, kdy ihned vložením nové značky můžete nastavit její nové hodnoty. Při vložení nové značky bude automaticky nastaven i kurzor na její pozici. Pravé tlačítko slouží k odstraňování čísel pražců/celých značek. Zde se již nepoužívá systém click&drag, neboť při odstraňování není co editovat. Při kliknutí na číslo pražce bude toto odstraněno, pokud kliknutí proběhne na prázdné značce, tedy pomlce, bude značka odstraněna a následující značky posunuty doleva stejně tak, jako při stisku klávesy delete. Další možnost nastavení délky trvání noty je označení této noty (nastavením pozice kurzoru), tedy běžné kliknutí levým tlačítkem na notu, a použitím tlačítek v panelu nástrojů, kde jsou uvedeny všechny noty, což lze vidět na obrázku 12.
Obrázek 12: Panel nástrojů - noty V panelu nástrojů se nacházejí i tlačítka pro nastavení příznaků. Příznaky je tedy nutné nastavovat tímto způsobem. Zkratky symbolů jsou následující (příklep – H.O., odtrh – T.O., skluz – SL.), část panelu nástrojů je na obrázku 13. 18
Obrázek 13: Panel nástrojů - příznaky Přehrávání probíhá také s pomocí panelu nástrojů, ale nastávají nám zde 2 možnosti. Je možné spustit přehrávání buďto od začátku tabulatury, což provedeme stiskem prvního tlačítka přehrávače, nebo můžeme přehrávat od aktuální pozice, což je to druhé tlačítko. Přehrávání zastavíme pomocí posledního tlačítka (Stop). Tlačítka přehrávače v panelu nástrojů jsou na obrázku 14.
Obrázek 14: Panel nástrojů - přehrávač Poslední volbou panelu nástrojů je tempo, které lze také nastavovat myší, a to pomocí malých šipek nahoru a dolu umístěných v pravé části od editační oblasti. Volba tempa je zachycena na obrázku 15.
Obrázek 15: Panel nástrojů - tempo Položky, které byly klávesnicí přístupné pouze z menu jsou myší přístupné stejným způsobem, takže se o nich není třeba dále rozvádět. 5.2.3 Ovládání kombinací klávesnice/myš Jedinou možností, jak kombinovat klávesnici i myš pro ovládání, je využití toho, že editace/přidání noty nastavuje pozici kurzoru. Tímto způsobem je možné vyhnout se použití kurzorových šipek, nastavit pozici myší a číslo/délku nastavit pomocí klávesnice.
5.3 Přehrávání Jak jsem již výše uvedl, přehrávání lze spustit i zastavit klávesnicí i myší. Během přehrávání zobrazuje kurzor aktuálně přehrávanou značku, ale po skončení přehrávání se vrátí na původní pozici. Během přehrávání je zakázaná editace, naopak některé funkce, jako třeba otevření souboru apod. přehrávání zastaví, aby umožnily bezproblémovou práci s datovými strukturami a změnou jejich dat. Přehrávání probíhá přes MIDI zařízení ALSA, takže je zapotřebí mít zvukovou kartu, na níž je midi alsou podporováno nebo je možnost použít softwarový syntetizátor, který emuluje MIDI. Pokud nemáte aktuálně k dispozici zvukové zařízení nebo není správně zkonfigurováno, program se tváří jako když není žádný problém, pouze se neozývá žádný zvuk. V menu nastavení (Settings) lze nastavit Client:Port zařízení, program automaticky nabídne dostupná zařízení, nicméně je toto většinou poprvé potřeba nastavit (výchozí konfigurace je 16:0), což je asi nejběžnější konfigurace. Jak to vypadá v programu je možné vidět na obrázku 16.
19
Obrázek 16: Nastavení zařízení ALSA Po nastavení zařízení je daná konfigurace uložena do konfiguračního souboru a použita při dalším spuštění aplikace. Konfigurace je pamatována až do její změny, a to i v případě, že zařízení už není k dispozici.
5.4 Zobrazení tabulatury Tabulatura je zobrazována podobně jako texty, zobrazení taktů v řádce a po celých taktech zalomení řádků pod sebe. Každý takt je zobrazen v aplikaci s pomocnými šedými svislicemi, které symbolizují možné dva a třicetinové noty a jsou v tabulatuře umístěny jen orientačně pro lepší odhad pozice kurzoru myši. Zabrazení je vidět na obrázku THlavniOkno (Obrázek 10).
20
5.5 Export tabulatury Program zatím neumožňuje klasický tisk, místo toho alespoň exportuje tabulaturu jako obrázek, aby bylo možné ji vytiskout v jiném programu. Bylo by, jak je v linuxu zvykem, možné explecitně takovou utilitu zavolat a dokument rovnou vytisknout, ale to pak programu vytváří další zbytečnou závislost na jiném balíčku, čemuž je občas lépe se vyhnout. Proto nyní aplikace nechává na uživateli, jak si s výstupním souborem pořadí. Exportovaná tabulatura vypadá stejně, jako ta zobrazená v aplikaci, ale neobsahuje kurzor a pomocné svislice. Její šířka se zadává v pixelu v dialogu s nastavením aplikace a je tímto explicitně daná. Každá změna této hodnoty se pak ukládá do konfiguračního souboru a použije se i příště. Výška se pak spočítá automaticky podle počtu řádek tabulatury. Výsledný soubor je ve formátu BMP. Celá exportovaná tabulatura, pro export byla v nastavení zvolena šířka 1120 pixelů, je pak na obrázku 17.
Obrázek 17: Příklad exportované tabulatury
21
6 Uživatelský test Účastník č. 1 zná jen úzký základ hudební teorie, jedná se o pokročilého uživatele operačního systému GNU/Linux. Účastník č. 2 je hudebník, hraje na kytaru 12 let, výborně ovládá hraní podle not i podle tabulatur, často využívá k této činnosti počítač, konkrétně program Guitar Pro. Oba uživatelé dostali za úkol seznámit se s teorií tabulatur, seznámit se s ovládáním programu a přepsat tabulaturu z papíru do aplikace.
6.1 Uživatel č. 1 ● ● ● ● ●
●
●
„Program vypadá docela použitelně“ Z počátku vůbec nevěděl, co s programem dělat - musel si nejdříve projít alespoň základ tabulatur Editace klávesnicí je docela dobrá V programu jsou zatím chyby - např. po editaci klávesnicí se program neptá na uložení souboru při ukončení Editace myší je velmi nezvyklá - při přidání noty ji zapomíná upravit - problém si vzpomenout, který pohyb myši co provádí - často mění i druhou hodnotu, než kterou chce Přepsat tabulaturu z papíru do programu - jen s klávesnicí docela jde - jen s myší je to velký problém - nejlépe použít klávesnici pro vytvoření a kombinaci pro úpravy Určitě by o použití programu v případě potřeby uvažoval
22
6.2 Uživatel č. 2 ● ● ●
●
●
●
●
Program umožňuje jen ty nejzákladnější funkce Ovládání pomocí myši hlavně díky zvyku nemohl „překousnout“ Program obsahuje drobné chyby - když je tabulatura delší, než okno a kurzorem zajedu mimo obraz, kurzor není vidět, protože se neodroluje - značka skluzu je SL., ale v tabulatuře se zobrazuje jako S.L. a ještě jsou písmenka v různých velikostech Hlavní nedostatky: - v programu zatím chybí implementace některých značek (tečka, legato, flažolet, příznak „let ring“, …) - program neumí načítat a ukládat soubory Guitar Pro - bylo by dobré umožnit vektorový tisk přímo z programu - na konci exportované tabulatury je vždy prázdný takt - krátké notičky nemají spojené nožičky - program nekontroluje přesahující dobu taktu - při exportování by ve výsledný soubor mohl obsahovat alespoň následující informace: ● nadpis ● tempo ● jméno autora ● klíčová písmena TAB v hlavičce osnovy Kladné věci: ● Ovládání klávesnicí ● Dobře vypadající vzhled tabulatury ● Program ani jednou nespadl ● Plně funkční přehrávání (někdy tedy s drobným zaškobrtnutím) Přepsat tabulaturu z papíru do programu - pomocí klávesnice vše v pohodě - práce s myší téměř nemožná Program by zatím nebyl ochoten používat, ale má prý perspektivu při dalším vývoji
6.3 Celkové vyhodnocení testu Oba uživatelé byli schopni splnit zadaný úkol. Stěžovali si zejména na ovládání pomocí myši, nicméně ani jeden z nich nevyloučil možnost jeho používání po delší době užívání programu. Dále byly objeveny drobné chyby v aplikaci. Kladné hodnocení naopak získala stabilita programu a bezproblémové přehrávání v operačním systému GNU/Linux.
23
7 Závěr Cílem této práce bylo vytvořit aplikaci umožňující editaci tabulatur pro open source systém GNU/Linux, která bude umožňovat všechny základní prvky tabulatury. To se docela podařilo. Aplikace umí tabulatury vytvářet, editovat, zobrazovat, přehrávat a exportovat. Je značný předpoklad, že by se v po budoucím rozšíření a opravách mohla aplikace ujmout a stát se konkurencí i komerečnímu software. Program bude uveřejněn na serveru SourceForge.Net, s jehož pomocí by měl probíhat i budoucí vývoj. Budou sbírány reakce uživatelů a program pak dále přizpůsobován maximu jejich požadavků. Plány pro nejbližší vývoj aplikace ● Doplnit další prvky dnes běžně používané v tabulaturách, jedná se zejména o značky ligatura (navazuje noty), tečka (prodlužuje trvání noty) či symboly pro dynamiku hraní (hlasitost, důraz) ● Implementovat import a export souborů pomocí zásuvných modulů ● Vytvořit zásuvný modul pro formát Guitar Pro ● Doplnit možnost tisku z aplikace ● Portovat třídu přehrávače pro další platformy (zbytek zdrojového kódu již multiplatformní je) ● Zapojit do vývoje projektu další osoby ● Nasamplovat a zaintegrovat banku reálných zvuků kytary.
24
A Obsah přiloženého CD ● ● ● ●
alsapas-0.9.7 - překlad hlavičkových souborů ALSA pro práci v pascalu images - obrázky použité v aplikaci (ikony, apod.) skladby - ukázkové skladby k programu src - zdrojové kódy
25
B Seznam použité literatury [1] M.Hulán a J.Šrůma. Škola hry na kytaru: Country a Bluegrass, Country Home, 1998 [2] J.Macek. Toulavá Country Kytara, G&W, 1998 [3] Marco Cantú. Delphi 4 Podrobný průvodce programátora, Grada Publishing a.s., 1999 [4] Wikipedia, otevřená enclyklopedie http://cs.wikipedia.org staženo 21. srpna 2007 [5] Dokumentace projektu Lazarus http://lazarus-ccr.sourceforge.net/docs staženo 13. - 22. srpna 2007. [6] ALSA project – the C library reference: MIDI sequencer http://howto.gp.mines.edu/local-apps/alsa-lib-devel1.0.14/doxygen/html/group___sequencer.html staženo 15. srpna 2007 [7] Adam Sampson. Zdrojový kód open source utility Virtuoso. http://offog.org/darcs/misccode/virtuoso.c staženo 15. srpna 2007
26