From 666421310755a6dfc881b369abb046c89d284eed Mon Sep 17 00:00:00 2001
From: David Runge <dave@sleepmap.de>
Date: Fri, 16 Jun 2017 16:17:07 +0200
Subject: thesis/thesis.tex: Moving all ssr setups to separate paragraphs.
 Renaming subsubsection layered clients to message levels. Adding acronym for
 GUI.

---
 thesis/thesis.tex | 264 ++++++++++++++++++++++++++++++++++--------------------
 1 file changed, 165 insertions(+), 99 deletions(-)

(limited to 'thesis/thesis.tex')

diff --git a/thesis/thesis.tex b/thesis/thesis.tex
index 8e8d25c..9cb0d3e 100644
--- a/thesis/thesis.tex
+++ b/thesis/thesis.tex
@@ -54,6 +54,7 @@
 \newacronym{cc}{CC}{Creative Commons}
 \newacronym{fdl}{FDL}{GNU Free Documentation License}
 \newacronym{gpl}{GPL}{GNU General Public License}
+\newacronym{gui}{GUI}{Graphical user interface}
 \newacronym{lgpl}{LGPL}{GNU Lesser General Public License}
 \newacronym{lts}{LTS}{Long Term Support}
 \newacronym{hoa}{HOA}{Higher Order Ambisonics}
@@ -212,7 +213,7 @@
       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
-      Graphical User Interface (GUI), that was specifically designed for it.
+      \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.
@@ -231,7 +232,7 @@
       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 GUI in the ``many window'' style, making available
+      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 sclang
       (SuperCollider programming language) has to offer.\\
       As WFSCollider basically is SuperCollider plus extra features, it is also
@@ -248,7 +249,7 @@
       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 GUI or headless (without one), depicting the
+      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
@@ -564,104 +565,169 @@
         version, instead of the current stable version of liblo was chosen for
         the implementation.
 
