Parsovanie MusicXML súborov Bc. Ondrej Grman Študijný program: Informačné systémy Predmet: Vyhľadávanie informácií Ak. rok: 2013/2014
Obsah 1 Úvod... 3 2 Prehľad súčasných riešení... 3 2.1 Aplikácie pre prácu s notovým zápisom... 3 2.2 Aplikácie pre vyhľadávanie... 3 3 MusicXML... 4 3.1 Definícia... 4 3.2 Štruktúra... 4 4 Reprezentácia hudobnej melódie... 6 5 Opis riešenia... 6 5.1 Indexácia... 6 5.1.1 Vstup... 6 5.1.2 Výstup... 6 5.1.3 Transformačná metóda... 6 5.2 Vyhľadávanie... 7 5.2.1 Vstup... 7 5.2.2 Výstup... 7 5.3 Implementácia... 7 5.3.1 Opis programu... 7 6 Dáta... 8 7 Vyhodnotenie... 8 8 Zdroje... 8 2
1 Úvod Ľudia majú radi hudbu, radi ju počúvajú, spievajú, či len tak pískajú. Niekedy im však na um príde len časť piesne, na ktorej názov ani autora si nevedia spomenúť. Určite by uvítali pomoc nástroja, ktorý by im danú skladbu na základe nimi vyjadrenej melódie našiel. Takisto to je aj medzi skúsenými hudobníkmi, ktorí si spomenú na časť partitúr, ktoré by radi získali. Oblasť dolovania hudobných informácií, ktorá v súčasnosti kvôli jej komplikovanosti zaostáva za získavaním textových informácií, je predmetom intenzívneho výskumu. Projekt sa zaoberá touto problematikou a jeho cieľom je vytvorenie aplikácie na vyhľadanie notového zápisu v MusicXML formáte podľa zadanej melódie. Na trhu sa vyskytuje značné množstvo aplikácií, ktoré sa venujú problematike skladieb v notovom zápise. Väčšina z nich však poskytuje funkcionalitu na ich tvorbu, úpravu, prehliadanie, prehrávanie či tlač notového zápisu, ale vyhľadávanie je často umožnené iba na základe metadát. Vyhľadávanie hudobného diela podľa melódie, či už formou hry na virtuálnom klavíri alebo spevu do mikrofónu alebo cez notový zápis je často zanedbávané. Ak sa daná aplikácia venuje vyhľadávaniu obmedzuje užívateľa napr. pri zadávaní melódie len na jeden tón alebo je vyhľadávanie možné len v rámci jedného súboru alebo pracuje s menej rozšíreným hudobným formátom. Aplikácie sú rôzne náročné, určené konkrétnemu typu používateľov. 2 Prehľad súčasných riešení 2.1 Aplikácie pre prácu s notovým zápisom Sibelius - http://www.sibelius.com Finale - http://www.finalemusic.com MuseScore - http://musescore.org Capella - http://www.capella-software.com Guitar PRO - http://www.guitar-pro.com Tieto programy (platené aj voľne dostupné) sú zamerané na tvorbu notových zápisov a ich úpravy. Vyhľadávanie je možné maximálne v rámci jedného súboru a hľadať sa môže určitá sekvencia nôt. 2.2 Aplikácie pre vyhľadávanie Wikifonia - http://wikifonia.org MusiPedia - http://www.musipedia.org Midomi - http://www.midomi.com DoDoSoSo - http://www.dodososo.com Jedná sa o webové portály a ak výsledky hľadania sú notové zápisy, hľadať je možné pomocou metadát. Vyhľadanie pomocou melódie väčšinou vráti linky na skladby v rôznych online službách. 3
3 MusicXML 3.1 Definícia MusicXML je elektronický hudobný formát založený na jazyku XML. Vyvinula ho spoločnosť Recordare LLC a čerpá niekoľko kľúčových konceptov z iných formátov (napr. MuseData od Waltera B. Hewletta či Humdrum od Davida Hurona). Bol navrhnutý pre zobrazovanie hudobného notového zápisu, jeho archiváciu v digitálnej forme, či zdieľanie a vymeniteľnosť hudobných dát. Verzia 1.0 bola uvedená v januári 2004, v máji 2005 vyšla verzia 1.1 s pokročilejšou podporou formátovania. Verzia 2.0 bola uvoľnená v júni 2007 a zahrňovala štandardný komprimovaný formát. Všetky z týchto verzií boli definované sériou Document type definitions (DTDs). Implementácia XML Schema Definition (XSD) verzie 2.0 bola vydaná v septembri 2008. Verzia 3.0 bola vydaná v auguste 2011 so zlepšenou podporou virtuálnych nástrojov v oboch DTD a XSD verziách [1,2]. 3.2 Štruktúra Na obrázku Obr.1 je znázornený notový zápis, ktorý v štruktúre MusicXML súboru, vyzerá ako na Obr. 2. Obr. 1 Notový zápis Analýza uvedeného príkladu: - jeden hudobný nástroj (<part>) - jeden takt (<measure>) - nultá pozícia v kvintovom kruhu (<key>) -> C DUR - metrum (rytmus ) 4/4 -> 1 takt = 4 doby, 1 štvrťová nota = 1 doba (<time>) - husľový kľúč (G-kľúč) (<clef>) - jedna nota C1 (<pitch>), s dĺžkou 4 doby(<duration>) [3] 4
Obr. 2 Štruktúra MusicXML 5
4 Reprezentácia hudobnej melódie Matematická reprezentácia hudby je navrhnutá formou vektorov. Melódia je transformovaná do výškových intervalov, ktorým sú priradené čísla podľa dĺžky intervalu. Každý typ intervalu má definovaný okrem dĺžky aj smer- nahor(+) alebo nadol (-). Výškové intervaly určujú melodický vektor [4]. Melodický vektor pre skladbu na Obr. 3 (0,-2,-3,-4,+11,-4,+4,-4,0) Obr. 3 Zápis jednoduchej melódie 5 Opis riešenia 5.1 Indexácia Proces indexácie zahŕňa parsovanie jednotlivých súborov a vytvorenie indexov pre rýchlejšie vyhľadávanie. 5.1.1 Vstup Vstupom sú samotné MusicXML súbory. 5.1.2 Výstup Výstupom súbory indexu vytvorené lokálne v počítači používateľa 5.1.3 Transformačná metóda Metóda ktorá zo získanej melódie vytvorí matematický vektor je veľmi dôležitou súčasťou a funguje nasledovne: 1. najskôr si vytvorí tabuľku priradení číselných hodnôt tónom (Tab. 1). 2. získa sa rozdiel hodnôt oktáv 3. získa sa rozdiel hodnôt výšok tónov podľa tabuľky 4. vypočíta sa hodnota pre vektor podľa vzorca: rozdielvysok + (rozdieloktav * 12) 5. hodnota sa pridá do vektora Tón C Cis D Dis E F Fis G Gis A Ais H Hodnota 0 1 2 3 4 5 6 7 8 9 10 11 Konkrétny príklad máme melódiu, ktorú tvoria dva tóny C4 a D5. Čísla 4 a 5 označujú oktávu. Výstupná hodnota pre vektor by bola 14. Názornú ukážku práce metódy možno vidieť na Obr. 4. 6
Obr. 4 Schéma fungovania transformačnej metódy 5.2 Vyhľadávanie Druhou časťou aplikácie je vyhľadávanie MusicXML súborov podľa melodického vstupu. 5.2.1 Vstup Vstupom tejto časti je melodický vektor zadaný používateľom v textovej forme alebo pomocou virtuálneho klavíru. 5.2.2 Výstup Výstupom je zoznam nájdených súborov zoradený podľa percenta zhody. Zoznam obsahuje dostupné metadáta zo súborov a názov súboru. 5.3 Implementácia Prostredie.NET Visual Studio 2013 Programovací jazyk C# 5.3.1 Opis programu Aplikácia využíva objektovo-orientovaný prístup a poskytuje niekoľko formulárov grafického používateľského rozhrania. Použité technológie boli Collections (pre uchovávanie údajov), Forms (vykresľovanie GUI), XmlTextReader (spracovanie xml súborov), Threading (pre vytváranie vláken), IO (vstupno-výstupné operácie), Midi (pre odosielanie MIDI správ zvukovej karte), knižnica Lucene.NET (pre indexáciu a vyhľadávanie medzi dokumentami). 7
6 Dáta Dataset je tvorený súbormi typu MusicXML, z ktorých väčšina pochádza z dump-u wikifonie, niektoré sú získané zo súkromných zbierok iných ľudí a niektoré vytvorené len pre účely tohto projektu. 7 Vyhodnotenie Nakoľko neexistuje softvér s takým istým zameraním, vyhodnotenie porovnaním výsledkov nie je možné. Aplikácia však javí známky stability a pri všetkých testoch našla podľa zadanej melódie notové súbory podľa očakávania. 8 Zdroje [1] Wikipedia. Hudobné formáty. (2011-10-04) http://en.wikipedia.org/ [2] MakeMusic.MusicXML (2012-05-05) http://www.makemusic.com/musicxml/ [3] Habudová, Nikoleta: Music Information Retrieval. (2011-10-04) http://www2.fiit.stuba.sk/~hruskova/vyscin.html [4] Hrušková, Nikoleta - Hvolka, Juraj: Representing, comparing and evaluating of music files. Proceedings of the International Conference on E-learning and the Knowledge Society, ASE Publishing House, 2011. - ISBN 978-606-505-459-2. - S. 213-218. 8