From 35c3eca7ca25fc5a5ff02192c305fa9d5f35dca3 Mon Sep 17 00:00:00 2001
From: David Runge <dave@sleepmap.de>
Date: Wed, 5 Jul 2017 16:18:51 +0200
Subject: thesis/thesis.tex: Elaborating on alien loudspeaker and non-renderer.
 Renaming future work subsubsections to more appropriate titles.

---
 thesis/thesis.tex | 128 ++++++++++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 110 insertions(+), 18 deletions(-)

(limited to 'thesis/thesis.tex')

diff --git a/thesis/thesis.tex b/thesis/thesis.tex
index 7b02882..2245348 100644
--- a/thesis/thesis.tex
+++ b/thesis/thesis.tex
@@ -1820,12 +1820,6 @@ ssr-aap -N “server” -C “127.0.0.1:50002”
         The implementation could be desirable for massive multi-channel setups
         and simply switching between several (local or network-attached)
         \gls{ssr} instances alike.\\
-        The functionalities of the \gls{ssr}'s \gls{gui}, its several spatial
-        audio renderers and \gls{osc} interface (amongst other parts) are
-        determined by its \gls{pubsub}. For the \gls{gui} part of the software
-        to display information about a networked setup, or even switch between
-        several of them, it is therefore not needed or even desirable for that
-        instance to render audio at all.\\
 
         \begin{figure}[!htb]
           \centering
@@ -1844,6 +1838,13 @@ ssr-aap -N “server” -C “127.0.0.1:50002”
           \label{fig:ssr-client-server-clients-only-shared-output}
         \end{figure}
 
+        The functionalities of the \gls{ssr}'s \gls{gui}, its several spatial
+        audio renderers and \gls{osc} interface (amongst other parts) are
+        determined by its \gls{pubsub}. For the \gls{gui} part of the software
+        to display information about a networked setup, or even switch between
+        several of them, it is therefore not needed or even desirable for that
+        instance to render audio at all. An instance with such features could
+        be imagined as a \gls{gui} only frontend.\\
         Figure~\ref{fig:ssr-client-server-clients-only-shared-output}
         illustrates a scenario, in which a server instance is used to control a
         set of \textit{n} clients, that collectively render audio (e.g.\ on a
@@ -1852,7 +1853,9 @@ ssr-aap -N “server” -C “127.0.0.1:50002”
         outputs) and might not even need any audio input.\\
         The server in this example could also be a client, subscribed to a
         server instance in a cluster similar to the one in
-        Figure~\ref{fig:ssr-external-client-server-shared-output}.
+        Figure~\ref{fig:ssr-external-client-server-shared-output} (i.e.\ as the
+        \gls{osc} capable application controlling the server instance by using
+        a \mintinline{c++}{MessageLevel} of \mintinline{c++}{SERVER} or higher).
 
         \begin{figure}[!htb]
           \centering
@@ -1873,31 +1876,120 @@ ssr-aap -N “server” -C “127.0.0.1:50002”
 
         The example shown in
         Figure~\ref{fig:ssr-client-server-clients-only-separate-output} is
-        similar to the aforementioned, with the difference, that its \textit{n}
+        similar to the one before, with the difference, that its \textit{n}
         clients render audio on separate systems.\\
-        This could be a set of 
-
+        Said client instances could be a cluster of headphone renderers, such
+        as \gls{brs} renderers, or loudspeaker renderers, such as \gls{vbap} or
+        \gls{wfs}, or even a combination of both types.\\
+        Analogous to the example given before, the \gls{gui} only frontend
+        could also act as a client with a \mintinline{c++}{MessageLevel} of
+        \mintinline{c++}{SERVER} or higher (i.e.\ again being the \gls{osc}
+        capable application), controlling the server in a setup, similar to the
+        one shown in
+        Figure~\ref{fig:ssr-external-client-server-separate-output}.\\
+        For the aforementioned use-cases to work, the \gls{gui} of the
+        \gls{ssr} has to be extended to show the networking specific
+        information and be able to use the \gls{osc} interface through the
+        \gls{pubsub} interface (which itself would probably have to be extended
+        as well). Additionally a renderer should be conceived, that does not
+        render audio, but still uses the \gls{pubsub}, so the internal
+        functionality of the \gls{ssr} can be reused, leading to a relatively
+        light-weight \gls{ssr} \gls{gui} variant, only for controlling
+        setups.\\
+        As there are many edge cases to networked setups, it seems still
+        unclear, whether audio inputs would actually be needed for such a
+        renderer.
 
         \cleardoublepage
 
