summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Runge <dave@sleepmap.de>2017-06-15 16:56:11 +0200
committerDavid Runge <dave@sleepmap.de>2017-06-15 16:56:11 +0200
commit5548a8554125b6f250d5b97e9c19ac1d66f1c7e2 (patch)
treed7a1374a2d85e0ead003a9c5198930c07546bd53
parent596b303849cc3fb1da037b4eb8591bdc284d2f7c (diff)
downloadmaster-thesis-5548a8554125b6f250d5b97e9c19ac1d66f1c7e2.tar.gz
master-thesis-5548a8554125b6f250d5b97e9c19ac1d66f1c7e2.tar.bz2
master-thesis-5548a8554125b6f250d5b97e9c19ac1d66f1c7e2.tar.xz
master-thesis-5548a8554125b6f250d5b97e9c19ac1d66f1c7e2.zip
thesis/thesis.tex: Adding subsection about free software and its pitfalls. Elaborating further on the pubsub diagram. Adding 3Dj to the free and open source spatial audio renderers. Updating closing words in section header for free and open-source spatial audio renderers.
-rw-r--r--thesis/thesis.tex116
1 files changed, 85 insertions, 31 deletions
diff --git a/thesis/thesis.tex b/thesis/thesis.tex
index 3af48f2..622b52a 100644
--- a/thesis/thesis.tex
+++ b/thesis/thesis.tex
@@ -41,7 +41,11 @@
\newacronym{asdf}{ASDF}{Audio Scene Description Format}
\newacronym{bs}{BS}{Binaural Synthesis}
\newacronym{brs}{BRS}{Binaural Room Synthesis}
+\newacronym{cicm}{CICM}{Centre de recherche Informatique et Création Musicale}
\newacronym{cnmat}{CNMAT}{Center for New Music and Audio Technologies}
+\newacronym{cc}{CC}{Creative Commons}
+\newacronym{fdl}{FDL}{GNU Free Documentation License}
+\newacronym{gpl}{GPL}{GNU General Public License}
\newacronym{gpl}{GPL}{GNU General Public License}
\newacronym{lgpl}{LGPL}{GNU Lesser General Public License}
\newacronym{lts}{LTS}{Long Term Support}
@@ -150,27 +154,27 @@
\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/}{\gls{jack}}
- \citep{website:jackaudio2016} clients:
+ To date there exist five (known of) free and open-source spatial audio
+ renderers, which are all \gls{jack} \citep{website:jackaudio2016} clients:
\begin{itemize}
- \item \href{https://sourceforge.net/projects/swonder/}{sWONDER}
- \citep{website:swonder2016}, developed by Technische Universität
- Berlin, Germany
- \item \href{https://github.com/GameOfLife/WFSCollider}{WFSCollider}
- \citep{website:wfscollider2016}, developed by
+ \item sWONDER \citep{website:swonder2016}, developed by Technische
+ Universität Berlin, Germany
+ \item WFSCollider \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/}{\gls{ssr}}
- \citep{website:ssr2016}, developed by Quality \& Usability Lab,
- Deutsche Telekom Laboratories and TU Berlin and Institut für
- Nachrichtentechnik, Universität Rostock
+ \item HoaLibrary for \gls{pd} \citep{website:hoalibraryforpd} developed
+ at \gls{cicm}, Paris, France
+ \item 3Dj for SuperCollider \citep{thesis:perezlopez3dj2014}, developed
+ at Universitat Pompeu Fabra, Barcelona
+ \item \gls{ssr} \citep{website:ssr2016}, developed by Quality \&
+ Usability Lab, Telekom Innovation Laboratories, TU Berlin and Institut
+ für Nachrichtentechnik, Universität Rostock and Division of Applied
+ Acoustics, Chalmers University of Technology
\end{itemize}
- 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.
+ Different concepts and contexts apply to all of the renderers, which are
+ about to be explained briefly in the following sections, prefixed by a
+ section about spatial audio renderer appliances and followed by one about
+ free software and its pitfalls.
\subsection{Spatial audio renderers and their appliance}
\label{subsec:spatialaudiorenderersandtheirappliance}
@@ -191,8 +195,8 @@
\subsubsection{Binaural (Room) Synthesis}
\label{subsubsec:binaural}
- \subsection{WONDER}
- \label{subsec:WONDER}
+ \subsection{sWONDER}
+ \label{subsec:swonder}
sWONDER \citep{baalman2007} consists of a set of C++ applications that
provide \gls{bs} and \gls{wfs} rendering. In 2007 it was specifically
redesigned \citep{baalmanetal2007} to cope with large scale \gls{wfs} setups in
@@ -211,6 +215,9 @@
\subsection{HOA-Pd}
\label{subsec:hoapd}
+ \subsection{3Dj (SuperCollider Quark)}
+ \label{subsec:3djsupercolliderquark}
+
\subsection{WFSCollider}
\label{subsec:wfscollider}
WFSCollider was built on top of
@@ -249,6 +256,41 @@
itself on several computers, while these instances serve a subset of the
available loudspeakers.
+ \subsection{Why free software matters and what its pitfalls are}
+ \label{subsec:whyfreesoftwarematters}
+ Free software is the terminology for software published under a free
+ license. Licenses, such as the \gls{gpl} are considered free, because
+ they allow for anyone to copy, modify and redistribute the source code
+ (under the same license).\\
+ Research is a field of work, in which reproducability is very important,
+ as findings need to be independently verifiable. Scientific work is
+ published and shared (sometimes also under free licenses, such as
+ \gls{cc}) amongst research groups of institutions all around the world.
+ In an ideal world, all scientific research would be published under a
+ free documentation license, such as the \gls{fdl}, allowing access to
+ anyone.\\
+ The software used in scientific institutions is unfortunately rarely free
+ (e.g. Microsoft Exchange, Microsoft Office, Adobe Photoshop in general
+ and Steinberg's Cubase, Cycling '74's Max/MSP, Avid's ProTools or
+ Ableton Live in the audio production field) and additionally mostly bound
+ to proprietary \glspl{os}, such as Microsoft Windows or Apple's MacOS,
+ preventing interoperability, development and an open society.\\
+ Free software however enables students and researchers to learn from the
+ source code directly (if they can and want to), to modify (and improve)
+ it and to share their findings. More than with proprietary software, it
+ is possible to have a community develop around it, that takes care of the
+ project for a long time.\\
+ Free software nonetheless can not be considered a silver bullet. It is
+ after all only a way of developing software and not a way to grade its
+ efficiency or code quality. Additionally, especially in a scientific
+ context it can happen, that software is conceived by an institution, put
+ to use, but afterwards not developed any further, as the programmers go
+ their way (e.g. \nameref{subsec:swonder}).
+ This way a high responsibility weighs on these institutions, as they
+ need to ensure further development on systems, not easily accessible to
+ the public, or not feasible for home use (e.g. \gls{wfs}). This situation
+ however also holds a great opportunity for coorporation.
+
\cleardoublepage
\section{Implementation}
\label{sec:implementation}
@@ -349,15 +391,6 @@
The \gls{ssr} implements a content-based filtering system, in which each
subscriber evaluates the messages received and acts depending on its own
constraints to implement further actions upon it.\\
- The abstract class Publisher defines the messages possible to send and
- provides means to subscribe to them. The global Controller class is its
- only implementation within the \gls{ssr}.\\
- The abstract class Subscriber in turn defines the messages understood,
- while its implementations in RenderSubscriber, Scene, OscSender and
- NetworkSubscriber take care of how they are used.\\
- 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]
@@ -365,10 +398,31 @@
\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)
+ {\color{controller-in}\textbf{--}} Calls from Subscribers to Controller (Publisher)
}
\label{fig:ssr-publisher-with-all-subscribers}
\end{figure}
+ The abstract class Publisher defines the messages possible to send and
+ provides means to subscribe to them. The global Controller class is its
+ only implementation within the \gls{ssr}.\\
+ The abstract class Subscriber in turn defines the messages understood,
+ while its implementations in RenderSubscriber, Scene, OscSender and
+ NetworkSubscriber take care of how they are used.\\
+ 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.\\
+ Depending on the design of an application, \gls{pubsub} is not necesarily
+ a one-way-road. As showin in
+ Figure~\ref{fig:ssr-publisher-with-all-subscribers}, subscribers can also
+ be able to call functions of the Publisher, if the implementation permits it.
+ In the \gls{ssr} this is possible, because each Subscriber holds a
+ reference to the Controller instance and is therefore able to call its
+ public functions.\\
+ According to the principle of encapsulation in \gls{oop}, this type of
+ functionality is handled by a separate class. In
+ Figure~\ref{fig:ssr-publisher-with-all-subscribers}, the OscHandler and
+ Server instances delegate calls to Controller functionality to their
+ utilities OscReceiver and CommandParser (respectively).
\subsection{IP interface}
\label{subsec:ip-interface}
@@ -481,7 +535,7 @@
At the time of writing liblo's lastet stable release (0.28) was issued
on 27th January 2014. Many changes and improvements have been applied
to the codebase since then. One of them is the implementation of a
- ServerThread for the C++ abstraction layer, which runs a Server object
+ ServerThread for the C++ abstraction layer, which runs a Server instance
on a separate thread automatically.\\
In programming, threads are a way to implement simultaneous and/ or
asynchroneous execution of code. The liblo Server class, at the core of
@@ -492,7 +546,7 @@
\gls{osc} only as a messaging system, it usually means, that the
application itself is not single-purpose and is busy computing
something else most of the time. Therefore it makes sense to run a
- Server object on a separate background thread, to not interfere with
+ Server instance on a separate background thread, to not interfere with
the executional flow of the rest of the program.\\
The ServerThread class is able to free its ressources upon going ot of
scope, known as \gls{raii}. For this reason, the latest development