diff options
-rw-r--r-- | presentation/presentation.tex | 316 |
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} |