summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--presentation/presentation.tex316
1 files changed, 311 insertions, 5 deletions
diff --git a/presentation/presentation.tex b/presentation/presentation.tex
index be00087..36fd3f7 100644
--- a/presentation/presentation.tex
+++ b/presentation/presentation.tex
@@ -1,11 +1,13 @@
-\documentclass[12pt]{beamer}
-%\usetheme{Berlin}
-%\usecolortheme{seahorse}
+\documentclass[9pt, xcolor=table]{beamer}
+\usetheme{Frankfurt}
+\usecolortheme{seahorse}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp} % Sonderzeichen, z.B. €
\usepackage[usenames,dvipsnames,rgb,svgnames,table]{xcolor}
+\usepackage[table]{xcolor}
+\usepackage[usenames,svgnames,table]{xcolor}
\definecolor{osc-out}{RGB}{150,0,255}
\definecolor{osc-in}{RGB}{0,0,255}
\definecolor{audio-in}{RGB}{255,0,0}
@@ -16,16 +18,20 @@
\definecolor{table-background-two}{RGB}{210,213,210}
\usepackage[newfloat=true]{minted}
\usepackage{mdframed}
-\usepackage{multirow}
-\usepackage{nameref}
+\usepackage{fancyhdr}
\usepackage{url}
\usepackage{graphicx} % for PDF scaling
+\usepackage{pdfpages}
+\usepackage[author={David Runge}]{pdfcomment}
+\usepackage{mathtools}
\usepackage{float}
\floatstyle{boxed}
\restylefloat{figure}
+\usepackage[nottoc,numbib]{tocbibind}
\usepackage{hyperref}
\hypersetup{hidelinks,
colorlinks = false,
+pdfstartview={Fit},
pdfauthor={David Runge},
pdftitle={Master's Thesis Presentation: A Networking Extension for the
SoundScape Renderer},
@@ -34,8 +40,105 @@ pdfkeywords={Ambisonics, Binaural Synthesis, C++, Client-Server-Architecture,
Linux, macOS, Networking, OSC, liblo, SoundScape Renderer, Spatial Audio,
SuperCollider, Technische Universität Berlin, VBAP, WFS}
}
+\usepackage{multirow}
\usepackage[authoryear,round]{natbib}
\usepackage[font=scriptsize]{caption}
+% glossary
+\usepackage[acronym,nonumberlist,toc,xindy]{glossaries}
+\makeglossaries
+\newacronym{aap}{AAP}{Ambisonics Amplitude Panning}
+\newacronym{adat}{ADAT}{Alesis Digital Audio Tape}
+\newacronym{alsa}{ALSA}{Advanced Linux Sound Architecture}
+\newacronym{apf}{APF}{Audio Processing Framework}
+\newacronym{api}{API}{Application Programming Interface}
+\newacronym{asdf}{ASDF}{Audio Scene Description Format}
+\newacronym{bs}{BS}{Binaural Synthesis}
+\newacronym{brir}{BRIR}{Binaural Room Impulse Response}
+\newacronym{brs}{BRS}{Binaural Room Synthesis}
+\newacronym{cc}{CC}{Creative Commons}
+\newacronym{cicm}{CICM}{Centre de recherche Informatique et Création Musicale}
+\newacronym{cnmat}{CNMAT}{Center for New Music and Audio Technologies}
+\newacronym{cpu}{CPU}{Central Processing Unit}
+\newacronym{fdl}{FDL}{GNU Free Documentation License}
+\newacronym{gpl}{GPL}{GNU General Public License}
+\newacronym{gui}{GUI}{Graphical User Interface}
+\newacronym{hrir}{HRIR}{Head Related Impulse Response}
+\newacronym{hrtf}{HRTF}{Head Related Transfer Function}
+\newacronym{iana}{IANA}{Internet Assigned Numbers Authority}
+\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}
+\newacronym{ip}{IP}{Internet Protocol}
+\newacronym{jack}{JACK}{JACK Audio Connection Kit}
+\newacronym{madi}{MADI}{Multichannel Audio Digital Interface}
+\newacronym{midi}{MIDI}{Musical Instrument Digital Interface}
+\newacronym{nfc-hoa}{NFC-HOA}{Near-Field-Compensated Higher Order Ambisonics}
+\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}
+\newacronym{pd}{Pd}{PureData}
+\newacronym{raii}{RAII}{Ressource Acquisition Is Initialization}
+\newacronym{ssr}{SSR}{SoundScape Renderer}
+\newacronym{tcp}{TCP}{Transmission Control Protocol}
+\newacronym{tu-berlin}{TU Berlin}{Technische Universität Berlin}
+\newacronym{udp}{UDP}{User Datagram Protocol}
+\newacronym{vbap}{VBAP}{Vector Based Amplitude Panning}
+\newacronym{wfs}{WFS}{Wave Field Synthesis}
+\newacronym{xml}{XML}{Extensible Markup Language}
+\newglossaryentry{ascii}{
+ name={ASCII},
+ description={American Standard Code for Information Interchange --- a
+ character encoding standard}
+}
+\newglossaryentry{sclang}{
+ name={sclang},
+ description={Name of the SuperCollider programming language and the
+ interpreter executable of the SuperCollider programming language}
+}
+\newglossaryentry{id}{
+ name={ID},
+ description={A name or number, that identifies an object},
+ plural=IDs
+}
+\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}
+}
+\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{python}{
+ name={Python},
+ description={A multi-purpose, object-oriented programming language}
+}
+\newglossaryentry{qt4}{
+ name={Qt4},
+ description={Version 4 (legacy) of the cross-platform application framework
+ for creating desktop applications}
+}
+\newglossaryentry{qt5}{
+ name={Qt5},
+ description={Version 5 of the cross-platform application framework for
+ creating desktop applications}
+}
\graphicspath{{../images//}}
\title{A Networking Extension for the SoundScape Renderer}
@@ -56,6 +159,209 @@ SuperCollider, Technische Universität Berlin, VBAP, WFS}
\begin{document}
\frame{\titlepage}
+\begin{frame}
+ \frametitle{Contents}
+ \tableofcontents
+\end{frame}
+
+\section{Spatial Audio Renderers}
+ \begin{frame}
+ \frametitle{What are they?}
+ Virtual auditory environment\\
+ Headphones and loudspeakers\\
+ Place sources inside and outside of listening area\\
+ \end{frame}
+
+ \subsection{Algorithms}
+ \begin{frame}
+ \frametitle{What do they use?}
+ Dynamic Binaural Synthesis\\
+ Dynamic Binaural Room Synthesis\\
+ Vector Based Amplitude Panning\\
+ Ambisonics Amplitude Panning\\
+ Wave Field Synthesis\\
+ \end{frame}
+
+ \subsection{Software Solutions}
+ \begin{frame}
+ \frametitle{What is available as free software?}
+ sWONDER\\
+ HoaLibrary\\
+ 3Dj\\
+ WFSCollider\\
+ SoundScape Renderer\\
+ \end{frame}
+ \begin{frame}
+ \frametitle{What are they used for?}
+ Scientific Research\\
+ Virtual Reality\\
+ Music\\
+ \end{frame}
+
+\section{Extending the SSR}
+ \begin{frame}
+ \frametitle{Why extend the SSR?}
+ Widespread use in scientific research\\
+ Large set of rendering algorithms\\
+ Still maintained\\
+ Possible candidate for large-scale WFS systems at TU Berlin\\
+ Extending user base\\
+ \end{frame}
+
+ \subsection{Use Cases}
+ \begin{frame}
+ \frametitle{Research}
+ BRS: \citet{mastersthesis:ackermannandilse2015},
+ \citet{mastersthesis:boehm2015} or \citet{mastersthesis:grigoriev2017}\\
+ WFS: \citet{bachelorsthesis:koslowski2013}\\
+ \end{frame}
+
+ \subsection{Current Capabilities}
+ \begin{frame}
+ \frametitle{Remote Controlling}
+ XML formatted string over TCP/IP socket\\
+ OSC through PureData\\
+ \end{frame}
+ \begin{frame}
+ \frametitle{Interaction}
+ GUI\\
+ No direct interaction between instances\\
+ Controlling multiple instances with PureData\\
+ \end{frame}
+
+ \subsection{OSC Interface}
+ \begin{frame}
+ \frametitle{Why another interface?}
+ OSC natively\\
+ Inter-instance communication\\
+ Client-Server architecture\\
+ Controlling multiple instances with an SSR or other OSC capable
+ software\\
+ \end{frame}
+ \begin{frame}
+ \frametitle{Publisher/Subscriber}
+ \includegraphics[scale=0.4, trim = 6mm 91mm 12mm 10mm, clip]
+ {ssr-publisher-with-all-subscribers.pdf}
+ \end{frame}
+
+ \subsection{Setups}
+ \begin{frame}
+ \frametitle{Client-Server, Shared Rendering}
+ \includegraphics[scale=0.8, trim = 20mm 204mm 10mm 10mm, clip]
+ {ssr-client-server-shared-output.pdf}
+ \end{frame}
+ \begin{frame}
+ \frametitle{Client-Server, Shared Rendering}
+ \includegraphics[scale=0.8, trim = 20mm 204mm 10mm 10mm, clip]
+ {ssr-external-client-server-shared-output.pdf}
+ \end{frame}
+ \begin{frame}
+ \frametitle{Client-Server, Separate Rendering}
+ \includegraphics[scale=0.8, trim = 20mm 204mm 10mm 10mm, clip]
+ {ssr-client-server-separate-output.pdf}
+ \end{frame}
+ \begin{frame}
+ \frametitle{Client-Server, Separate Rendering}
+ \includegraphics[scale=0.8, trim = 20mm 204mm 10mm 10mm, clip]
+ {ssr-external-client-server-separate-output.pdf}
+ \end{frame}
+ \begin{frame}
+ \frametitle{Clients Only}
+ \includegraphics[scale=0.8, trim = 20mm 204mm 10mm 10mm, clip]
+ {ssr-external-clients-only-shared-output.pdf}
+ \end{frame}
+ \begin{frame}
+ \frametitle{Clients Only}
+ \includegraphics[scale=0.8, trim = 20mm 204mm 10mm 10mm, clip]
+ {ssr-external-clients-only-separate-output.pdf}
+ \end{frame}
+
+
+\section{OSC Messaging}
+ \subsection{Message Levels}
+ \begin{frame}[fragile]
+ \frametitle{Message Levels}
+ \mintinline{shell}{src/ssr_global.h}
+ \begin{mdframed}
+ \inputminted[numbers=left, firstline=54, lastline=61,
+ fontsize=\footnotesize]{c++}{../../ssr/src/ssr_global.h}
+ \end{mdframed}
+ \end{frame}
+
+ \subsection{Message Interface}
+ \begin{frame}[fragile]
+ \frametitle{Message Interface}
+ \begin{table}[!htb]
+ \renewcommand{\arraystretch}{1.2}
+ \scriptsize
+ \centering
+ \rowcolors{2}{table-background-one}{table-background-two}
+ \begin{tabular}{ p{2cm} | p{1cm} | p{3.5cm} | p{3cm} }
+ \textbf{Path} & \textbf{Types} & \textbf{Description} &
+ \textbf{Example}\\
+ \hline
+ \texttt{/alive} & & Alive notification from client (in response to
+ a /poll) & \texttt{[/alive]} \\
+ \texttt{/message\_level} & i & Set message level of sender &
+ \texttt{[/message\_level, 1]} \\
+ \texttt{/message\_level} & ssi & Set message level of a specific
+ client & \texttt{[/message\_level, “127.0.0.1”,
+ “50002”, 1]} \\
+ \texttt{/subscribe} & F & Unsubscribe sender & \texttt{[/subscribe,
+ false]} \\
+ \texttt{/subscribe} & Fss & Unsubscribe specific client &
+ \texttt{[/subscribe, false, “127.0.0.1”, “50002”]}\\
+ \texttt{/subscribe} & T & Subscribe sender & \texttt{[/subscribe,
+ true]} \\
+ \texttt{/subscribe} & Ti & Subscribe sender with specific message
+ level & \texttt{[/subscribe, true, 1]} \\
+ \texttt{/subscribe} & Tssi & Subscribe specific client with
+ specific message level & \texttt{[/subscribe, true, “127.0.0.1”,
+ “50002”, 1]} \\
+ \end{tabular}
+ \caption{\gls{osc} messages relevant for subscribing and setting of
+ message levels for clients.\\
+ }
+ \label{tab:ssr-osc-subscribe}
+ \end{table}
+ \end{frame}
+
+\section{Demo}
+ \begin{frame}[fragile,allowframebreaks]
+ \frametitle{Sensors2OSC\footnote{\href{https://sensors2.org/osc/}{https://sensors2.org/osc/}}}
+ Sending \gls{osc} messages from mobile phone to \gls{supercollider}\\
+ Evaluating and forwarding data to an \gls{ssr} server instance\\
+ \\
+ \vspace{0.23cm}
+ Starting an \gls{ssr} client
+ \begin{mdframed}
+ \begin{minted}[fontsize=\footnotesize]{shell}
+ssr-binaural -p “50002”
+ \end{minted}
+ \end{mdframed}
+ \vspace{0.23cm}
+ Starting an \gls{ssr} server
+ \begin{mdframed}
+ \begin{minted}[fontsize=\footnotesize]{shell}
+ssr-aap -N “server” -C “127.0.0.1:50002”
+ \end{minted}
+ \end{mdframed}
+ \end{frame}
+
+\section{Future Work}
+ \begin{frame}
+ \frametitle{Future Work}
+ Non-Renderer\\
+ Alien-Loudspeaker\\
+ Status Messages\\
+ Scene Transfer\\
+ Assigning In- and Outputs on the Fly\\
+ Interpolation of Moving Sources\\
+ Dynamic Scene\\
+ Network Enabled Head Tracking\\
+ \end{frame}
+
+\scriptsize
\bibliographystyle{../help/FG_AK_English_AuthorYear.bst}
\bibliography{../bib/ssr-networking}
\end{document}