-      \subsubsection{Client-Server setup}
-        \label{subsubsec:client_server_setup}
+      \subsubsection{Setups}
+        \label{subsubsec:setups}
+        The \gls{ssr} offers the possibility for many different \gls{osc}
+        enabled client-server and client-only setups. They will be explained in
+        the following paragraphs.\\
+        All examples provide audio input via a \gls{jack} client, which can be
+        local (on each client's or server's host computer) or provided through
+        external audio inputs from another host computer (e.g.\ through
+        \gls{adat} orj \gls{madi}). This however is not mandatory, as the
+        \gls{ssr} is capable of playing back audio files directly.\\
+        The differences between server and client messaging is further
+        elaborated upon in \textbf{\nameref{subsubsec:message_interface}}.
+
+        \paragraph{Client-Server, shared rendering}
+          \label{para:client_server_shared_rendering}
+          In Figure~\ref{fig:ssr-client-server-shared-output}, the setup shows
+          \textit{1} to \textit{n} client instances, controlled by a server
+          instance. All instances are receiving audio from an external
+          \gls{jack} client or from reading local files. Collectively, the
+          \textit{n} clients and the server are rendering audio on a shared
+          output system (e.g. \gls{wfs} or \gls{hoa}).\\
+          The server instance is controlled through its \gls{gui}, sends out
+          \gls{osc} messages to all \textit{n} clients and receives their
+          updated information (again through \gls{osc}).
+          \begin{figure}[!htb]
+            \centering
+            \includegraphics[scale=1.0, trim = 20mm 204mm 10mm 10mm, clip]
+            {ssr-client-server-shared-output.pdf}
+            \caption{A diagram displaying a \gls{ssr} client/server setup, in
+              which the server and the clients render audio collectively (e.g.
+              \gls{wfs}). The server instance is not controlled via \gls{osc},
+              but controls its clients through it.\\
+              {\color{osc-in}\textbf{--}} \gls{osc} input
+              {\color{osc-out}\textbf{--}} \gls{osc} output
+              {\color{audio-in}\textbf{--}} Audio input
+              {\color{audio-out}\textbf{--}} Audio output
+            }
+            \label{fig:ssr-client-server-shared-output}
+          \end{figure}
+          \begin{figure}[!htb]
+            \centering
+            \includegraphics[scale=1.0, trim = 20mm 204mm 10mm 10mm, clip]
+            {ssr-external-client-server-shared-output.pdf}
+            \caption{A diagram displaying a \gls{ssr} client/server setup, in
+              which the server and the clients render audio collectively (e.g.
+              \gls{wfs}). The server instance is controlled by an \gls{osc}
+              capable application (acting as another client) and controls its
+              clients through \gls{osc} as well.\\
+              {\color{osc-in}\textbf{--}} \gls{osc} input
+              {\color{osc-out}\textbf{--}} \gls{osc} output
+              {\color{audio-in}\textbf{--}} Audio input
+              {\color{audio-out}\textbf{--}} Audio output
+            }
+            \label{fig:ssr-external-client-server-shared-output}
+          \end{figure}
+          The setup shown in
+          Figure~\ref{fig:ssr-external-client-server-shared-output} is similar
+          to the previous one, with the exception, that the server instance is
+          controlled by an external \gls{osc} capable application. This way,
+          the server instance can also be run headless (without a \gls{gui}).\\
+          The set of \textit{n} clients report back to the server instance,
+          which in turn reports back to the \gls{osc} enabled application
+          (acting as another client).
+        \cleardoublepage
+        \paragraph{Client-Server, separate rendering}
+          \label{para:client_server_separate_rendering}
+          As shown in Figure~\ref{fig:ssr-client-server-separate-output}, it is
+          possible to have a setup, in which, similar to the one described in
+          Figure~\ref{fig:ssr-client-server-shared-output}, server and
+          \textit{n} clients render the same sources, but on separate output
+          systems (e.g.\ several \gls{bs}/\gls{brs} renderers or even a mixture
+          of a \gls{wfs}/\gls{hoa} system and several \gls{bs}/\gls{brs}
+          renderers).\\
+
+          \begin{figure}[!htb]
+            \centering
+            \includegraphics[scale=1.0, trim = 20mm 204mm 10mm 10mm, clip]
+            {ssr-client-server-separate-output.pdf}
+            \caption{A diagram displaying a \gls{ssr} client/server setup, in
+              which the server and the clients render audio to separate outputs
+              (e.g.\ multiple \gls{bs} renderers). The server instance is not
+              controlled via \gls{osc}, but controls its clients through it.\\
+              {\color{osc-in}\textbf{--}} \gls{osc} input
+              {\color{osc-out}\textbf{--}} \gls{osc} output
+              {\color{audio-in}\textbf{--}} Audio input
+              {\color{audio-out}\textbf{--}} Audio output
+            }
+            \label{fig:ssr-client-server-separate-output}
+          \end{figure}
+
+          Figure~\ref{fig:ssr-external-client-server-separate-output} is an
+          example of a similar setup, but again using an external \gls{osc}
+          capable application to control the server instance.\\
+          \begin{figure}[!htb]
+            \centering
+            \includegraphics[scale=1.0, trim = 20mm 204mm 10mm 10mm, clip]
+            {ssr-external-client-server-separate-output.pdf}
+            \caption{A diagram displaying a \gls{ssr} client/server setup, in
+              which the server and the clients render audio separately (e.g.\
+              multiple \gls{bs} renderers). The server instance is controlled
+              by an \gls{osc} capable application (acting as another client)
+              and controls its clients through \gls{osc} as well.\\
+              {\color{osc-in}\textbf{--}} \gls{osc} input
+              {\color{osc-out}\textbf{--}} \gls{osc} output
+              {\color{audio-in}\textbf{--}} Audio input
+              {\color{audio-out}\textbf{--}} Audio output
+            }
+            \label{fig:ssr-external-client-server-separate-output}
+          \end{figure}
+        \cleardoublepage
+
+        \paragraph{Clients only}
+          \label{para:client_server_separate_rendering}
+          Using the new \gls{osc} interface, it is also possible to have
+          client-only setups, in which an \gls{osc} capable application mimics
+          a \gls{ssr} server. This way a set of \textit{n} clients can
+          collectively (see
+          Figure~\ref{fig:ssr-external-clients-only-shared-output}) or
+          separately (see
+          Figure~\ref{fig:ssr-external-clients-only-separate-output}) render
+          audio, without the specific need of a \gls{ssr} server instance
+          controlling them. The clients send their update information back to
+          the controlling application.\\
+          Much of the functionality implemented in the server-side of the
+          \gls{osc} interface however has to be reapplied to the controlling
+          software and its behavior, when dealing with \gls{ssr} clients.
+
+          \begin{figure}[!htb]
+            \centering
+            \includegraphics[scale=1.0, trim = 20mm 204mm 10mm 10mm, clip]
+            {ssr-external-clients-only-shared-output.pdf}
+            \caption{A diagram displaying a \gls{ssr} client cluster setup, in
+              which a set of clients render audio collectively (e.g.\ medium or
+              large-scale \gls{wfs} setup). An \gls{osc} capable application
+              acts as a \gls{ssr} server instance and controls the clients.\\
+              {\color{osc-in}\textbf{--}} \gls{osc} input
+              {\color{osc-out}\textbf{--}} \gls{osc} output
+              {\color{audio-in}\textbf{--}} Audio input
+              {\color{audio-out}\textbf{--}} Audio output
+            }
+            \label{fig:ssr-external-clients-only-shared-output}
+          \end{figure}
+
+          \begin{figure}[!htb]
+            \centering
+            \includegraphics[scale=1.0, trim = 20mm 204mm 10mm 10mm, clip]
+            {ssr-external-clients-only-separate-output.pdf}
+            \caption{A diagram displaying a \gls{ssr} client cluster setup, in
+              which a set of clients render audio separately (e.g.\ multiple
+              \gls{bs} renderers). An \gls{osc} capable application acts as a
+              \gls{ssr} server instance and controls the clients.\\
+              {\color{osc-in}\textbf{--}} \gls{osc} input
+              {\color{osc-out}\textbf{--}} \gls{osc} output
+              {\color{audio-in}\textbf{--}} Audio input
+              {\color{audio-out}\textbf{--}} Audio output
+            }
+            \label{fig:ssr-external-clients-only-separate-output}
+          \end{figure}
 
