From 1b1bead23fea35fc96c20b28e412638b1e708396 Mon Sep 17 00:00:00 2001
From: David Runge <dave@sleepmap.de>
Date: Fri, 9 Jun 2017 02:00:48 +0200
Subject: thesis/thesis.tex: Adding glossary. Adding acronyms. Adding index and
 glossary page. Restructuring sections to reflect
 introduction-methods-results-discussion pattern. Adding labels for all
 sections/subsections. Moving subsections under discussion to paragraphs.

---
 thesis/thesis.tex | 183 +++++++++++++++++++++++++++++++++++-------------------
 1 file changed, 119 insertions(+), 64 deletions(-)

(limited to 'thesis/thesis.tex')

diff --git a/thesis/thesis.tex b/thesis/thesis.tex
index 92523fd..2630191 100644
--- a/thesis/thesis.tex
+++ b/thesis/thesis.tex
@@ -25,6 +25,20 @@
 \hypersetup{hidelinks, colorlinks = false}
 \usepackage[font=scriptsize]{caption}
 \usepackage[authoryear]{natbib}
+
+% glossary
+\usepackage[acronym,nonumberlist,toc]{glossaries}
+\newacronym{bs}{BS}{Binaural Synthesis}
+\newacronym{hoa}{HOA}{Higher Order Ambisonics}
+\newacronym{jack}{JACK}{JACK Audio Connection Kit}
+\newacronym{osc}{OSC}{Open Sound Control}
+\newacronym{pubsub}{PubSub}{Publish-subscribe message pattern}
+\newacronym{ssr}{SSR}{SoundScape Renderer}
+\newacronym{vbap}{VBAP}{Vector Based Amplitude Panning}
+\newacronym{wfs}{WFS}{Wave Field Synthesis}
+\makeindex
+\makeglossaries
+
 \graphicspath{{../images//}}
 
 \begin{document}
@@ -58,7 +72,7 @@
   David Runge
 
   \begin{abstract}
-    Wave Field Synthesis (WFS) as a technological concept has been around for
+    \gls{wfs} as a technological concept has been around for
     many years now and all over the world several institutions run small and
     some even large scale setups ranging from single speaker lines to those
     facilitating a couple of hundred loudspeakers respectively.\\ 
@@ -72,37 +86,24 @@
     more renderering types, and the ongoing development, deems further work on
     this application a good future investment.\\ 
     This work is about the extension of the SoundScape Renderer's functionality
-    to turn it into a networking application for large scale WFS setups.
+    to turn it into a networking application for large scale \gls{wfs} setups.
   \end{abstract}
 
-  \setcounter{tocdepth}{4}
   \tableofcontents
-  \clearpage
-  \pagebreak
+  \cleardoublepage
   \pagestyle{headings}
   \setcounter{page}{1}
 
   \section{Introduction}
-    Wave Field Synthesis (WFS) describes a spatial technique for rendering
-    audio. As such it aims at synthesizing a sound field of desired acoustic
-    preference in a given listening area, assuming a planar reproduction to be
-    most suitable for most applications.\\
-    WFS is typically implemented using a curved or linear loudspeaker array
-    surrounding the listening area.\\
-    Several free and open-source renderer applications exist for WFS
-    environments, with varying stages of feature richness.\\
-    The proposed work will focus on one of them and its extension towards WFS
-    on large scale systems.
+    \label{sec:introduction}
 
-  \section{Spatial audio renderers and their appliance}
-    \subsection{Wave Field Synthesis}
-    \subsection{Higher Order Ambisonics and Vector Amplitude Panning}
-    \subsection{Binaural synthesis}
 
+  \cleardoublepage
   \section{Free and open-source spatial audio renderers}
+    \label{sec:freespatialaudiorenderers}
     To date there exist three (known of) free and open-source spatial audio
-    renderers, which are all \href{http://jackaudio.org/}{JACK Audio Connection
-    Kit (JACK)} \citep{website:jackaudio2016} clients: 
+    renderers, which are all \href{http://jackaudio.org/}{\gls{jack}}
+    \citep{website:jackaudio2016} clients:
     \begin{itemize}
       \item \href{https://sourceforge.net/projects/swonder/}{sWONDER}
         \citep{website:swonder2016}, developed by Technische Universität
@@ -111,28 +112,48 @@
         \citep{website:wfscollider2016}, developed by
         \href{http://gameoflife.nl/en}{Game Of Life Foundation}
         \citep{website:gameoflife2016}, The Hague, Netherlands
-      \item \href{http://spatialaudio.net/ssr/}{SoundScape Renderer (SSR)}
+      \item \href{http://spatialaudio.net/ssr/}{\gls{ssr}}
         \citep{website:ssr2016}, developed by Quality \& Usability Lab,
         Deutsche Telekom Laboratories and TU Berlin and Institut für
         Nachrichtentechnik, Universität Rostock 
     \end{itemize}
-    Currently only WFSCollider and the SSR are actively maintained and
+    Currently only WFSCollider and the \gls{ssr} are actively maintained and
     developed, thus sWONDER, although used in some setups, loses significance.
     Generally it can be said, that different concepts apply to the three
     renderers, which are about to be explained briefly in the following
     sections.
 
+    \subsection{Spatial audio renderers and their appliance}
+      \label{subsec:spatialaudiorenderersandtheirappliance}
+      \subsubsection{Wave Field Synthesis}
+        \label{subsubsec:wavefieldsynthesis}
+      \gls{wfs} describes a spatial technique for rendering
+      audio. As such it aims at synthesizing a sound field of desired acoustic
+      preference in a given listening area, assuming a planar reproduction to be
+      most suitable for most applications.\\
+      \gls{wfs} is typically implemented using a curved or linear loudspeaker array
+      surrounding the listening area.\\
+      Several free and open-source renderer applications exist for \gls{wfs}
+      environments, with varying stages of feature richness.\\
+      The proposed work will focus on one of them and its extension towards \gls{wfs}
+      on large scale systems.
+      \subsubsection{\gls{hoa} and \gls{vbap}}
+        \label{subsubsec:hoaandvbap}
+      \subsubsection{\gls{bs}}
+        \label{subsubsec:binaural}
+
     \subsection{WONDER}
+      \label{subsec:WONDER}
       sWONDER \citep{baalman2007} consists of a set of C++ applications that
-      provide binaural and WFS rendering. In 2007 it was specifically
-      redesigned \citep{baalmanetal2007} to cope with large scale WFS setups in
+      provide \gls{bs} and \gls{wfs} rendering. In 2007 it was specifically
+      redesigned \citep{baalmanetal2007} to cope with large scale \gls{wfs} setups in
       which several (computer) nodes, providing several speakers each, drive a
       system together.\\
       In these setups each node receives all available audio streams (which
       represent one virtual audio source respectively) redundantly and a master
       application signals which node is responsible for rendering what source
       on which speaker.\\
-      It uses Open Sound Control (OSC) for messaging between its parts and for
+      It uses \gls{osc} for messaging between its parts and for
       setting its controls. Apart from that, it can be controlled through a
       Graphical User Interface (GUI), that was specifically designed for it.
       Unfortunately sWONDER has not been actively maintained for several years,
@@ -140,7 +161,9 @@
       any time soon.
 
     \subsection{HOA-Pd}
+      \label{subsec:hoapd}
     \subsection{WFSCollider}
+      \label{subsec:wfscollider}
       WFSCollider was built on top of
       \href{https://supercollider.github.io}{SuperCollider} 3.5
       \citep{website:supercollider2016} and is also capable of driving large
@@ -152,7 +175,7 @@
       time lines and movement of sources through facilitating what the sclang
       (SuperCollider programming language) has to offer.\\
       As WFSCollider basically is SuperCollider plus extra features, it is also
-      an OSC enabled application and can thus also be used for mere
+      an \gls{osc} enabled application and can thus also be used for mere
       multi-channel playback of audio.\\
       Although it has many useful features, it requires MacOSX (Linux version
       still untested) to run, is built upon a quite old version of
@@ -160,66 +183,70 @@
       to be merged into it, due to many core changes to it.
 
     \subsection{SoundScape Renderer}
-      SoundScape Renderer (SSR), also a C++ application, running on Linux and
+      \label{subsec:soundscaperenderer}
+      \gls{ssr}, also a C++ application, running on Linux and
       MacOSX, is a multi-purpose spatial audio renderer, as it is not only
-      capable of Binaural Synthesis and WFS, but also Higher-Order Ambisonics
-      and Vector Base Amplitude Panning.\\
+      capable of \gls{bs} and \gls{wfs}, but also \gls{hoa}
+      and \gls{vbap}.\\
       It can be used with a GUI or headless (without one), depicting the
       virtual sources, their volumes and positions, alongside which speakers
       are currently used for rendering a selected source.
-      SSR uses TCP/IP sockets for communication and is therefore not directly
-      OSC enabled. This functionality can be achieved using the capapilities of
+      \gls{ssr} uses TCP/IP sockets for communication and is therefore not directly
+      \gls{osc} enabled. This functionality can be achieved using the capapilities of
       other applications such as \href{http://puredata.info}{PureData}
       \citep{website:puredata2016} in combination with it though.\\
-      Unlike the two renderers above, the SSR is not able to run large-scale
-      WFS setups, as it lacks the features to communicate between instances of
+      Unlike the two renderers above, the \gls{ssr} is not able to run large-scale
+      \gls{wfs} setups, as it lacks the features to communicate between instances of
       itself on several computers, while these instances serve a subset of the
       available loudspeakers.
 
-  \section{Extending Sound Scape Renderer functionality}
-    The SSR, due to its diverse set of rendering engines, which are made
+  \cleardoublepage
+  \section{Methods}
+    \label{sec:methods}
+    The \gls{ssr}, due to its diverse set of rendering engines, which are made
     available through an extensible framework, and its relatively clean
-    codebase, is a good candidate for future large scale WFS setups. These type
+    codebase, is a good candidate for future large scale \gls{wfs} setups. These type
     of features are not yet implemented though and will need testing.\\
     Therefore I propose the implementation and testing of said feature, making
-    the SSR capable of rendering on large scale WFS setups with many nodes,
+    the \gls{ssr} capable of rendering on large scale \gls{wfs} setups with many nodes,
     controlled by a master instance.\\
     The sought implementation is inspired by the architecture of sWONDER, but
     instead of creating many single purpose applications, the master/node
-    feature will be made available through flags to the ssr executable, when
+    feature will be made available through flags to the \gls{ssr} executable, when
     starting it. This behavior is already actively harnessed eg.\ for selecting
     one of the several rendering engines.
     \begin{figure}[!htb]
       \centering
       \includegraphics[scale=0.9, trim = 31mm 190mm 24mm 8mm, clip]
       {ssr-networking.pdf}
-      \caption{A diagram displaying the SSR master/node setup with TCP/IP
+      \caption{A diagram displaying the \gls{ssr} master/node setup with TCP/IP
         socket connections over network (green lines), audio channels (red
-          dashed lines) and OSC connection (blue dashed line). Machines are
+        dashed lines) and \gls{osc} connection (blue dashed line). Machines are
           indicated as red dashed rectangles and connections to audio hardware
-          as outputs of SSR nodes as black lines below them.}
+        as outputs of \gls{ssr} nodes as black lines below them.}
       \label{fig:ssr-networking}
     \end{figure}
-    While the SSR already has an internal logic to know which loudspeaker will
+    While the \gls{ssr} already has an internal logic to know which loudspeaker will
     be used for what virtual audio source, this will have to be extended to be
     able to know which renderer node has to render what source on which
     loudspeaker (see Figure~\ref{fig:ssr-networking}).
-    To achieve the above features, the SSR's messaging (and thus also settings)
+    To achieve the above features, the \gls{ssr}'s messaging (and thus also settings)
     capabilities have to be extended alongside its internal logic concerning
     the selection of output channels (and the master to node notification
     thereof). To introduce as little redundant code as possible, most likely a
     ``the client knows all'' setup is desirable, in which each node knows about
     the whole setup, but is also set to only serve its own subset of
     loudspeakers in it. This will make sure that the rendering engine remains
-    functional also in a small scale WFS setup.\\
-    The lack of a direct OSC functionality, as provided by the two other
+    functional also in a small scale \gls{wfs} setup.\\
+    The lack of a direct \gls{osc} functionality, as provided by the two other
     renderers, will not be problematic, as master and nodes can communicate
     through their builtin TCP/IP sockets directly and the master can, if
-    needed, be controlled via OSC.
+    needed, be controlled via \gls{osc}.
     \subsection{Prelimenaries}
+      \label{subsec:preliminaries}
       In preparation to the exposé I tried to implement a side-by-side
       installation, using Arch Linux on a medium scale setup, facilitating the
-      WFS system of the Electronic Studio at TU Berlin. Unfortunately the
+      \gls{wfs} system of the Electronic Studio at TU Berlin. Unfortunately the
       proprietary Dante driver, that is used in that system is very complex to be
       built, as well as underdeveloped and thus keeps the system from being
       easily updated, which is needed for testing purposes (finding a suitable
@@ -227,37 +254,65 @@
       building new software and keeping a system safe. The driver will most
       likely require changes to the hardware due to implemention of hardware
       branding by the vendor and dire testing before usage.\\
-      Although eventually using a proper WFS setup for testing will be necessary,
+      Although eventually using a proper \gls{wfs} setup for testing will be necessary,
       it is luckily not needed for implementing the features, as they can already
-      be worked out using two machines running Linux, JACK and the development
-      version
-      of SSR.\\
+      be worked out using two machines running Linux, \gls{jack} and the development
+      version of \gls{ssr}.\\
       The hardware of the large scale setup at TU Berlin in H0104 is currently
       about to be updated and therefore a valuable candidate for testing of the
-      sought after SSR features.
+      sought after \gls{ssr} features.
     \subsection{Outline}
+      \label{subsec:outline}
+      Initially extending the \gls{ssr}'s features was aimed
       \subsubsection{Remote controlling a server}
+        \label{subsubsec:remote_controlling_a_server}
       \subsubsection{Remote controlling clients}
-      \subsubsection{Rendering only on dedicated speakers}
+        \label{subsubsec:remote_controlling_a_client}
+      \subsubsection{Rendering on dedicated speakers}
+        \label{subsubsec:rendering_on_dedicated_speakers}
     \subsection{Publisher/Subscriber interface}
+      \label{subsec:publisher_subscriber_interface}
     \subsection{IP interface}
+      \label{subsec:ip-interface}
       \subsubsection{PureData integration}
-    \subsection{OSC interface}
+        \label{subsubsec:puredata_integration}
+  \cleardoublepage
+  \section{Results}
+    \label{sec:results}
+    \subsection{\gls{osc} interface}
+      \label{subsec:osc-interface}
       \subsubsection{liblo}
+        \label{subsubsec:liblo}
       \subsubsection{Client-Server setup}
-      \subsubsection{Multi-layered clients}
+        \label{subsubsec:client_server_setup}
+      \subsubsection{Layered clients}
+        \label{subsubsec:layered_clients}
       \subsubsection{Message interface}
-  \section{Future Work}
-    \subsection{Stress testing the OSC interface}
-    \subsection{Implementing a NullRenderer}
-    \subsection{Implementing AlienLoudspeaker}
-    \subsection{Interpolation of moving sources}
+        \label{subsubsec:message_interface}
+  \cleardoublepage
+  \section{Discussion}
+    \label{sec:discussion}
+    \paragraph{Stress testing the \gls{osc} interface}
+      \label{par:stress_testing_the_osc_interface}
+    \paragraph{Implementing a NullRenderer}
+      \label{par:implementing_a_nullrenderer}
+    \paragraph{Implementing AlienLoudspeaker}
+      \label{par:implementing_alienloudspeaker}
+    \paragraph{Interpolation of moving sources}
+      \label{par:interpolation_of_moving_sources}
 
-  \pagebreak
+  \pagestyle{empty}
+  \cleardoublepage
+  \addcontentsline{toc}{section}{\listfigurename}
   \listoffigures
-  \pagebreak
+  \cleardoublepage
+  \addcontentsline{toc}{section}{\listtablename}
   \listoftables
-  \pagebreak
+  \cleardoublepage
+  \printindex
+  \glsaddall
+  \printglossaries
+  \cleardoublepage
   \bibliographystyle{plainnat}
   \bibliography{../bib/ssr-networking}
 \end{document}
-- 
cgit v1.2.3-70-g09d2

