summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Runge <dave@sleepmap.de>2017-06-30 18:29:38 +0200
committerDavid Runge <dave@sleepmap.de>2017-06-30 18:29:38 +0200
commitf05ef473df532d5095f227bed5304a754b90f339 (patch)
treea38681370691f40c5a8f6c16ad57143b64062413
parent78254ce82d964d76142ccd6a60cd2e8a4a95d9f9 (diff)
downloadmaster-thesis-f05ef473df532d5095f227bed5304a754b90f339.tar.gz
master-thesis-f05ef473df532d5095f227bed5304a754b90f339.tar.bz2
master-thesis-f05ef473df532d5095f227bed5304a754b90f339.tar.xz
master-thesis-f05ef473df532d5095f227bed5304a754b90f339.zip
thesis/thesis.tex: Expanding and fixing subsections about the various spatial audio renderers.
-rw-r--r--thesis/thesis.tex187
1 files changed, 133 insertions, 54 deletions
diff --git a/thesis/thesis.tex b/thesis/thesis.tex
index ba23607..6516265 100644
--- a/thesis/thesis.tex
+++ b/thesis/thesis.tex
@@ -56,6 +56,7 @@ parskip=never]{paper}
\newacronym{fdl}{FDL}{GNU Free Documentation License}
\newacronym{gpl}{GPL}{GNU General Public License}
\newacronym{gui}{GUI}{Graphical user interface}
+\newacronym{ide}{IDE}{Integrated Development Environment}
\newacronym{lgpl}{LGPL}{GNU Lesser General Public License}
\newacronym{lts}{LTS}{Long Term Support}
\newacronym{hoa}{HOA}{Higher Order Ambisonics}
@@ -89,7 +90,29 @@ parskip=never]{paper}
\newglossaryentry{stdout}{
name={stdout},
description={The standard output is a stream where a program writes its
- output data to. This can be a log file or a terminal},
+ output data to. This can be a log file or a terminal}
+}
+\newglossaryentry{faust}{
+ name={FAUST},
+ description={Functional Audio Stream is a functional programming language
+ specifically designed for realtime signal processing and synthesis}
+}
+\newglossaryentry{quark}{
+ name={Quark},
+ description={Name for Classes extending the SuperCollider programming
+ language, usually developed in a separate version controlled code
+ repository},
+ plural=Quarks
+}
+\newglossaryentry{supercollider}{
+ name={SuperCollider},
+ description={A programming language, \gls{ide} and synthesis server for
+ realtime audio processing and synthesis}
+}
+\newglossaryentry{qt4}{
+ name={Qt4},
+ description={Version 4 (legacy) of the cross-platform application framework
+ for creating desktop applications.}
}
@@ -218,13 +241,12 @@ parskip=never]{paper}
\begin{itemize}
\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 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 WFSCollider \citep{website:wfscollider}, developed by the Game Of
+ Life Foundation \citep{website:gameoflife}, The Hague, Netherlands
+ \item HoaLibrary for \gls{pd} \citep{github:hoalibraryforpd} developed at
+ \gls{cicm}, Paris, France
+ \item 3Dj for \gls{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
@@ -237,20 +259,21 @@ parskip=never]{paper}
\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.
+ \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.\\
+
\subsubsection{Higher order ambisonics and vector based amplitude panning}
\label{subsubsec:hoaandvbap}
+
\subsubsection{Binaural (Room) Synthesis}
\label{subsubsec:binaural}
@@ -265,54 +288,107 @@ parskip=never]{paper}
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 \gls{osc} for messaging between its parts and for
- setting its controls. Apart from that, it can be controlled through a
- \gls{gui}, that was specifically designed for it.
- Unfortunately sWONDER has not been actively maintained for several years,
- has a complex setup chain and many bugs, that are not likely to get fixed
- any time soon.
+ It uses \gls{osc} for messaging between its components and for setting
+ its controls. Additionally, it can be controlled through a \gls{gui},
+ that was specifically designed for it.\\
+ Sound sources can be moved dynamically, or according to a \gls{xml} based
+ score.\\
+ sWONDER has been in use for the medium and large scale \gls{wfs} systems
+ in the Electronic Music Studio \citep{website:tu-electronic_studio} and
+ lecture hall H0103 \citep{website:tu-wfs} at Technical University of
+ Berlin and a medium scale system at the Wave Field Synthesis Lab at HAW
+ in Hamburg \citep{Fohl2013}.\\
+ The included convolution engine fWonder has found application in
+ “Assessing the Authenticity of Individual Dynamic Binaural Synthesis”
+ \citep[pp. 223-246]{lindau2014}.\\
+ Unfortunately, the spatial audio renderer has not been actively
+ maintained for several years, is limited to its two rendering algorithms
+ and has many bugs, that are not likely to get fixed in the future.\\
\subsection{HoaLibrary (PureData extension)}
\label{subsec:hoalibrary_puredata_extension}
+ The HoaLibrary is “a collection of C++ and \gls{faust} classes and
+ objects for Max, PureData and VST destined to high order ambisonics sound
+ reproduction” \citep{website:hoalibrary}. By using its \gls{pd}
+ extension, it enables for \gls{hoa} reproduction, while harnessing the
+ rich feature set of the audio programming language still enables for
+ implementing other forms of spatial rendering alongside the HoaLibrary.\\
+ \gls{pd} is \gls{osc} capable with the help of extensions, such as
+ \textit{mrpeach}\footnote{ \href{https://puredata.info/downloads/mrpeach}
+ {https://puredata.info/downloads/mrpeach}} or \textit{IEMnet}\footnote{
+ \href{https://puredata.info/downloads/iemnet}
+ {https://puredata.info/downloads/iemnet}}.\\
+
\subsection{3Dj (SuperCollider Quark)}
\label{subsec:3dj_supercollider_quark}
+ 3Dj is a \gls{supercollider} \gls{quark} conceived in the course of a Master
+ Thesis at Universitat Pompeu Fabra, Barcelona
+ \citep{thesis:perezlopez3dj2014} for interactive performance live
+ spatialization purposes. It implements \gls{hoa} and \gls{vbap} rendering
+ \citep[p 45]{thesis:perezlopez3dj2014} and uses a specific scene format
+ \citep[pp. 45-46]{thesis:perezlopez3dj2014} to allow sound sources to
+ have static, linear, random, brownian, simple harmonic and orbital
+ motion.\\
+ Due to being a language extension to \gls{sclang}, 3Dj can be used in
+ conjunction with other spatial rendering algorithms provided by
+ \gls{supercollider} or any of its \glspl{quark}.\\
+ \gls{supercollider} is \gls{osc} enabled by default, which renders 3Dj a
+ dynamically accessible solution.
\subsection{WFSCollider}
\label{subsec:wfscollider}
WFSCollider was built on top of
\href{https://supercollider.github.io}{SuperCollider} 3.5
- \citep{website:supercollider} and is also capable of driving large
- scale systems. It uses a different approach in
- doing so, though: Whereas with sWONDER all audio streams are distributed
- to each node, WFSCollider usually uses the audio files to be played on
- all machines simultaneously and synchronizes between them.\\
- It has a feature-rich \gls{gui} in the \textit{many window} style, making available
- time lines and movement of sources through facilitating what the
- \gls{sclang} has to offer.\\
- As WFSCollider basically is SuperCollider plus extra features, it is also
- 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
- \href{https://supercollider.github.io}{SuperCollider} and is likely never
- to be merged into it, due to many core changes to it.
+ \citep{website:supercollider} and as its name suggests, is an application
+ for \gls{wfs} reproduction. It “allows soundfiles, live input and
+ synthesis processes to be placed in a score editor where start times, and
+ durations can be set and trajectories or positions assigned to each
+ event. It also allows realtime changement of parameters and on the fly
+ starting and stopping of events via \gls{gui} or \gls{osc} control. Each
+ event can be composed of varous objects (“units”) in a processing chain“
+ \citep{website:wfscollider}. According to its current manual, it is
+ also capable of using a \gls{vbap} renderer for other multi-speaker
+ setups \citep[p. 8]{manual:wfscollider}.\\
+ ”WFSCollider is the driving software of the Wave Field Synthesis system
+ of the Game Of Life Foundation“ \citep{website:gameoflife}. In
+ multi-computer setups, it can synchronize the involved processes and a
+ dynamic latency can be introduced to account for high network throughput
+ \citep[p. 22]{manual:wfscollider}. WFSCollider by nature is \gls{osc}
+ capable and extendable by what \gls{sclang} has to offer. Its scores are
+ saved as \gls{supercollider} code, as well.\\
+ It is currently only tested on MacOSX and is based upon a several year
+ old version of \href{https://supercollider.github.io}{SuperCollider}.
\subsection{SoundScape Renderer}
\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 \gls{bs} and \gls{wfs}, but also \gls{hoa}
- and \gls{vbap}.\\
- It can be used with a \gls{gui} or headless (without one), depicting the
- virtual sources, their volumes and positions, alongside which speakers
- are currently used for rendering a selected source.
- \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
+ The \gls{ssr}, written in C++, is a multi-purpose spatial audio renderer,
+ that runs on Linux and MacOSX. Based on its underlying \gls{apf}
+ \citep{MatthiasGeierTorbenHohn1890}, it is able to use \gls{bs},
+ \gls{brs}, \gls{aap}, \gls{wfs}, \gls{hoa} and \gls{vbap}.\\
+ It can be used with a \gls{qt4} based \gls{gui} or headless (without
+ one), depicting the virtual sources, their volumes and positions. If a
+ loudspeaker based renderer is chosen, the \gls{gui} also illustrates
+ which speakers are currently used for rendering a selected source.\\
+ The \gls{bs} and \gls{brs} renderers are frequently used in scientific
+ research, such as \citep{DavidAckermann1895} or
+ \citep{DmitryGrigoriev1896}. The \gls{wfs} renderer has been improved by
+ the work of several research papers, dealing with enhancements of spatial
+ aliasing, active listening room and loudspeaker compensation and active
+ noise control \citep{SaschaSporsRudolfRabensteinJensAhrens1822} and
+ analyzing and pre-equalizing in 2.5-dimensional \gls{wfs}
+ \citep{SaschaSporsJensAhrens1821}.\\
+ The \gls{ssr} uses \gls{xml} based configuration files for reproduction
+ (i.e.\ how something is played back) and scene (i.e.\ what is played
+ back). The \gls{asdf} however is not (yet) able to represent dynamic
+ setups.\\
+ The application can be controlled through a \gls{tcp}/\gls{ip} socket.
+ \gls{osc} functionality can only be achieved using the capapilities of
other applications such as \gls{pd} \citep{website:puredata2016} in
- combination with it though.\\
- 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
+ combination with it.\\
+ Unlike \nameref{subsec:swonder} or \nameref{subsec:wfscollider}, the
+ \gls{ssr} is not able to run medium or 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.
\subsection{Why free software matters and what its pitfalls are}
@@ -522,7 +598,10 @@ parskip=never]{paper}
\subsubsection{OSC through PureData}
\label{subsubsec:osc_through_puredata}
To allow \gls{osc} communication, the \gls{ssr} incorporates a Lua
- based \gls{pd} external. It uses two externals (iemnet and pdlua)
+ based \gls{pd} external. It uses two externals
+ (\textit{IEMnet}\footnote{
+ \href{https://puredata.info/downloads/iemnet}
+ {https://puredata.info/downloads/iemnet}} and pdlua)
alongside a Lua library for parsing and creating \gls{xml} (SLAXML).
\subsubsection{Sending and receiving}
@@ -616,7 +695,7 @@ parskip=never]{paper}
through that many use-cases in free and closed audio and video related
applications (e.g. Ardour \citep{website:ardour}, Cubase
\citep{website:steinberg}, Max/MSP \citep{website:cycling74},
- SuperCollider \citep{website:supercollider}) since then.\\
+ \gls{supercollider} \citep{website:supercollider}) since then.\\
\gls{osc}'s syntax is defined by several parts, which are discussed
briefly in this section.\\