-      \subsubsection{Implementing AlienLoudspeaker}
-        \label{subsubsec:implementing_alienloudspeaker}
+      \subsubsection{Alien loudspeaker}
+        \label{subsubsec:alien_loudspeaker}
+        For the examples given in
+        Figure~\ref{fig:ssr-client-server-shared-output}
+        ,~\ref{fig:ssr-client-server-clients-only-shared-output}
+        ,~\ref{fig:ssr-external-clients-only-shared-output}
+        and~\ref{fig:ssr-external-client-server-shared-output}, which
+        facilitate a set of \textit{n} clients (server instances are counted as
+        clients for the point made, where applicable), used for rendering in a
+        medium or large scale loudspeaker based setup, an additional type of
+        loudspeaker should be conceived and implemented in the different
+        renderers.\\
 
-      \subsubsection{Implementing automatic client discarding}
-        \label{subsubsec:implementing_automatic_client_discarding}
+        \begin{listing}[!htb]
+          \begin{mdframed}
+            \inputminted[numbers=left, firstline=44, lastline=51,
+              fontsize=\footnotesize]{c++}{../../ssr/src/loudspeaker.h}
+          \end{mdframed}
+          \caption{src/loudspeaker.h: \mintinline{c++}{enum model_t}}
+          \label{lst:loudspeaker.h}
+        \end{listing}\\
+
+        In the setups, where rendering takes place collectively, each client
+        instance currently is reproducing the complete reproduction setup. This
+        means, that for a reproduction setup with several hundred loudspeakers,
+        each client creates exactly that amount of \gls{jack} outputs each,
+        although it would only be responsible for discretely rendering audio on
+        a subset of them.\\
+        To cope with this edge case, the current loudspeaker renderers would
+        have to be extended to be able to distinguish between the loudspeakers
+        of the current and that of other instances. This would enable them to
+        create \gls{jack} outputs in the amount of the loudspeakers they are
+        rendering audio for and reduce the overall processing usage.\\
+        In Listing~\ref{lst:loudspeaker.h} the \mintinline{c++}{enum model_t},
+        defining the loudspeaker types available to the \gls{ssr}, is extended
+        to facilitate the new model type \mintinline{c++}{alien}, which could
+        be used internally by the renderers to identify loudspeakers, not to
+        render on.\\
+
+        \begin{listing}[!htb]
+          \begin{mdframed}
+            \inputminted[numbers=left, firstline=44, lastline=62,
+            fontsize=\footnotesize, breaklines]{xml}{../../ssr/data/asdf.xsd}
+            \inputminted[numbers=left, firstline=250, lastline=264,
+            fontsize=\footnotesize]{xml}{../../ssr/data/asdf.xsd}
+            \inputminted[numbers=left, firstline=314, lastline=318,
+            fontsize=\footnotesize, breaklines]{xml}{../../ssr/data/asdf.xsd}
+            \inputminted[numbers=left, firstline=361, lastline=364,
+            fontsize=\footnotesize, breaklines]{xml}{../../ssr/data/asdf.xsd}
+            \inputminted[numbers=left, firstline=186, lastline=186,
+            fontsize=\footnotesize]{xml}{../../ssr/data/asdf.xsd}
+          \end{mdframed}
+          \caption{data/asdf.xsd: Reproduction setup, loudspeaker, circular
+          array and linear array definition in \gls{asdf} extended by a
+          \textit{hostname} attribute}
+        \label{lst:asdf.xsd}
+        \end{listing}\\
+
+        Already when defining a reproduction setup for the \gls{ssr},
+        host-specific loudspeakers have to be taken into account.
+        Listing~\ref{lst:asdf.xsd} shows an attempt at providing a unique
+        attribute for each part of the setup, that is referencing a loudspeaker
+        - the hostname or \gls{ip} address of the host - by extending the
+        \gls{asdf}.\\ 
+        More work has to be put into implementing this feature, or rather
+        improvement however, as it also requires tests in medium and large
+        scale setups, to ensure a discrete rendering, as if only using one
+        host.
+
+      \subsubsection{Automatic client discarding}
+        \label{subsubsec:automatic_client_discarding}
 
       \subsubsection{Status messages}
         \label{subsubsec:status_messages}
 
-      \subsubsection{Assigning inputs on the fly}
-        \label{subsubsec:assigning_inputs_on_the_fly}
+      \subsubsection{Scene transfer}
+        \label{subsubsec:scene_transfer}
+
+      \subsubsection{Assigning in- and outputs on the fly}
+        \label{subsubsec:assigning_in_and_outputs_on_the_fly}
 
       \subsubsection{Interpolation of moving sources}
         \label{subsubsec:interpolation_of_moving_sources}
 
-      \subsubsection{Dynamic scores}
-        \label{subsubsec:dynamic_scores}
+      \subsubsection{Dynamic scene}
+        \label{subsubsec:dynamic_scene}
 
+  \cleardoublepage
   \pagestyle{empty}
   \cleardoublepage
   \appendix
-- 
cgit v1.2.3-54-g00ecf

