\chapter{Závěr}

Výsledkem této bakalářské práce je navržení metody pro přepis hudební skladby do hudebního záznamu. Metoda je naprogramována pomocí programovacího jazyka C++ a oproti semestrální práci umí analyzovat i jednodušší polyfonní skladby, což znamená, že ve skladbě hraje více tónů v jednom čase. \\

Dostupným aplikacím realizujícím přepis hudebních skladeb jsem se věnoval v kapitole (\ref{pruzkum_trhu}), kde jsem definoval jejich možnosti a omezení, jako například pro jaký operační systém jsou programy dostupné, jejich cenu, formát exportu not a případně jejich výhody či nevýhody.\\
  
Kapitola (\ref{zakladni_pojmy}) popisuje důležité pojmy se kterými v dané bakalářské práci pracuji. Kapitola popisuje například co obsahuje hudební formát WAVE nebo formát MIDI pro zápis not. Můžeme v ní najít také základní užitečné informace o lepším pochopení notového zápisu jako jsou jména not, zápis délek not, zápis rytmu nebo třeba předznamenání.\\

V kapitole (\ref{metody_transkripce}) jsem se věnoval popisu základních dostupných metod pro přepis hudební skladby do notového záznamu. Na začátku kapitoly se věnuji stručnému popisu spojitých i diskrétních signálů. Následně jsem popsal algoritmy DFT a FFT. Pro hudební transkripce jsem ovšem potřeboval algoritmy, které respektují logaritmickou povahu rozdělení frekvence jednotlivých tónů, což je algoritmus CQT - konstantní Q transformace a algoritmus Fourierovy transformace s logaritmickým frekvenčním rozložením.\\

Kapitola (\ref{navrh_metody}) popisuje navržení metody pro přepis hudební nahrávky do notového zápisu. Navržená metoda vychází z konstantní Q transformace (CQT) a Fourierovy transformace s logaritmickým frekvenčním rozložením. Metoda se zabývá spíše detekcí výšky not, ale obsahuje i detekci jednoduššího rytmu. Detekce rytmu detekuje délku noty pouze na celé, půlové, čtvrťové a osminové noty. V případě výskytu jiné délky noty nebude daná nota detekována. Metoda obsahuje také jisté vylepšení výsledků detekce not, které spočívá v tom, že když metoda nalezne současně hrané dvě sousední noty, tak každé přiřadí, s jakou pravděpodobností ve skladbě daná nota bude. Tu méně pravděpodobnější notu metoda vymaže. Toto vylepšení je v metodě proto, že v případě nízkých frekvencí metoda často nalezne kromě základní frekvence i frekvence okolních tónů z důvodu malých frekvenčních rozdílů not v nízkých frekvencích a když hrajeme tyto dva sousední tóny najednou, tak ve většině případů tato kombinace tónů zní falešně a ve skladbě s největší pravděpodobností nebude. \\

Kapitola (\ref{vysledky}) prezentuje dosažené výsledky navržené metody. Pro účely testování jsem si vytvořil vlastní dvě databáze skladeb. První databáze čítá 480 skladeb, které obsahují akordy C dur, C moll, C dur 7 a C moll 7. Každý akord je nahraný od 2. do 7. oktávy, a to v každé oktávě desetkrát s jinou intenzitou hlasitosti akordu. V hodnocení výsledku analýzy této databáze jsem hodnotil ze dvou hledisek. Podle prvního hlediska jsem hodnotil procentuální vyhodnocení úspěšně detekovaných tónů a podle druhého hlediska jsem hodnotil počet chybně detekovaných tónů. Z výsledků hodnocení úspěšně detekovaných tónů (obrázek \ref{uspesnost_graf_proc_oktavy}) byly nejlepší výsledky ve čtvrté oktávě, kde dosahovaly skoro 100\% správně detekovaných tónů. Rozsah frekvencí čtvrté oktávy se pohybuje od 261 Hz do 493 Hz. Nejhorší výsledky metody byly ve 3. a 2. oktávě, kde výsledky úspěšnosti dosahovaly něco kolem 70\% a jsou způsobeny malými rozdíly mezi frekvencemi jednotlivých tónů. Rozsah frekvencí 2. a 4. oktávy je od 65 Hz do 246 Hz. Počet chybně detekovaných tónů (obrázek \ref{uspesnost_graf_chyby}) byl nejmenší ve 4. a 5. oktávě, kde se nevyskytovaly téměř žádné chyby. Největší počet chyb byl v 2. a 7. oktávě. V druhé oktávě bylo v 80 analyzovaných skladbách 66 chyb, což bylo způsobeno malými frekvenčními rozdíly mezi sousedními notami a v 7. oktávě bylo v 80 skladbách 80 chyb, které byly způsobeny z důvodu menší intenzity hlasitosti skladby ve vyšších frekvencích. Frekvenční rozsah 7. oktávy se pohybuje od 2093 Hz do 3951 Hz.\\

