From 72fabd589707f9e9c9d06e74bded585fb20468d4 Mon Sep 17 00:00:00 2001 From: sternenseemann Date: Thu, 28 Sep 2017 13:54:38 +0200 Subject: doc: last fixes --- doc/einreichung/einreichung.pdf | Bin 1207899 -> 1207308 bytes doc/einreichung/einreichung.tex | 20 ++++++++++---------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/doc/einreichung/einreichung.pdf b/doc/einreichung/einreichung.pdf index ec0fb9a..c5150ab 100644 Binary files a/doc/einreichung/einreichung.pdf and b/doc/einreichung/einreichung.pdf differ diff --git a/doc/einreichung/einreichung.tex b/doc/einreichung/einreichung.tex index e8bb361..4d54581 100644 --- a/doc/einreichung/einreichung.tex +++ b/doc/einreichung/einreichung.tex @@ -69,7 +69,7 @@ zwei Schulstunden: Nämlich ein Modell, um Musik zu beschreiben, die zufällig i Das Modell, das ich aus Angst es zu vergessen, mehrmals aufschrieb, sieht Musik als gerichteten Graphen, wobei die Knoten Musiknoten einer bestimmten Länge und die Kanten zwischen ihnen die Wahrscheinlichkeit des -Wechsel von der einen Note zu anderen sind. Vorstellen kann man sich es in etwa wie +Wechsel von der einen Note zur anderen sind. Vorstellen kann man sich es in etwa wie in der folgenden Grafik. \begin{figure}[h] @@ -149,7 +149,7 @@ Performance-Probleme mit meinem maschinennahen Audio-Code. Also entschied ich mich, die Library vor allem auf den Graphen und die dazugehörigen Algorithmen zu fokusieren und zur Tonerzeugung eine geeignete Abstraktion zu verwenden, um diese zu vereinfachen. Ich habe hierfür MIDI -gewählt, eine Technologie, die schon lang in allen Arten von Software und +gewählt, eine Technologie, die schon lange in allen Arten von Software und Hardware zur Musikproduktion verwendet wird. MIDI basiert auf einer Abfolge von zeitlich abgestimmten Nachrichten, wie zum Beispiel ›Note C an‹ oder ›Note C aus‹. Aufgrund dieser Nachrichten kann man die Erzeugung und das @@ -179,11 +179,11 @@ genau das sehr leicht realisiert werden: Man verwendet die Knoten als Schlüssel eine Liste von Kanten, die vom Schlüssel weggehen, als Elemente. Wenn der Algorithmus nun einen Knoten nachschlägt, erhält er direkt die Kanten, die von diesem Knoten weggehen und somit auch die nächsten möglichen Knoten. Dies -ist die einzige Information, die in jedem Schritt benötigt wird. Die Operation +ist die einzige Information, die in jedem Schritt des Algorithmus benötigt wird. Die Operation des Nachschlagens hat in einem {\it Map} die Komplexität $O(\log n)$ \cite{map_lookup}, d. h. die Zeit, die benötigt wird, um ein Element nachzuschlagen, steigt mit dem Wachsen der Datenstruktur logarithmisch -(d. h. weniger starkes Wachstum als linear!). Damit bleibt auch das Interpretieren +(d. h. weniger starkes Wachstum als lineares!). Damit bleibt auch das Interpretieren großer Graphen ziemlich schnell. Der Code für die Datenstruktur findet sich im Abschnitt~\nameref{sec:library}, Zeile 30 bis 43. @@ -267,7 +267,8 @@ Der Server basiert auf den Libraries servant \cite{servant} als Webframework. Wie im Abschnitt~\nameref{sec:backend} zu sehen, besteht das Serverbackend aus zwei Dateien Quelltext: In \lstinline|Api.hs| wird die Struktur der REST-API \cite{wikipedia_rest} definiert, mittels der die -Webapplikation mit dem Server kommuniziert. Die API bietet folgende Funktionalität +Webapplikation mit dem Server kommuniziert. In \lstinline|Main.hs| wird die +Funktionalität konkret implementiert. Die API bietet folgende Funktionalität an: \begin{itemize} @@ -283,7 +284,7 @@ an: nötige HTML, JavaScript und CSS. \end{itemize} -Die erwähnten Parameter sind nur folgende drei: +Die erwähnten Parameter sind folgende drei: \begin{itemize} \item Der Anfangsknoten der Interpretation im Graphen, @@ -367,10 +368,9 @@ links betätigt, nimmt die Applikation alle Parameter sowie den aktuellen Graphe und sendet mithilfe der JavaScript Fetch API \cite{fetch_api} den Graphen mitsamt der Parameter an den bereits erwähnten Endpunkt \lstinline|/interpretation/wav|. Nach diesem Vorgang, der merklich Zeit benötigt, -da fluidsynth \cite{fluidsynth} erst das WAV generieren muss, wird die -Audiodatei in den Player geladen\footnote{Dabei muss man ein wenig Geduld haben, -vor allem, wenn es über das Internet geschieht, da erst das WAV generiert und -dann noch über das Internet geladen werden muss} und kann direkt angehört werden. +da fluidsynth \cite{fluidsynth} erst das WAV generieren und die Webapplikation +dieses erst über das Netzwerk geladen werden muss, wird die +Audiodatei in den Player geladen und kann direkt angehört werden. Gleich unter dem Player kann man die Interpretation als MIDI oder WAV herunterladen. Dazu wählt man rechts eines der beiden Formate aus und klickt -- cgit 1.4.1