summaryrefslogtreecommitdiffstats
path: root/presentation
diff options
context:
space:
mode:
Diffstat (limited to 'presentation')
-rw-r--r--presentation/presentation.tex480
1 files changed, 426 insertions, 54 deletions
diff --git a/presentation/presentation.tex b/presentation/presentation.tex
index 36fd3f7..9ce19fa 100644
--- a/presentation/presentation.tex
+++ b/presentation/presentation.tex
@@ -167,82 +167,146 @@ SuperCollider, Technische Universität Berlin, VBAP, WFS}
\section{Spatial Audio Renderers}
\begin{frame}
\frametitle{What are they?}
- Virtual auditory environment\\
- Headphones and loudspeakers\\
- Place sources inside and outside of listening area\\
+ \begin{itemize}
+ \item Virtual auditory environment\\
+ \item Headphones and loudspeakers\\
+ \item Place sources inside and outside of listening area\\
+ \end{itemize}
\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\\
+ \begin{itemize}
+ \item (Dynamic) \gls{bs}\\
+ \item (Dynamic) \gls{brs}\\
+ \item \gls{vbap}\\
+ \item \gls{aap}\\
+ \item \gls{wfs}\\
+ \end{itemize}
\end{frame}
\subsection{Software Solutions}
\begin{frame}
\frametitle{What is available as free software?}
- sWONDER\\
- HoaLibrary\\
- 3Dj\\
- WFSCollider\\
- SoundScape Renderer\\
+ \begin{itemize}
+ \item sWONDER \citep{phdthesis:baalman2007}\\
+ \item HoaLibrary \citep{website:hoalibrary}\\
+ \item 3Dj \citep{mastersthesis:perezlopez2014}\\
+ \item WFSCollider \citep{manual:wfscollider}\\
+ \item \gls{ssr} \citep{website:ssr2016}\\
+ \end{itemize}
\end{frame}
\begin{frame}
\frametitle{What are they used for?}
- Scientific Research\\
- Virtual Reality\\
- Music\\
+ \begin{itemize}
+ \item Scientific Research\\
+ \item Virtual Reality\\
+ \item Music\\
+ \end{itemize}
\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\\
+ \begin{itemize}
+ \item Widespread use in scientific research\\
+ \item Large set of rendering algorithms\\
+ \item Still maintained\\
+ \item Possible candidate for medium/ large scale \gls{wfs} systems at
+ \gls{tu-berlin}\\
+ \item Extending user base\\
+ \end{itemize}
\end{frame}
\subsection{Use Cases}
\begin{frame}
\frametitle{Research}
- BRS: \citet{mastersthesis:ackermannandilse2015},
- \citet{mastersthesis:boehm2015} or \citet{mastersthesis:grigoriev2017}\\
- WFS: \citet{bachelorsthesis:koslowski2013}\\
+ \begin{itemize}
+ \item \gls{brs}: \citet{mastersthesis:ackermannandilse2015},
+ \citet{mastersthesis:boehm2015} or
+ \citet{mastersthesis:grigoriev2017}\\
+ \item \gls{wfs}: \citet{bachelorsthesis:koslowski2013}\\
+ \end{itemize}
\end{frame}
\subsection{Current Capabilities}
\begin{frame}
\frametitle{Remote Controlling}
- XML formatted string over TCP/IP socket\\
- OSC through PureData\\
+ \begin{itemize}
+ \item XML formatted string over TCP/IP socket\\
+ \item \gls{osc} through \gls{pd} \citep{inproceedings:puckette1997}\\
+ \end{itemize}
\end{frame}
\begin{frame}
\frametitle{Interaction}
- GUI\\
- No direct interaction between instances\\
- Controlling multiple instances with PureData\\
+ \begin{itemize}
+ \item \gls{gui}\\
+ \item No direct interaction between instances\\
+ \item Controlling multiple instances with \gls{pd}\\
+ \end{itemize}
\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\\
+ \begin{itemize}
+ \item \gls{osc} natively (using liblo \citep{website:liblo2017}): Clean
+ message interface\\
+ \item Inter-instance communication\\
+ \item Client-Server architecture\\
+ \item Controlling multiple instances with an \gls{ssr} or other
+ \gls{osc} capable software\\
+ \end{itemize}
\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}
+ \begin{frame}[fragile]
+ \frametitle{\gls{osc}}
+ \begin{table}[!htb]
+ \renewcommand{\arraystretch}{1.2}
+ \scriptsize
+ \centering
+ \rowcolors{2}{table-background-one}{table-background-two}
+ \begin{tabular}{ p{2cm} | p{8cm} }
+ \textbf{\gls{osc} type tag} & \textbf{Type} \\
+ \hline
+ \texttt{i} & \mintinline{c++}{int32} \\
+ \texttt{f} & \mintinline{c++}{float32} \\
+ \texttt{s} & \gls{osc}-string \\
+ \texttt{b} & \gls{osc}-blob \\
+ \hline
+ \hline
+ \texttt{h} & 64 bit big-endian two's complement integer\\
+ \texttt{t} & \gls{osc}-timetag\\
+ \texttt{d} & 64 bit (“double”) IEEE 754 floating point number\\
+ \texttt{S} & Alternate type represented as an \gls{osc}-string (for
+ example, for systems that differentiate “symbols” from “strings”)\\
+ \texttt{c} & An \gls{ascii} character, sent as 32 bits\\
+ \texttt{r} & 32 bit RGBA color\\
+ \texttt{m} & 4 byte \gls{midi} message. Bytes from MSB to LSB are:
+ port id, status byte, data1, data2\\
+ \texttt{T} & True. No bytes are allocated in the argument data.\\
+ \texttt{F} & False. No bytes are allocated in the argument data.\\
+ \texttt{N} & Nil. No bytes are allocated in the argument data.\\
+ \texttt{I} & Infinitum. No bytes are allocated in the argument
+ data.\\
+ \texttt{[} & Indicates the beginning of an array. The tags
+ following are for data in the Array until a close brace tag is
+ reached.\\
+ \texttt{]} & Indicates the end of an array.\\
+ \end{tabular}
+ \caption{Acronyms (type tags) for atomic data types, used in
+ \gls{osc} messages and bundles \citep{website:oscv1.0}.}\\
+ The first four types define the standard \gls{osc} type tags, which
+ should be understood by all implementations. The remaining are
+ non-standard types, that are implemented by most (e.g.\ liblo
+ implements all but array and RGBA color type).
+ \end{table}
+ \end{frame}
\subsection{Setups}
\begin{frame}
@@ -290,7 +354,7 @@ SuperCollider, Technische Universität Berlin, VBAP, WFS}
\subsection{Message Interface}
\begin{frame}[fragile]
- \frametitle{Message Interface}
+ \frametitle{Alive, Message Level, Subscribe (Server)}
\begin{table}[!htb]
\renewcommand{\arraystretch}{1.2}
\scriptsize
@@ -326,31 +390,329 @@ SuperCollider, Technische Universität Berlin, VBAP, WFS}
\end{table}
\end{frame}
+ \begin{frame}
+ \frametitle{Message Level, Poll (Client)}
+ \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{/message\_level} & i & Set message level of sender (the
+ server) & \texttt{[/message\_level, 1]} \\
+ \texttt{/poll} & & Poll client (continously sent), triggering
+ subscribe (see Table~\ref{tab:ssr-osc-subscribe}) &
+ \texttt{[/poll]} \\
+ \end{tabular}
+ \caption{\gls{osc} messages relevant for polling and setting of
+ message levels for servers subscribed to.\\
+ }
+ \label{tab:ssr-osc-client-poll-message-level}
+ \end{table}
+ \end{frame}
+ \begin{frame}[fragile]
+ \frametitle{Processing, Tracker, Transport}
+ \begin{table}[!htb]
+ \renewcommand{\arraystretch}{1.2}
+ \scriptsize
+ \rowcolors{2}{table-background-one}{table-background-two}
+ \begin{tabular}{ p{2.1cm} | p{0.8cm} | p{3.5cm} | p{2.5cm} }
+ \textbf{Path} & \textbf{Types} & \textbf{Description} &
+ \textbf{Example}\\
+ \hline
+ \texttt{/processing/state} & F & Unset processing state &
+ \texttt{[/processing/state, false]} \\
+ \texttt{/processing/state} & T & Set processing state &
+ \texttt{[/processing/state, true]} \\
+ \texttt{/tracker/reset} & & Reset tracker &
+ \texttt{[/tracker/reset]} \\
+ \texttt{/transport/rewind} & & Rewind the \gls{jack} transport &
+ \texttt{[/transport/rewind]} \\
+ \texttt{/transport/seek} & s & Seek to time code in
+ \gls{jack} transport & \texttt{[/transport/seek, “42:00:00”]} \\
+ \texttt{/transport/state} & F & Unset \gls{jack} transport
+ state & \texttt{[/transport/state, false]} \\
+ \texttt{/transport/state} & T & Set \gls{jack} transport
+ state & \texttt{[/transport/state, true]} \\
+ \end{tabular}
+ \caption{\gls{osc} messages relevant for processing, tracker and
+ (\gls{jack}) transport related settings.\\
+ }
+ \label{tab:ssr-osc-processing-tracker-transport}
+ \end{table}
+ \end{frame}
+ \begin{frame}
+ \frametitle{Reference}
+ \begin{table}[!htb]
+ \renewcommand{\arraystretch}{1.2}
+ \scriptsize
+ \centering
+ \rowcolors{2}{table-background-one}{table-background-two}
+ \begin{tabular}{ p{3.2cm} | p{0.6cm} | p{2.5cm} | p{3.3cm} }
+ \textbf{Path} & \textbf{Types} & \textbf{Description} &
+ \textbf{Example}\\
+ \hline
+ \texttt{/reference/orientation} & f & Set azimuth of reference
+ point & \texttt{[/reference/orientation, -90.0]} \\
+ \texttt{/reference/position} & ff & Set position of reference &
+ \texttt{[/reference/position, 1.5, 2.0]} \\
+ \texttt{/reference\_offset/orientation} & f & Set azimuth of
+ reference offset position &
+ \texttt{[/reference\_offset/orientation, -90.0]} \\
+ \texttt{/reference\_offset/position} & ff & Set position of
+ reference offset & \texttt{[/reference\_offset/position, 1.5,
+ 2.0]}\\
+ \end{tabular}
+ \caption{\gls{osc} messages relevant for reference management.\\
+ }
+ \label{tab:ssr-osc-reference}
+ \end{table}
+ \end{frame}
+ \begin{frame}
+ \frametitle{Scene}
+ \begin{table}[!htb]
+ \renewcommand{\arraystretch}{1.2}
+ \scriptsize
+ \centering
+ \rowcolors{2}{table-background-one}{table-background-two}
+ \begin{tabular}{ p{3.3cm} | p{0.7cm} | p{2.5cm} | p{3.3cm} }
+ \textbf{Path} & \textbf{Types} & \textbf{Description} &
+ \textbf{Example} \\
+ \hline
+ \texttt{/scene/amplitude\_reference
+ \_distance} & f & Set amplitude
+ reference distance. &
+ \texttt{[/scene/amplitude\_reference
+ \_distance, 6.0]}\\
+ \texttt{/scene/auto\_rotate\_sources} & F & Disable automatic
+ rotation of sources. & \texttt{[/scene/auto\_rotate\_sources,
+ false]}\\
+ \texttt{/scene/auto\_rotate\_sources} & T & Enable automatic
+ rotation of sources. & \texttt{[/scene/auto\_rotate\_sources,
+ true]}\\
+ \texttt{/scene/clear} & & Delete all sources &
+ \texttt{[/scene/clear]}\\
+ \texttt{/scene/decay\_exponent} & f & Set amplitude decay exponent
+ in virtual space ($1/r^{exp}$). & \texttt{[/scene/decay\_exponent,
+ 2.0]}\\
+ \texttt{/scene/load} & s & Load scene from \gls{asdf} file. &
+ \texttt{[/scene/load, “example.asd”]}\\
+ \texttt{/scene/master\_signal\_level} & f & Set the renderers
+ signal level. & \texttt{[/scene/master\_signal\_level, -20]}\\
+ \texttt{/scene/save} & s & Save scene to \gls{asdf} file. &
+ \texttt{[/scene/save, “example.asd”]}\\
+ \texttt{/scene/volume} & f & Set scene master volume. &
+ \texttt{[/scene/volume, 0.23]}\\
+ \end{tabular}
+ \caption{\gls{osc} messages relevant for scene management.\\
+ }
+ \label{tab:ssr-osc-scene}
+ \end{table}
+ \end{frame}
+ \begin{frame}
+ \frametitle{Source I}
+ \begin{table}[!htb]
+ \renewcommand{\arraystretch}{1.2}
+ \scriptsize
+ \centering
+ \rowcolors{2}{table-background-one}{table-background-two}
+ \begin{tabular}{ p{2.4cm} | p{1.0cm} | p{2.5cm} | p{3.3cm} }
+ \textbf{Path} & \textbf{Types} & \textbf{Description} &
+ \textbf{Example} \\
+ \hline
+ \texttt{/source/delete} & i & Delete source with given id &
+ \texttt{[/source/delete, 1]}\\
+ \texttt{/source/file\_channel} & ii & Set a source's file channel &
+ \texttt{[/source/file\_channel, 1, 2]}\\
+ \texttt{/source/file\_name\_ or\_port\_number} & is & Set a source's
+ file name or port number &
+ \texttt{[/source/file\_name\_ or\_port\_number, 1, “1”]}\\
+ \texttt{/source/port\_name } & is & Set a source's \gls{jack} input
+ port name & \texttt{[/source/port\_name, 1, “system:capture\_2”]}\\
+ \texttt{/source/gain} & if & Set a source's gain on a linear scale
+ (0.0 - inf) & \texttt{[/source/gain, 1, 0.2]}\\
+ \texttt{/source/model} & is & Set a source's model &
+ \texttt{[/source/model, 1, “point”]}\\
+ \texttt{/source/mute} & iF & Unmute a source &
+ \texttt{[/source/mute, 1, false]}\\
+ \texttt{/source/mute} & iT & Mute a source &
+ \texttt{[/source/mute, 1, true]}\\
+ \texttt{/source/name} & is & Set a source's name &
+ \texttt{[/source/name, 1, “Daisy”]}\\
+ \texttt{/source/new} & i & Create a new source stub using id &
+ \texttt{[/source/new, 1]}\\
+ \texttt{/source/new} & sssffffTFF & Create a new source
+ (auto-generated id) with name, model, port number, X-coordinate,
+ Y-coordinate, orientation, gain, movability, orientation movability
+ and mute status & \texttt{[/source/new, “Daisy”, “point”, “1”, 1.0,
+ 2.5, 90.0, 0.2, true, false, false]} \\
+ \end{tabular}
+ \caption{\gls{osc} messages relevant for source management.\\
+ }
+ \label{tab:ssr-osc-source-1}
+ \end{table}
+ \end{frame}
+ \begin{frame}
+ \frametitle{Source II}
+ \begin{table}[!htb]
+ \renewcommand{\arraystretch}{1.2}
+ \scriptsize
+ \centering
+ \rowcolors{2}{table-background-one}{table-background-two}
+ \begin{tabular}{ p{2.4cm} | p{1.0cm} | p{2.5cm} | p{3.3cm} }
+ \textbf{Path} & \textbf{Types} & \textbf{Description} &
+ \textbf{Example} \\
+ \hline
+ \texttt{/source/new} & sssffffisTFF & Create a new source
+ (auto-generated id) with name, model, port number, X-coordinate,
+ Y-coordinate, orientation, gain, file channel, properties file,
+ movability, orientation movability and mute status &
+ \texttt{[/source/new, “Daisy”, “point”, “1”, 1.0, 2.5, 90.0, 0.2,
+ 2, “properties.xml”, true, false, false]} \\
+ \texttt{/source/orientation} & if & Set a source's orientation &
+ \texttt{[/source/orientation, 1, -90.0]}\\
+ \texttt{/source/position} & iff & Set a source's position &
+ \texttt{[/source/position, 1, 1.5, 2.0]}\\
+ \texttt{/source/position\_fixed} & iF & Set a source movable &
+ \texttt{[/source/position\_fixed, 1, false]}\\
+ \texttt{/source/position\_fixed} & iT & Set a source immovable &
+ \texttt{[/source/position\_fixed, 1, true]}\\
+ \texttt{/source/properties\_file} & is & Set a source's properties
+ file & \texttt{[/source/properties\_file, 1,
+ “source-properties.xml”]}\\
+ \end{tabular}
+ \caption{\gls{osc} messages relevant for source management.\\
+ }
+ \label{tab:ssr-osc-source-2}
+ \end{table}
+ \end{frame}
+ \begin{frame}
+ \frametitle{Update (Server) I}
+ \begin{table}[!htb]
+ \renewcommand{\arraystretch}{1.2}
+ \scriptsize
+ \centering
+ \rowcolors{2}{table-background-one}{table-background-two}
+ \begin{tabular}{ p{4.6cm} | p{0.7cm} | p{4.0cm} }
+ \textbf{Path} & \textbf{Types} & \textbf{Description} \\
+ \hline
+ \texttt{/update/cpu\_load} & f & \gls{cpu} load changes.\\
+ \texttt{/update/processing/state} & T & Processing state is set.\\
+ \texttt{/update/processing/state} & F & Processing state is
+ unset.\\
+ \texttt{/update/reference/orientation} & f & Reference orientation
+ changes.\\
+ \texttt{/update/reference/position} & ff & Reference position
+ changes.\\
+ \texttt{/update/reference\_offset/orientation} & f & Reference
+ offset orientation changes.\\
+ \texttt{/update/reference\_offset/position} & ff & Reference offset
+ position changes.\\
+ \texttt{/update/scene/amplitude\_reference\_distance} & f &
+ Amplitude reference distance changes.\\
+ \texttt{/update/scene/auto\_rotate\_sources} & T & Auto rotation of
+ sources is set.\\
+ \texttt{/update/scene/auto\_rotate\_sources} & F & Auto rotation of
+ sources is unset.\\
+ \texttt{/update/scene/decay\_exponent} & f & The scene's decay
+ exponent has changed.\\
+ \texttt{/update/scene/master\_signal\_level} & f & Master signal
+ level has changed.\\
+ \texttt{/update/scene/sample\_rate} & i & Sample rate of the scene
+ changed.\\
+ \texttt{/update/scene/volume} & f & Volume of the scene has
+ changed.\\
+ \texttt{/update/source/delete} & i & A source with given id was
+ deleted. \\
+ \texttt{/update/source/file\_channel} & ii & A source's file
+ channel was set.\\
+ \texttt{/update/source/file\_name\_or\_port\_number} & is & A
+ source's file name or port number was set.\\
+ \texttt{/update/source/gain} & if & A source's gain was set.\\
+ \end{tabular}
+ \caption{\gls{osc} messages for updating information on \gls{cpu} load,
+ processing, reference, scene, source, and transport of clients on a
+ server.\\
+ }
+ \label{tab:ssr-osc-update-1}
+ \end{table}
+ \end{frame}
+ \begin{frame}
+ \frametitle{Update (Server) II}
+ \begin{table}[!htb]
+ \renewcommand{\arraystretch}{1.2}
+ \scriptsize
+ \centering
+ \rowcolors{2}{table-background-one}{table-background-two}
+ \begin{tabular}{ p{3.3cm} | p{0.7cm} | p{3.3cm} }
+ \textbf{Path} & \textbf{Types} & \textbf{Description} \\
+ \hline
+ \texttt{/update/source/length} & ii & A source's length was set.\\
+ \texttt{/update/source/level} & if & A source's output level has
+ changed.\\
+ \texttt{/update/source/model} & is & A source's model was set.\\
+ \texttt{/update/source/mute} & iF & A source was unmuted.\\
+ \texttt{/update/source/mute} & iT & A source was muted.\\
+ \texttt{/update/source/name} & is & A source's name was set.\\
+ \texttt{/update/source/orientation} & if & A source's orientation
+ was set. \\
+ \texttt{/update/source/new} & i & A new source with given id was
+ created. \\
+ \texttt{/update/source/port\_name} & is & A source's \gls{jack}
+ port\_name was set. \\
+ \texttt{/update/source/position} & iff & A source's position was
+ set. \\
+ \texttt{/update/source/position\_fixed} & iF & A source was set to
+ be movable. \\
+ \texttt{/update/source/position\_fixed} & iT & A source was set to
+ be immovable. \\
+ \texttt{/update/source/properties\_file} & is & A source's
+ properties\_file was set.\\
+ \texttt{/update/transport/seek} & s & \gls{jack} transport seeked
+ to a timecode position.\\
+ \texttt{/update/transport/state} & F & \gls{jack} transport was
+ stopped.\\
+ \texttt{/update/transport/state} & T & \gls{jack} transport was
+ started.\\
+ \end{tabular}
+ \caption{\gls{osc} messages for updating information on \gls{cpu} load,
+ processing, reference, scene, source, and transport of clients on a
+ server.\\
+ }
+ \label{tab:ssr-osc-update-2}
+ \end{table}
+ \end{frame}
+
\section{Demo}
- \begin{frame}[fragile,allowframebreaks]
+ \begin{frame}[fragile]
\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}
+ \begin{itemize}
+ \item{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}
+ \end{minted}
+ \end{mdframed}}
+ \item{Starting an \gls{ssr} server (with initial client)
+ \begin{mdframed}
+ \begin{minted}[fontsize=\footnotesize]{shell}
ssr-aap -N “server” -C “127.0.0.1:50002”
- \end{minted}
- \end{mdframed}
+ \end{minted}
+ \end{mdframed}
+ }
+ \item Sending \gls{osc} messages from mobile phone to \gls{supercollider}\\
+ \item Evaluating and forwarding data to the \gls{ssr} server instance\\
+ \end{itemize}
\end{frame}
\section{Future Work}
\begin{frame}
\frametitle{Future Work}
+ Code Adoption!!!\\
+ User Manual Extension\\
Non-Renderer\\
Alien-Loudspeaker\\
Status Messages\\
@@ -361,7 +723,17 @@ ssr-aap -N “server” -C “127.0.0.1:50002”
Network Enabled Head Tracking\\
\end{frame}
-\scriptsize
-\bibliographystyle{../help/FG_AK_English_AuthorYear.bst}
-\bibliography{../bib/ssr-networking}
+ \begin{frame}
+ \frametitle{References}
+ \scriptsize
+ \bibliographystyle{../help/FG_AK_English_AuthorYear.bst}
+ \bibliography{../bib/ssr-networking}
+ \end{frame}
+
+ \begin{frame}
+ \frametitle{Glossary/ Acronyms}
+ \scriptsize
+ \printglossaries
+ \end{frame}
+
\end{document}