-        \begin{figure}[!htb]
-          \centering
-          \includegraphics[scale=1.0, trim = 20mm 204mm 10mm 10mm, clip]
-          {ssr-client-server-shared-output.pdf}
-          \caption{A diagram displaying a \gls{ssr} client/server setup, in
-            which the server and the clients render audio collectively (e.g.
-            \gls{wfs}). The server instance is not controlled via \gls{osc},
-            but controls its clients through it.\\
-            {\color{osc-in}\textbf{--}} \gls{osc} input
-            {\color{osc-out}\textbf{--}} \gls{osc} output
-            {\color{audio-in}\textbf{--}} Audio input
-            {\color{audio-out}\textbf{--}} Audio output
-          }
-          \label{fig:ssr-client-server-shared-output}
-        \end{figure}
-        \begin{figure}[!htb]
-          \centering
-          \includegraphics[scale=1.0, trim = 20mm 204mm 10mm 10mm, clip]
-          {ssr-client-server-separate-output.pdf}
-          \caption{A diagram displaying a \gls{ssr} client/server setup, in
-            which the server and the clients render audio to separate outputs
-            (e.g.\ multiple \gls{bs} renderers). The server instance is not
-            controlled via \gls{osc}, but controls its clients through it.\\
-            {\color{osc-in}\textbf{--}} \gls{osc} input
-            {\color{osc-out}\textbf{--}} \gls{osc} output
-            {\color{audio-in}\textbf{--}} Audio input
-            {\color{audio-out}\textbf{--}} Audio output
-          }
-          \label{fig:ssr-client-server-separate-output}
-        \end{figure}
-        \begin{figure}[!htb]
-          \centering
-          \includegraphics[scale=1.0, trim = 20mm 204mm 10mm 10mm, clip]
-          {ssr-external-client-server-shared-output.pdf}
-          \caption{A diagram displaying a \gls{ssr} client/server setup, in
-            which the server and the clients render audio collectively (e.g.
-            \gls{wfs}). The server instance is controlled by an \gls{osc}
-            capable application (acting as another client) and controls its
-            clients through \gls{osc} as well.\\
-            {\color{osc-in}\textbf{--}} \gls{osc} input
-            {\color{osc-out}\textbf{--}} \gls{osc} output
-            {\color{audio-in}\textbf{--}} Audio input
-            {\color{audio-out}\textbf{--}} Audio output
-          }
-          \label{fig:ssr-external-client-server-shared-output}
-        \end{figure}
-        \begin{figure}[!htb]
-          \centering
-          \includegraphics[scale=1.0, trim = 20mm 204mm 10mm 10mm, clip]
-          {ssr-external-client-server-separate-output.pdf}
-          \caption{A diagram displaying a \gls{ssr} client/server setup, in
-            which the server and the clients render audio separately (e.g.\
-            multiple \gls{bs} renderers). The server instance is controlled by
-            an \gls{osc} capable application (acting as another client) and
-            controls its clients through \gls{osc} as well.\\
-            {\color{osc-in}\textbf{--}} \gls{osc} input
-            {\color{osc-out}\textbf{--}} \gls{osc} output
-            {\color{audio-in}\textbf{--}} Audio input
-            {\color{audio-out}\textbf{--}} Audio output
-          }
-          \label{fig:ssr-external-client-server-separate-output}
-        \end{figure}
-        \begin{figure}[!htb]
-          \centering
-          \includegraphics[scale=1.0, trim = 20mm 204mm 10mm 10mm, clip]
-          {ssr-external-clients-only-separate-output.pdf}
-          \caption{A diagram displaying a \gls{ssr} client cluster setup, in
-            which a set of clients render audio separately (e.g.\ multiple
-            \gls{bs} renderers). An \gls{osc} capable application acts as a
-            \gls{ssr} server instance and controls the clients.\\
-            {\color{osc-in}\textbf{--}} \gls{osc} input
-            {\color{osc-out}\textbf{--}} \gls{osc} output
-            {\color{audio-in}\textbf{--}} Audio input
-            {\color{audio-out}\textbf{--}} Audio output
-          }
-          \label{fig:ssr-external-clients-only-separate-output}
-        \end{figure}
-        \begin{figure}[!htb]
-          \centering
-          \includegraphics[scale=1.0, trim = 20mm 204mm 10mm 10mm, clip]
-          {ssr-external-clients-only-shared-output.pdf}
-          \caption{A diagram displaying a \gls{ssr} client cluster setup, in
-            which a set of clients render audio collectively (e.g.\ medium or
-            large-scale \gls{wfs} setup). An \gls{osc} capable application acts
-            as a \gls{ssr} server instance and controls the clients.\\
-            {\color{osc-in}\textbf{--}} \gls{osc} input
-            {\color{osc-out}\textbf{--}} \gls{osc} output
-            {\color{audio-in}\textbf{--}} Audio input
-            {\color{audio-out}\textbf{--}} Audio output
-          }
-          \label{fig:ssr-external-clients-only-shared-output}
-        \end{figure}
   \cleardoublepage
-      \subsubsection{Layered clients}
-        \label{subsubsec:layered_clients}
+      \subsubsection{Message levels}
+        \label{subsubsec:message_levels}
+
       \subsubsection{Message interface}
         \label{subsubsec:message_interface}
         \gls{osc} offers the possibility of a hierarchical path tree, that can be used to group messages 
-- 
cgit v1.2.3-54-g00ecf