V kapitole (\ref{limit}) se věnuji limitním parametrům metody, tedy parametrům, které musí daná skladba splňovat, aby analýza skladby byla co nejúspěšnější. Limitním parametrem je tempo skladby, které musí být pomalejší. Rytmus skladby musí být jednodušší a hudební rozsah not skladby se musí pohybovat od 2. do 7. oktávy. Nástroj použitý v analyzované skladbě musí být piano. Výpočetní výkon a rychlost analýzy jsem testoval celkem na třech počítačích. Testovací skladba byla Heart of Courage, která je dlouhá 45 sekund. Analyzoval jsem jen frekvence od 65 Hz do 3951 Hz při rozlišení 12 nebo 48 frekvencí na oktávu. Nejlépe dopadl počítač s dvoujádrovým procesorem Intel Core i7 s taktovací frekvencí 1,9 GHz, pamětí RAM 8 GB a operačním systémem Windows 8.1, kde při rozlišení 12 frekvencí na oktávu trvala analýza skladby 16 sekund a při rozlišení 48 frekvencí na oktávu trvala analýza skladby 6 minut. Nejhůře dopadl počítač s dvoujádrovým procesorem Pentium s taktovací frekvencí 3,06 GHz, pamětí RAM 4 GB a operačním systémem Windows 10, kde při rozlišení 12 frekvencí na oktávu trvala analýza skladby 32 sekund a při rozlišení 48 frekvencí na oktávu tuto skladbu počítač nedokázal analyzovat vůbec. Sekl se a byl nutný restart počítače.\\

Kapitola (\ref{aplikace}) se věnuje popisu finální aplikace pro přepis hudební nahrávky do notového záznamu. Finální aplikace je naprogramována v programovacím jazyku C++ a je odladěná pro operační systémy macOS a Windows. V příloženém CD jsou také projektové soubory na sestavení zdrojových souborů pro Microsoft Visual Studio a Apple XCode. V kapitole jsou popsány i jednotlivé naprogramované třídy a metody.\\

V metodě by se dala vylepšit detekce rytmu i pro jiné délky not. Nebo třeba detekce tempa či tóniny pro zpřehlednění notového záznamu. Metoda by také mohla umět rozpoznávat akordy. Zjistila by, že tyto tóny se nacházejí v konkrétním akordu a další analyzované noty, které do tohoto akordu nepatří, by z analyzovaných not vymazala. Vylepšit by se také dala detekce not pro rychlejší tempo, aby daná metoda stíhala analyzovat noty i v rychlejším tempu. Metoda by mohla umožnit také výběr jiných analyzovaných nástrojů jako kytaru, flétnu, housle či třeba zpěv. \\

V této práci se mi povedlo naprogramovat funkční aplikaci, provádějící automatizovaný přepis hudební nahrávky do notového zápisu, v programovacím jazyku C++. Aplikace je odladěná jak pro operační systémy macOS, tak Microsoft Windows, proto by měla být stabilnější. Bakalářská práce byla prezentována před odbornou komisí na konferenci EEICT. 
