summaryrefslogtreecommitdiffstats
path: root/thesis
diff options
context:
space:
mode:
Diffstat (limited to 'thesis')
-rw-r--r--thesis/thesis.tex107
1 files changed, 82 insertions, 25 deletions
diff --git a/thesis/thesis.tex b/thesis/thesis.tex
index 4afc5d3..3af48f2 100644
--- a/thesis/thesis.tex
+++ b/thesis/thesis.tex
@@ -25,6 +25,8 @@
\definecolor{osc-in}{RGB}{0,0,255}
\definecolor{audio-in}{RGB}{255,0,0}
\definecolor{audio-out}{RGB}{0,206,0}
+\definecolor{pubsub-in}{RGB}{128,0,0}
+\definecolor{controller-in}{RGB}{0,128,0}
\usepackage{hyperref}
\hypersetup{hidelinks, colorlinks = false}
@@ -33,16 +35,22 @@
% glossary
\usepackage[acronym,nonumberlist,toc]{glossaries}
+\newacronym{adat}{ADAT}{Alesis Digital Audio Tape}
+\newacronym{alsa}{ALSA}{Advanced Linux Sound Architecture}
+\newacronym{api}{API}{Application programming interface}
\newacronym{asdf}{ASDF}{Audio Scene Description Format}
\newacronym{bs}{BS}{Binaural Synthesis}
\newacronym{brs}{BRS}{Binaural Room Synthesis}
\newacronym{cnmat}{CNMAT}{Center for New Music and Audio Technologies}
\newacronym{gpl}{GPL}{GNU General Public License}
\newacronym{lgpl}{LGPL}{GNU Lesser General Public License}
+\newacronym{lts}{LTS}{Long Term Support}
\newacronym{hoa}{HOA}{Higher Order Ambisonics}
\newacronym{ip}{IP}{Internet Protocol}
\newacronym{jack}{JACK}{JACK Audio Connection Kit}
+\newacronym{madi}{MADI}{Multichannel Audio Digital Interface}
\newacronym{oop}{OOP}{Object-oriented Programming}
+\newacronym{os}{OS}{Operating System}
\newacronym{osc}{OSC}{Open Sound Control}
\newacronym{posix}{POSIX}{Portable Operating System Interface}
\newacronym{pubsub}{PubSub}{Publish-subscribe message pattern}
@@ -57,7 +65,8 @@
\makeindex
\makeglossaries
-
+\usepackage{tocloft}
+\setcounter{secnumdepth}{4}
\graphicspath{{../images//}}
@@ -72,7 +81,8 @@
{\huge\bfseries A Networking Extension for the SoundScape Renderer\par}
\vspace{2cm}
{\Large\itshape David Runge\par}
- \href{dave@sleepmap.de}{dave@sleepmap.de}
+ {\large (340592)}\\
+ \href{dave@sleepmap.de}{dave@sleepmap.de}\\
\vfill
supervised by\par
Henrik von Coler and Stefan Weinzierl
@@ -109,6 +119,25 @@
to turn it into a networking application for large scale \gls{wfs} setups.
\end{abstract}
+ \renewcommand{\abstractname}{Zusammenfassung}
+ \begin{abstract}
+ \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.\\
+ The still evolving implementations are driven by several rendering
+ engines, of which two free and open-source ones, namely sWONDER and
+ SoundScape Renderer, have (partially) been developed at TU Berlin.\\
+ The latter due to its current design is not yet able to render for large
+ scale setups, ie.\ those using several computers to render audio on a
+ loudspeaker setup, due to the high amount of channels.\\
+ Its solid codebase however, which additionally offers a framework for many
+ 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 \gls{wfs} setups.
+ \end{abstract}
+
\tableofcontents
\cleardoublepage
\pagestyle{headings}
@@ -221,8 +250,8 @@
available loudspeakers.
\cleardoublepage
- \section{Methods}
- \label{sec:methods}
+ \section{Implementation}
+ \label{sec:implementation}
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 \gls{wfs} setups. These type
@@ -264,26 +293,43 @@
needed, be controlled via \gls{osc}.
\subsection{Prelimenaries}
\label{subsec:preliminaries}
- In preparation to the work an implement a side-by-side
- installation, using Arch Linux on a medium scale setup, facilitating 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
- real-time, low-latency Linux kernel), trying out new software features,
- 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 \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, \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 \gls{ssr} features.
+ In preparation to this work, an implemention of a side-by-side
+ installation to the \gls{os} currently driving the \gls{wfs} system setup
+ of the Electronic Studio at TU Berlin
+ \citep{website:tu-electronic_studio} was attempted for testing
+ purposes.\\
+ Arch Linux \citep{website:archlinux} was installed and configured to run
+ the medium scale setup. Unfortunately the proprietary Dante
+ \citep{website:audinate} driver for Linux, offered by Four Audio
+ \citep{website:fouraudio}, creates non-trivial circumstances for using it
+ on an up-to-date Linux kernel, due to \gls{alsa} \gls{api} changes not
+ accounted for.\\
+ While the current \gls{os} - an Ubuntu \citep{website:ubuntu} Studio
+ 2012 \gls{lts} - still runs well in its own parameters, its support has run
+ out and it is therefore becoming harder, if not impossible, to build
+ newer software on it, using newer versions of free software compilers.\\
+ For research purposes however, it is desirable to be able to try new
+ kernel and software features, finding the most stable and secure setup
+ possible involving realtime enabled kernels and building new versions of
+ (spatialisation) software on a regular basis.\\
+ The hardware of the large scale setup at TU Berlin in room H0104 was
+ being updated and unusable at the time of writing. In the future it will
+ however become a valuable candidate for testing of the sought after
+ \gls{ssr} features, as its setup involves no Dante network, but is
+ instead run by several rendering computers connected to \gls{madi} and
+ \gls{adat} lightpipe enabled speaker systems.\\
+ Although a \gls{wfs} setup for testing purposes was eligible, it
+ generally is not needed for implementing (a subset of) the features
+ described in \nameref{sec:implementation}, as they can be tested using
+ two machines running Linux, \gls{jack} and a development version of
+ the \gls{ssr}.\\
\subsection{Outline}
\label{subsec:outline}
- Initially extending the \gls{ssr}'s features was aimed at
+ As described in \nameref{sec:implementation}, initially extending the
+ \gls{ssr}'s features was aimed at in the scope of creating a replacement
+ for the aging sWONDER software, enabling it to run networked instances to
+ drive a medium or large scale \gls{wfs} setup.\\
+
\subsubsection{Remote controlling a server}
\label{subsubsec:remote_controlling_a_server}
\subsubsection{Remote controlling clients}
@@ -312,6 +358,17 @@
This system enables a versatile messaging layout, in which components can
call the publisher functionality in Controller, which in turn will send
out messages to all of its subscribers.
+ \begin{figure}[!htb]
+ \centering
+ \includegraphics[scale=0.6, trim = 6mm 91mm 12mm 10mm, clip]
+ {ssr-publisher-with-all-subscribers.pdf}
+ \caption{A diagram depicting a simplified version of the \gls{pubsub}
+ used within the \gls{ssr}.\\
+ {\color{pubsub-in}\textbf{--}} Calls from Publisher to Subscriber
+ {\color{controller-in}\textbf{--}} Calls Subscribers to Controller (Publisher)
+ }
+ \label{fig:ssr-publisher-with-all-subscribers}
+ \end{figure}
\subsection{IP interface}
\label{subsec:ip-interface}
@@ -360,7 +417,7 @@
SuperCollider \citep{website:supercollider}) since then.\\
\gls{osc}'s syntax is defined by several parts, which are discussed
briefly in this section.\\
- /begin{itemize}
+ \begin{itemize}
\item Atomic data types, which are also reflected in type tags (see
Table~\ref{tab:ssr-osc-data-type-acronyms} for details)
\item Address patterns (a \gls{osc}-string starting with a “/”)
@@ -372,7 +429,7 @@
\item Bundles, consisting of a set of Messages.
\item Packets, the unit of transmission (sent over \gls{udp} or
\gls{tcp}), consisting of a message or a bundle.
- /end{itemize}
+ \end{itemize}
According to the specification, applications sending \gls{osc} packets
are considered a client and the ones receiving packets a server.
Applications can therefore be client and server at the same time.
@@ -870,7 +927,7 @@
Table~\ref{tab:ssr-osc-processing-tracker-transport},
Table~\ref{tab:ssr-osc-scene} and Table~\ref{tab:ssr-osc-source}.
}
- \label{tab:ssr-osc-source}
+ \label{tab:ssr-osc-update}
\end{table}
\cleardoublepage