Advertisement
Guest User

Untitled

a guest
May 22nd, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.88 KB | None | 0 0
  1. \documentclass[polish,onecolumn,a4paper,oneside,12pt]{report}
  2.  
  3. \usepackage{polski}
  4. \usepackage[utf8]{inputenc}
  5. \usepackage{amsmath,array,amssymb}
  6. \usepackage[polish]{babel}
  7. \usepackage[T1]{fontenc}
  8. \usepackage[cp1250]{inputenc}
  9. \usepackage[a4paper,top=2.5cm,bottom=2.5cm,left=3cm,right=2cm]{geometry}
  10. \usepackage{hyperref}
  11. \usepackage{listings}
  12. \hypersetup{%
  13. colorlinks = true,
  14. linkcolor = black
  15. }
  16.  
  17. \renewcommand{\tablename}{Tabela}
  18.  
  19. \usepackage{listings}
  20. \usepackage{lstautogobble} % Fix relative indenting
  21. \usepackage{color} % Code coloring
  22. \usepackage{zi4} % Nice font
  23.  
  24. \definecolor{bluekeywords}{rgb}{0.13, 0.13, 1}
  25. \definecolor{greencomments}{rgb}{0, 0.5, 0}
  26. \definecolor{redstrings}{rgb}{0.6, 0, 0}
  27. \definecolor{graynumbers}{rgb}{0.5, 0.5, 0.5}
  28.  
  29. \lstset
  30. {
  31. autogobble,
  32. columns=fullflexible,
  33. language=Python,
  34. frame=box,
  35. commentstyle=\color{greencomments},
  36. keywordstyle=\color{bluekeywords},
  37. stringstyle=\color{redstrings},
  38. numberstyle=\color{graynumbers},
  39. xleftmargin=12pt,
  40. basicstyle=\footnotesize,
  41. numbers=left,
  42. stepnumber=1,
  43. showstringspaces=false,
  44. tabsize=1,
  45. breaklines=true,
  46. breakatwhitespace=false,
  47. }
  48.  
  49.  
  50. \usepackage{graphicx}
  51. \usepackage{sectsty}
  52. \usepackage{listings}
  53.  
  54. \chapterfont{\large\sc\centering}
  55. \chaptertitlefont{\centering}
  56. \sectionfont{\centering}
  57.  
  58. \addto\captionspolish{
  59. \renewcommand*{\figurename}{Rysunek}
  60. \renewcommand*{\tablename}{Tabela}
  61. }
  62.  
  63. \newcommand{\captionfonts}{\footnotesize}
  64. \makeatletter
  65. \long\def\@makecaption#1#2{
  66. \vskip\abovecaptionskip
  67. \sbox\@tempboxa{{\captionfonts #1: #2}}
  68. \ifdim \wd\@tempboxa >\hsize
  69. {#1: \captionfonts #2\par}
  70. \else
  71. \hbox to\hsize{\hfil\box\@tempboxa\hfil}
  72. \fi
  73. \vskip\belowcaptionskip}
  74. \makeatother
  75.  
  76. \renewcommand{\baselinestretch}{1.5}
  77.  
  78. \begin{document}
  79. \input{Strona_tytulowa.tex}
  80.  
  81. \tableofcontents
  82.  
  83. \chapter{Wstęp} \label{rozdz.wstep}
  84.  
  85. \indent \indent Dźwięk jest wszędzie i nie zawsze zdajemy sobie z tego sprawę. Muzykę słyszymy w supermarketach, sklepach osiedlowych, restauracjach, Nie zawsze jesteśmy świadomi, jak wiele funkcji pełni dźwięk. Fakt jego istnienia, jest uważany jako naturalny element naszego otoczenia. Muzyka zmienia nasze życie, lecz łatwo zapominamy o tym z jakich elementów się składa.\\
  86. \indent Postęp technologiczny, który dokonał się w XX wieku, pozwolił na zapis dźwięku na nośnikach informacji. Stworzenie urządzeń, takich jak komputer, pianino cyfrowe, spowodowało napisanie od nowa definicji dźwięku. Technologia pozwoliła na zapis dźwięku na nośniki analogowe i cyfrowe.\\
  87. \indent W pracy pokażę jak za pomocą transformaty Fouriera przekształciłem zapis dźwiękowy na zapis nutowy. Praca ma za zadanie pokazać, jak przyjemnym może być przekształcenie dźwięku na nuty i bazującej na tym zabawy - pokażę, że można użyć tego narzędzia do zapisania nut z nagranego pianina - pliku .wav, który zostanie przekonwertowany do pięciolinii.\\
  88. \indent Do pracy użyłem języka Python. Dzięki temu projekt może być uruchomiony na dowolnym urządzeniu z systemem Windows, Linux lub Apple.
  89.  
  90. % \chapter{Cel i założenia projektu} \label{rozdz.cel}
  91. \section{Cel i założenia projektu} \label{rozdz.cel}
  92.  
  93. \indent \indent Zrealizowany projekt, składał się z dwóch etapów. Pierwszym było stworzenie modelu oraz koncepcji konwersji dźwięku na zapis nutowy, drugi – implementacja kodu oraz testowanie aplikacji.\\
  94. \indent W pracy zostanie zaprezentowana implementacja aplikacji na urządzenia z zainstalowanym interpreterem języka Python. Aplikacja wykorzystuje biblioteki służące do obliczeń numerycznych: numpy oraz matplotlib. Do prezentacji treści została wykorzystana biblioteka Abjad oraz Lilypond.\\
  95. \indent Na projekt przedstawiony w pracy, należy patrzeć jako na fragment większej całości. Jest tak naprawdę modułem, który zostaje wykorzystany jako aplikacja konsolowa. Moduł można zaimportować i wykorzystać w innych projektach. Z założenia ma posłużyć jako gotowy zbiór opracowanych metod służących do przekształcenia wybranego pliku dźwiękowego na plik .pdf, zawierający pięciolinię z odczytanymi nutami. Projekt został zapisany jako paczka wraz z instrukcją użycia programu przez końcowego użytkownika.
  96.  
  97. \chapter{Analiza dźwięków} \label{rozdz.analiza}
  98.  
  99. \indent \indent Zacznę od omówienia pojęcia dźwięku oraz dźwięku muzycznego. Omówię czym jest sygnał cyfrowy i przykładowe sposoby zapisu. Zostanie wytłumaczona dyskretna transformacja Fouriera - DFT oraz „krótka transformata” STFT. Na sam koniec zwrócę uwagę na terminologię – różnica między transformacją, a transformatą.
  100.  
  101. \section{Dźwięk}
  102.  
  103. \indent \indent Definicja dźwięku brzmi: to fizyczne zaburzenie falowe w ośrodku sprężystym gazowym, ciekłym lub stałym (fale sprężyste) wywołujące subiektywne wrażenie słuchowe u zwierząt (definicja z zakresu fizyki). [1]\\
  104. \indent Dźwięk, to zachodzące z odpowiednią częstotliwością zmiany ciśnienia w ośrodku. Ucho reaguje na zmianę poziomu dźwięku (jednostką są decybele w skali logarytmicznej, dB) częstotliwości fal zawierających się w granicy 16 Hz–20 kHz. Źródłem dźwięku są drgające ciała stałe (np. membrana w głośniku), oraz zawirowania powietrza.\\
  105. \indent Fizycy określają dźwięk za pomocą wielkości: ciśnienie akustyczne, widmo dźwięku, natężenie dźwięku oraz częstotliwość składowej podstawowej w widmie.
  106.  
  107. \section{Dźwięk muzyczny}
  108.  
  109. \indent \indent Dźwięk muzyczny – sygnał wytwarzany przez instrument muzyczny. Najważniejsze parametry:
  110.  
  111. \begin{itemize}
  112. \item wysokość – związana z częstotliwością podstawową,
  113. \item barwa (brzmienie) – związana ze spektrum harmonicznym,
  114. \item obwiednia – zmiany głośności w czasie. [2]
  115. \end{itemize}
  116.  
  117. \indent Analiza dźwięku składa się z analizy czasowej, która dostarcza informacji o zmienności amplitudy w czasie, gdzie wynikiem jest przebieg amplitudy w funkcji czasu - wykres czasowy. Kolejnym ważnym elementem jest wyznaczenie obwiedni sygnału (en. \textit{envelope}), czyli wykresu zmian jego amplitudy (krzywej łączącej najwyższe punkty wykresu czasowego), gdzie zmiany obwiedni odzwierciedlają zmiany głośności dźwięku. Rysunek nr 2.1 prezentuje obwiednię dźwięku trąbki na wykresie czasowym.
  118.  
  119. \begin{figure}[h]
  120. \centering
  121. \includegraphics[width=1\textwidth]{Pliki/Rysunek1.png}
  122. \caption {Obwiednia i wykres czasowy dla dźwięku trąbki [4]}
  123. \end{figure}
  124.  
  125. \subsection{Barwa dźwięku}
  126. \input {DzwiekMuzyczny/BarwaDzwieku.tex}
  127.  
  128. \subsection{Wysokość dźwięku}
  129. \input {DzwiekMuzyczny/WysokoscDzwieku.tex}
  130.  
  131. \subsection{Obwiednia dźwięku}
  132. \input {DzwiekMuzyczny/ObwiedniaDzwieku.tex}
  133.  
  134. \section{Cyfrowy format zapisu}
  135.  
  136. \indent \indent Program komputerowy pobiera małe próbki dźwięku w określonych odstępach czasu. Nazywa się to próbkowaniem. Odstęp czasu między dwiema próbkami, nazywa się częstotliwością próbkowania.\\
  137. \indent Twierdzenie Kotielnikowa-Shannona, znane również jako twierdzenie Whittaker-Nyquist-Kotelnikov-Shannon, mówi o tym kiedy z danego sygnału dyskretnego $f^*(t)$ można odtworzyć sygnał ciągły $f(t)$.\\
  138. \indent Sygnał ciągły może być ponownie odtworzony z sygnału dyskretnego, jeśli był próbkowany z częstotliwością co najmniej dwa razy większą od granicznej częstotliwości swego widma.\\
  139. \indent Tę częstotliwość nazywa się częstotliwością Nyquista.
  140. Dyskretyzacja sygnału ciągłego zazwyczaj wiąże się z utratą części informacji o nim. Aby możliwe było jak najwierniejsze odtworzenie sygnału ciągłego, spełnione powinny być przede wszystkim dwa warunki
  141.  
  142. \begin{itemize}
  143. \item składowa podstawowa i składowe wyższych rzędów widma sygnału próbkowanego nie nachodzą na siebie.
  144. \end{itemize}
  145.  
  146. \indent W praktyce oznacza to, że widmo sygnału ciągłego musi być ograniczone do pewnego przedziału częstotliwości, a poza nim tłumione (1)
  147.  
  148. $$
  149. |F(j\omega)| = \left\{ \begin{array}{ll}
  150. \neq 0 & \textrm{dla $|\omega|<\omega_{g}$}\\
  151. = 0 & \textrm{dla $|\omega|\geqslant\omega_{g}$}\\
  152. \end{array} \right. \quad(1)
  153.  
  154. $$
  155.  
  156. \indent gdzie $\omega_{g}$ to częstotliwość graniczna widma (2)
  157.  
  158. $$
  159. \omega_{g}<\frac{\omega_{i}}{2}=\frac{\pi}{T} \quad(2)
  160. $$
  161.  
  162. $\omega_{i}$ to z kolei częstotliwość z jaką próbkowano sygnał
  163.  
  164. \begin{itemize}
  165. \item jest możliwość odfiltrowania składowej podstawowej widma sygnału próbkowanego bez zmiany wartości fazy i amplitudy.
  166. \end{itemize}
  167.  
  168. \indent Aby tego dokonać potrzebny jest filtr o transmitancji (3)
  169.  
  170. $$
  171. G(j\omega) = \left\{ \begin{array}{ll}
  172. 1 & \textrm{dla $0<\omega<\frac{\pi}{T}$}\\
  173. 0 & \textrm{dla $\omega\geqslant\frac{\pi}{T}$}\\
  174. \end{array} \right. \quad(3)
  175. $$
  176.  
  177. \indent Filtry posiadają jednak zazwyczaj transmitancję jedynie zbliżoną do powyższej, stąd pełna rekonstrukcja sygnału ciągłego jest niemożliwa.\\
  178. \indent Jeśli opisane twierdzeniem Kotielnikowa-Shannona warunki nie są spełnione, pojawia się problem aliasingu. [14]\\
  179. \indent Poniższa Tabela nr 2.1 prezentuje 3 najczęściej wykorzystywane częstotliwości próbkowania.
  180.  
  181. \indent Urządzenia cyfrowe, takie jak komputer, laptop, itp. muszą dokonywać próbkowania sygnału, gdzie każda z nich odpowiada odstępowi czasu. Każdą z nich, można powiązać z ciśnieniem powietrza (wartość w danej chwili). Taki sposób zapisu powoduje, że dźwięk to wartość dla każdego przedziału czasu. Zapis w urządzeniu (kwantyzacja sygnału), może zostać dokonana np. w systemie 8-bitowym lub 16-bitowym, gdzie im większa ilość bitów, tym lepsza jakość oraz większa zajętość pliku na dysku.
  182.  
  183. \begin{table}[h]
  184. \centering
  185. \caption{Przykłady użycia częstotliwości próbkowania [8]}
  186. \begin{tabular}{|s|p{9cm}|}
  187. \hline
  188. Częstotliwość & Przykład użycia \\ \hline
  189. 32 kHz & cyfrowy sygnał radiowy FM \\ \hline
  190. 44.1 kHz & profesjonalny sygnał audio i płyt kompaktowych, jakość dźwięku CD \\ \hline
  191. 48 kHz & profesjonalny cyfrowy zapis wielościeżkowego dźwięku oraz dla urządzeń rejestrujących \\ \hline
  192. \end{tabular}
  193. \end{table}
  194.  
  195. \subsection{Formaty zapisu cyfrowego}
  196.  
  197. \indent \indent W niniejszej pracy został użyty jeden z popularniejszych formatów zapisu dźwięku do plików. Standard WAV.\\
  198. \indent WAV - Waveform Audio File Format. Standard opracowany przez Microsoft i IBM w 1991 roku. WAV jest tylko kontenerem Windows, dla formatów audio. Plik WAV może zawierać skompresowane audio. Wiele plików tego typu, posiada nieskompresowany dźwięk w formacie PCM. Plik WAV to tylko „opakowanie” kodowania PCM [9].\\
  199.  
  200. \section{Transformata Fouriera}
  201.  
  202. \indent \indent Bardzo ważne jest, aby zwrócić uwagę na dwa pojęcia. Termin transformacja Fouriera, odnosi się do obliczania widma. Natomiast termin transformata Fouriera, jest to wynik przekształcenia.
  203.  
  204. \subsection{Transformata Fouriera (DFT)}
  205. \input {TransformataFouriera/DFT.tex}
  206.  
  207. \subsection{Krótka transformata Fouriera (STFT)}
  208. \input {TransformataFouriera/STFT.tex}
  209.  
  210. \clearpage
  211.  
  212. \section{Pięciolinia}
  213.  
  214. \indent \indent Pięciolinia służy do zapisu dźwięków oraz różnych określeń wykonawczych. Dźwięki na pięciolinii reprezentowane są za pomocą nut. Nuty mogą określać konkretny dźwięk dopiero, gdy zostanie użyty jeden z kluczy muzycznych, np. klucz wiolinowy. Nuty zapisane na pięciolinii bez użycia klucza muzycznego nie określają żadnych konkretnych dźwięków.
  215. Pięciolinia składa się z pięciu linii ułożonych poziomo. Linie te zostały ponumerowane. Liczenie linii rozpoczynamy od dołu. Najniższa linia, to pierwsza linia; następne: druga, trzecia, czwarta, piąta. Linie zostały ponumerowane, aby łatwo można było słownie określić położenie nuty – Rysunek 2.6. [11]
  216.  
  217. \begin{figure}[h]
  218. \centering
  219. \includegraphics[width=0.5\textwidth]{Pliki/Rysunek5.png}
  220. \caption{Pięciolinia z numerami linii}
  221. \label{fig:mesh1}
  222. \end{figure}
  223.  
  224. \indent Klucz wiolinowy nie jest jedynym kluczem muzycznym. Zgodnie z jego nazwą, klucz muzyczny służy do otwierania. Klucz muzyczny otwiera możliwość odczytania nut z pięciolinii – Rysunek 2.7.
  225.  
  226. \begin{figure}[h]
  227. \centering
  228. \includegraphics[width=0.1\textwidth]{Pliki/Rysunek6.png}
  229. \caption{Klucz wiolinowy}
  230. \label{fig:mesh1}
  231. \end{figure}
  232.  
  233. \indent Dodatkowo na pięciolinii znajdują się 4 pola. Pola znajdują się pomiędzy liniami. Każde pole jest liczone w podobny sposób jak linie w pięciolinii, czyli od dołu – Rysunek 2.8. Nuty zapisujemy zarówno na liniach, jak i pomiędzy nimi, czyli na polach – Rysunek 2.9.
  234.  
  235. \begin{figure}[h]
  236. \centering
  237. \includegraphics[width=0.5\textwidth]{Pliki/Rysunek7.png}
  238. \caption{Ponumerowane pola na pięciolinii}
  239. \label{fig:mesh1}
  240. \end{figure}
  241.  
  242. \indent Nuty zapisuje się także pod pięciolinią oraz nad pięciolinią. Nutę zapisaną pod pięciolinią określa się, że leży pod pierwszą linią. Analogicznie nuta zapisana nad pięciolinią określana będzie, że leży nad piątą linią. Dla przykładu nuta d1 leży pod pierwszą linią w kluczu wiolinowym, a nuta g2 leży nad piątą linią. [11]
  243.  
  244. \begin{figure}[h]
  245. \centering
  246. \includegraphics[width=0.9\textwidth]{Pliki/Rysunek8.png}
  247. \caption{Zapis nut na pięciolinii}
  248. \label{fig:mesh1}
  249. \end{figure}
  250.  
  251. \indent W praktyce używamy 88 różnych dźwięków. Nuty możemy zapisywać także na liniach dodanych, dolnych i górnych, oraz pod nimi i nad nimi. Możemy powiedzieć, że nuta a2 leży na pierwszej górnej dodanej (w domyśle linii) w kluczu wiolinowym, nuta h2 leży nad pierwszą górną dodaną w kluczu wiolinowym, nuta a leży na drugiej dolnej dodanej w kluczu wiolinowym, nuta g leży pod drugą dolną dodaną w kluczu wiolinowym.[11]\\
  252. \indent W zależności od instrumentu muzycznego, dla jednego wykonawcy zapis dźwięków może być zapisywany na jednej lub kilku pięcioliniach jednocześnie. Dobrym przykładem zapisu na kilku pięcioliniach jest zapis partii fortepianu, która najczęściej zapisywana jest na dwóch pięcioliniach; prawa ręka w kluczu wiolinowym, a lewa w kluczu basowym.
  253.  
  254. \chapter {Uruchomienie oraz wynik działania aplikacji} \label{rozdz.uruchomienie}
  255.  
  256. \indent \indent Aplikację w języku Python należy (w zależności od systemu) uruchomić w konsoli systemowej. Przykładowo, została uruchomiona w systemie Microsoft Windows z zainstalowanym interpreterem języka Python w wersji 3.6.4\footnote{https://www.python.org/downloads/}. Uruchomienie skryptu o nazwie newMain.py, spowoduje rozpoczęcie interakcji z użytkownikiem - Rysunek 3.1.\\
  257. \indent Skrypt prosi użytkownika o dokonanie wyboru akcji w menu, prezentując 9 dostępnych opcji. Prawidłowe uruchomienie aplikacji polega na wskazaniu wartości w 9 polach, gdzie po uruchomieniu aplikacja parsuje parametry uruchomieniowe i dokonuje zgodnie z nimi obliczenia oraz prezentacje wyników. Rysunek nr 9, prezentuje domyślny widok po uruchomieniu aplikacji.
  258.  
  259. \begin{figure}[h]
  260. \centering
  261. \includegraphics[width=0.9\textwidth]{Pliki/Rysunek9.png}
  262. \caption{Monit po uruchomieniu aplikacji}
  263. \label{fig:mesh1}
  264. \end{figure}
  265.  
  266. \newpage
  267.  
  268. \indent Jako możliwe opcje do wyboru, użytkownik może wybrać m.in. wybór pliku dźwiękowego, możliwość prezentacji spektrogramu, wykresu częstotliwości od numeru \textit{chunk’a}, analizę przebiegu częstotliwości, prezentację nut, oraz odtworzenie dźwięku.\\
  269. \indent Jako możliwe do wyboru nazwy plików dźwiękowych – opcja nr 2, użytkownik ma dostarczone 5 przykładowych plików dźwiękowych znajdujących się w folderze \textit{Sound} – Rysunek 3.2.
  270.  
  271. \begin{figure}[h]
  272. \centering
  273. \includegraphics[width=0.6\textwidth]{Pliki/Rysunek10.png}
  274. \caption{Przykładowe pliki dźwiękowe znajdujące się w katalogu Sounds}
  275. \label{fig:mesh1}
  276. \end{figure}
  277.  
  278. \indent Podczas działania, aplikacja z zaznaczoną opcją nr 3 na \textit{True}, zaprezentuje wykres spektrogramu mocy – Rysunek 3.3.\\
  279. \indent Spektrogram to najczęściej używany tryb wizualizacji wyników analizy\\ czasowo-częstotliwościowej, gdzie oś pozioma oznacza czas, natomiast oś pionowa oznacza częstotliwość. Na wykresie za pomocą barwy i jasności, został zaprezentowany poziom składowych (lub amplitudy).
  280.  
  281. \begin{figure}[h]
  282. \centering
  283. \includegraphics[width=1\textwidth]{Pliki/Rysunek11.png}
  284. \caption{Spektrogram mocy}
  285. \label{fig:mesh1}
  286. \end{figure}
  287.  
  288. \newpage
  289.  
  290. \indent Użytkownik oznaczając opcję nr 4 jako \textit{True}, uzyska możliwość prezentacji wykresu zależności częstotliwości od numeru \textit{chunk’a}. Prezentowany wykres – Rysunek 3.4, na podstawie którego są dokonywane obliczenia miejsc i rodzaj nut prezentuje skoki lub spadki zależności częstotliwości od numeru \textit{chunk’a}. Dany skok świadczy o zmianie nuty, a wartość stała pomiędzy zboczami świadczy o jej czasie trwania. Przykładowo dla zbocza między 10 a 15 \textit{chunk’iem}, trwający 5 \textit{chunk’ów}, została uśredniona częstotliwość bazowa, z której możemy wywnioskować, iż jest to nuta.
  291. \clearpage
  292.  
  293. \begin{figure}[h]
  294. \centering
  295. \includegraphics[width=1\textwidth]{Pliki/Rysunek12.png}
  296. \caption{Wykres częstotliwości od numeru chunk'a}
  297. \label{fig:mesh1}
  298. \end{figure}
  299.  
  300. \indent Na rysunku nr 3.5, widać analizę przebiegu wykresu zależności częstotliwości od numeru \textit{chunk’a} – włączona opcja nr 5.\\
  301. \indent Analiza przebiegu częstotliwości opisuje, gdzie jest nuta, skok bądź spadek – zbocza. Zależnie od \textit{epsilona} różnicy między danym zboczem, a jego następcą, zostaje ustalona informacja o istniejącej nucie w danym obszarze.
  302.  
  303. \begin{figure}[h]
  304. \centering
  305. \includegraphics[width=0.35\textwidth]{Pliki/Rysunek13.png}
  306. \caption{Wynik programu dla pliku \textit{Piano1.wav}}
  307. \label{fig:mesh1}
  308. \end{figure}
  309.  
  310. \clearpage
  311.  
  312. \indent Ustawienie opcji nr 6 na \textit{True} spowoduje wypisanie nut i ich czasów trwania w danym utworze - Rysunek 3.6.
  313.  
  314. \begin{figure}[h]
  315. \centering
  316. \includegraphics[width=0.6\textwidth]{Pliki/Rysunek16.png}
  317. \caption{Konsolowa prezentacja nut i ich czasów trwania}
  318. \label{fig:mesh1}
  319. \end{figure}
  320.  
  321. \indent Ostatnią opcją, którą może ustawić użytkownik, jest możliwość prezentacji uzyskanych nut na pięciolinii w formacie PDF - Rysunek 3.7.
  322.  
  323. \begin{figure}[h]
  324. \centering
  325. \includegraphics[width=0.9\textwidth]{Pliki/Rysunek14.png}
  326. \caption{Wynikowa pięciolinia z umieszczonymi odczytanymi nutami}
  327. \label{fig:mesh1}
  328. \end{figure}
  329.  
  330. \indent Aplikacja pozwala także na odtworzenie dźwięku, który jest przetwarzany – opcja nr 7. Za pomocą opcji nr 8 możemy włączyć/wyłączyć podgląd nut w pliku PDF. Po dokonaniu ustawień, należy uruchomić aplikację wybierając opcję nr 1. Wyjście z aplikacji znajduje się pod literą \textit{q}.
  331.  
  332. \chapter {Implementacja} \label{rozdz.implementacja}
  333.  
  334. \section{Opis działania aplikacji}
  335.  
  336. \indent \indent Kod zaprojektowano w taki sposób, aby jak najprostsza była jego modyfikacja. Obiekty, które można tworzyć w języku Python pozwalają na logiczne rozdzielenie kodu, oraz stworzenie niezależnych, działających obok siebie funkcjonalności, które można prostym sposobem łączyć, przesyłać między nimi dane oraz zarządzać. Główną metodą całego programu, jest \textit{main()}, której instancja znajduje się w pliku \textit{newMain.py}.
  337. Ponadto aplikacja posiada jeszcze trzy inne pliki, zawierające pozostałe metody – wymienione w Tabela nr 4.1.
  338.  
  339. \clearpage
  340.  
  341. \begin{table}[]
  342. \centering
  343. \caption{Główne 4 pliki aplikacji konwertera dźwięku}
  344. \label{my-label}
  345. \begin{tabular}{|c|c|l|}
  346. \hline
  347. L.p. & Nazwa pliku & \multicolumn{1}{c|}{Opis} \\ \hline
  348. 1. & stereoToMonoConverter.py & \begin{tabular}[c]{@{}l@{}}W pliku dokonuje się konwersja z pliku\\ stereo do mono z obsługą kanałów\\ dźwiękowych\end{tabular} \\ \hline
  349. 2. & frequencyConverter.py & \begin{tabular}[c]{@{}l@{}}Na pliku dźwiękowym zostaje ustalona \\ szerokość okna (\textit{chunk}), na którym zostanie \\ dokonana szybka transformata Fouriera, \\ interpolacja kwadratowa oraz \\ zostanie przeliczona częstotliwość.\end{tabular} \\ \hline
  350. 3. & navigation.py & Zawiera Menu wyboru dla użytkownika \\ \hline
  351. 4. & newMain.py & \begin{tabular}[c]{@{}l@{}}Wywołuje wyżej wymienione funkcje \\ oraz odpowiada, za narysowanie nut i \\ zwrócenie wyniku w formacie .PDF, \\ zawierającego pięciolinię z odczytanymi \\ nutami.\end{tabular} \\ \hline
  352. \end{tabular}
  353. \end{table}
  354.  
  355. \indent Projekt aplikacji składa się z 4 plików zawierających kod w języku Python, oraz 3 folderów, w których zostały przechowane przykładowe pliki dźwiękowe – wykorzystane podczas standardowego wejścia aplikacji. Wyniki zostają zapisywane do folderu o nazwie \textit{Wykresy}, gdzie znajdują się wykresy zaprezentowane użytkownikowi – Rysunek 4.1.
  356.  
  357. \clearpage
  358.  
  359. \begin{figure}[h]
  360. \centering
  361. \includegraphics[width=0.4\textwidth]{Pliki/Rysunek15.png}
  362. \caption{Lista plików wchodzących w skład programu}
  363. \label{fig:mesh1}
  364. \end{figure}
  365.  
  366. \indent Poniżej zostały zaprezentowane fragmenty kodu poszczególnych metod wraz z komentarzami dotyczącymi każdego z ich elementów składowych.
  367.  
  368. \subsection{Metoda \textit{main} z pliku \textit{newMain.py}}
  369. \input {DzialanieAplikacji/metoda_main.tex}
  370.  
  371. \subsection{Metoda \textit{pitch} z pliku \textit{frequencyConverter.py}}
  372. \input {DzialanieAplikacji/metoda_Pitch.tex}
  373.  
  374. \subsection{Metoda \textit{getNotes} z pliku \textit{frequencyConverter.py}}
  375. \input {DzialanieAplikacji/metoda_getNotes.tex}
  376.  
  377. \subsection{Metoda \textit{convert} z pliku \textit{stereoToMonoConverter.py}}
  378. \input {DzialanieAplikacji/metoda_convert.tex}
  379.  
  380. \subsection{Metoda \textit{menu} z pliku \textit{navigation.py}}
  381. \input {DzialanieAplikacji/metoda_menu.tex}
  382.  
  383. \chapter {Podsumowanie} \label{rozdz.podsumowanie}
  384.  
  385. \indent \indent Niniejsza praca miała za zadanie stworzyć aplikację, której celem było, na podstawie pliku dźwiękowego wydobyć zawierające się w nim nuty i umieścić je na pięciolinii. Aplikacja prawidłowo rozpoznaje nuty dla pianina lub fortepianu. Praca, którą wykonano, prezentuje możliwości języka Python oraz pokazuje, że poprawnie wykorzystana matematyka pozwala stworzyć ciekawe rozwiązania.\\
  386. \indent Programista chcąc wykorzystać projekt stworzony przeze mnie, powinien nadpisać przygotowaną metodę main, w sposób pozwalający na zaprezentowanie danych w nowy sposób.\\
  387. \indent Jednym z możliwych sposobów dalszej rozbudowy aplikacji jest wykorzystanie jej do rozpoznawania nut w innych instrumentach.
  388.  
  389. \input{Bibliografia.tex}
  390.  
  391. \end{document}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement