diff options
Diffstat (limited to 'expose')
-rw-r--r-- | expose/bib/ssr-networking.bib | 98 | ||||
-rw-r--r-- | expose/expose.pdf | bin | 0 -> 161854 bytes | |||
-rw-r--r-- | expose/expose.tex | 265 | ||||
-rw-r--r-- | expose/images/ssr-networking.pdf | bin | 0 -> 7212 bytes | |||
-rw-r--r-- | expose/images/ssr-networking.svg | 530 | ||||
-rw-r--r-- | expose/input/abstract.tex | 3 | ||||
-rw-r--r-- | expose/input/introduction.tex | 2 |
7 files changed, 898 insertions, 0 deletions
diff --git a/expose/bib/ssr-networking.bib b/expose/bib/ssr-networking.bib new file mode 100644 index 0000000..0ebf2b4 --- /dev/null +++ b/expose/bib/ssr-networking.bib @@ -0,0 +1,98 @@ +@phdthesis{ baalman2007, + title = "On wave field synthesis and electro-acoustic music", + author = "Marije A.J. Baalman", + year = "2007", + month = "Dec", + publisher = "Technische Universität Berlin", + volume = "1"} + +@inproceedings{ baalmanetal2007, + title = "Renewed architecture of the sWONDER software for Wave Field Synthesis on large scale systems", + author = "Marije A.J. Baalman and Torben Hohn and Simon Schampijer and Thilo Koch", + year = "2007", + month = "May", + school = "Technische Universität Berlin", + publisher = "Linux Audio Conference", + volume = "1"} + +@mastersthesis{ goltz2010, + title = "Planung und Konfiguration eines Labors zur Wellenfeldsynthese", + author = "Florian Goltz", + year = "2010", + month = "Aug", + publisher = "Technische Universität Berlin", + volume = "1"} + +@conference{ ahrensetal2008, + title = "Analysis and Improvement of Pre-equalization in 2.5-Dimensional Wave Field Synthesis", + author = "Sascha Spors, Jens Ahrens", + year = "2010", + month = "May", + publisher = "Audio Engineering Society Inc.", + volume = "1"} + +@conference{ ahrensetal2008, + title = "The Theory of Wave Field Synthesis Revisited", + author = "Sascha Spors, Rudolf Rabenstein, Jens Ahrens", + year = "2008", + month = "May", + publisher = "Audio Engineering Society Inc.", + volume = "1"} + +@phdthesis{ melchior2011, + title = "Investigations on spatial sound design based on measured room impulse responses", + author = "Frank Melchior", + note = "Spatial Sound Design", + year = "2011", + month = "Jun", + publisher = "Technische Universiteit Delft", + volume = "1"} + +@misc{ website:jackaudio2016, + title = "JACK Audio Connection Kit", + author = "Paul Davis", + year = "2016", + month = "May", + url = "http://jackaudio.org/"} + +@misc{ website:swonder2016, + title = "sWONDER", + author = "Marije Baalman", + year = "2016", + month = "May", + url = "https://sourceforge.net/projects/swonder/"} + +@misc{ website:wfscollider2016, + title = "WFSCollider on Github", + author = "Game Of Life Foundation", + year = "2016", + month = "May", + url = "https://github.com/GameOfLife/WFSCollider"} + +@misc{ website:gameoflife2016, + title = "Game Of Life Foundation", + author = "Game Of Life Foundation", + year = "2016", + month = "May", + url = "http://gameoflife.nl/en"} + +@misc{ website:ssr2016, + title = "SoundScape Renderer", + author = "Quality and Usability Lab/TU Berlin and Institut für Nachrichtentechnik/Universität Rostock", + year = "2016", + month = "May", + url = "http://spatialaudio.net/ssr/"} + +@misc{ website:supercollider2016, + title = "SuperCollider", + author = "James McCartney", + year = "2016", + month = "May", + url = "http://supercollider.github.io/"} + +@misc{ website:puredata2016, + title = "PureData", + author = "Miller Puckette", + year = "2016", + month = "May", + url = "http://puredata.info"} diff --git a/expose/expose.pdf b/expose/expose.pdf Binary files differnew file mode 100644 index 0000000..f014812 --- /dev/null +++ b/expose/expose.pdf diff --git a/expose/expose.tex b/expose/expose.tex new file mode 100644 index 0000000..b785684 --- /dev/null +++ b/expose/expose.tex @@ -0,0 +1,265 @@ +\documentclass[12pt,a4paper,oneside,titlepage]{article} +\usepackage[english]{babel} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{textcomp} % Sonderzeichen, z.B. € +%\usepackage{citep} +\usepackage{listings} +\lstdefinelanguage{Ini}{basicstyle=\ttfamily\tiny, + columns=fullflexible, + tag=[s]{[]}, + tagstyle=\color{blue}\bfseries, + usekeywordsintag=true +}[html] +\lstdefinelanguage{bash}{basicstyle=\ttfamily\tiny} +\usepackage{ulem} +\usepackage{lmodern} +\usepackage{multirow} +\usepackage{url} +\usepackage{graphicx} % for PDF scaling +\usepackage{pdfpages} +\usepackage{float} +\floatstyle{boxed} +\restylefloat{figure} +\usepackage{color} +\usepackage{bbding} +\usepackage{hyperref} +\usepackage[font=scriptsize]{caption} +\usepackage[numbers]{natbib} +\graphicspath{{images//}} + +\begin{document} + \title{Exposé: SoundScape Renderer Networking} + \author{David Runge\\ + Audiokommunikation und -technologie\\ + Fachgebiet Audiokommunikation\\ + Technische Universität Berlin\\ + \href{dave@sleepmap.de}{dave@sleepmap.de} + } + \date{\today} + \maketitle + \begin{abstract} + Wave Field Synthesis (WFS) as a technological concept has been around for + many years now and all over the world several institutions run small and + some even large scale setups ranging from single speaker lines to those + facilitating a couple of hundred loudspeakers respectively.\\ + The still evolving implementations are driven by several rendering + engines, of which two free and open-source ones, namely sWONDER and + SoundScape Renderer, have (partially) been developed at TU Berlin.\\ + The latter due to its current design is not yet able to render for large + scale setups, ie.\ those using several computers to render audio on a + loudspeaker setup, due to the high amount of channels.\\ + Its solid codebase however, which additionally offers a framework for many + more renderers, and the ongoing development, deems further work on this + application a good future investment.\\ + The proposed work seeks to extend the SoundScape Renderer functionality to + turn it into a networking application for large scale WFS setups. +\end{abstract} + \section{Introduction} + Wave Field Synthesis (WFS) describes a spatial technique for rendering audio. As + such it aims at synthesizing a sound field of desired acoustic preference + in a given listening area, assuming a planar reproduction to be most + suitable for most applications.\\ + WFS is typically implemented using a curved or linear loudspeaker array + surrounding the listening area.\\ + Several free and open-source renderer applications exist for WFS + environments, with varying stages of feature richness.\\ + The proposed work will focus on one of them and its extension towards WFS + on large scale systems. + + \section{Free and open-source wave field synthesis renderers} + To date there exist three (known of) free and open-source Wave Field + Synthesis renderers, which are all \href{http://jackaudio.org/}{JACK Audio + Connection Kit (JACK)} \citep{website:jackaudio2016} clients: + \begin{itemize} + \item \href{https://sourceforge.net/projects/swonder/}{sWONDER} \citep{website:swonder2016}, + developed by Technische Universität Berlin, Germany + \item \href{https://github.com/GameOfLife/WFSCollider}{WFSCollider} \citep{website:wfscollider2016}, + developed by \href{http://gameoflife.nl/en}{Game Of Life Foundation} \citep{website:gameoflife2016}, + The Hague, Netherlands + \item \href{http://spatialaudio.net/ssr/}{SoundScape Renderer (SSR)} \citep{website:ssr2016}, + developed by Quality \& Usability Lab, Deutsche Telekom Laboratories + and TU Berlin and Institut für Nachrichtentechnik, Universität Rostock + \end{itemize} + Currently only WFSCollider and the SSR are actively maintained and + developed, thussWONDER, although used in some setups, loses significance. + Generally it can be said, that different concepts apply to the three + renderers, which are about to be explained briefly in the following + sections. + + \subsection{WONDER} + sWONDER \citep{baalman2007} consists of a set of C++ applications that provide binaural and + WFS rendering. In 2007 it was specifically redesigned + \citep{baalmanetal2007} to cope with large scale WFS setups in which + several (computer) nodes, providing several speakers each, drive a system + together.\\ + In these setups each node receives all available audio streams (which + represent one virtual audio source respectively) redundantly and a master + application signals which node is responsible for rendering what source + on which speaker.\\ + It uses Open Sound Control (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. + 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. + + \subsection{WFSCollider} + WFSCollider was built on top of + \href{https://supercollider.github.io}{SuperCollider} 3.5 + \citep{website:supercollider2016} and is also capable of driving large + scale systems. It uses a different approach in + doing so, though: Whereas withsWONDER 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 + 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 + an OSC enabled application and can thus also be used for mere + multi-channel playback of audio.\\ + Although it has many useful features, it requires MacOSX (Linux version + still untested) to run, is built upon a quite old version of + \href{https://supercollider.github.io}{SuperCollider} and is likely never + to be merged into it, due to many core changes to it. + + \subsection{SoundScape Renderer} + SoundScape Renderer (SSR), also a C++ application, running on Linux and + MacOSX, is a multi-purpose spatial audio renderer, as it is not only + capable of Binaural Synthesis and WFS, but also Higher-Order Ambisonics + and Vector Base Amplitude Panning.\\ + It can be used with a GUI or headless (without one), depicting the + virtual sources, their volumes and positions, alongside which speakers + are currently used for rendering a selected source. + SSR uses TCP/IP sockets for communication and thus is not directly OSC + enabled. This functionality can be achieved using the capapilities of + other applications such as \href{http://puredata.info}{PureData} + \citep{website:puredata2016} in combination with it though.\\ + Unlike the two renderers above, the SSR is not able to run large-scale + WFS setups, as it lacks the features to communicate between instances of + itself on several computers, while these instances serve a subset of the + available loudspeakers. + + \section{Extending Sound Scape Renderer functionality} + The SSR, due to its diverse set of rendering engines, which are made + available through an extensible framework, and its clean codebase, is a + good candidate for future large scale WFS setups. These type of features + are not yet implemented though and will need testing.\\ + Therefore I propose the implementation and testing of said feature, making + the SSR capable of rendering on large scale WFS setups with many nodes, + controlled by a master instance.\\ + The sought implementation is inspired by the architecture of sWONDER, but + instead of creating many single purpose applications, the master/node + feature will be made available through flags to the ssr executable, when + starting it. This behavior is already actively harnessed eg.\ for selecting + one of the several rendering engines. + \begin{figure}[!htb] + \centering + \includegraphics[scale=0.9, trim = 31mm 190mm 24mm 8mm, clip]{ssr-networking.pdf} + \caption{A diagram displaying the SSR master/node setup with TCP/IP + socket connections over network (green lines), audio channels (red dashed + lines) and OSC connection (blue dashed line). Machines are indicated as red + dashed rectangles and connections to audio hardware as outputs of SSR + nodes as black lines below them.} + \label{fig:ssr-networking} + \end{figure} + While the SSR already has an internal logic to know which loudspeaker will + be used for what virtual audio source, this will have to be extended to be + able to know which renderer node has to render what source on which + loudspeaker (see Figure~\ref{fig:ssr-networking}). + To achieve the above features, the SSR's messaging (and thus also settings) + capabilities have to be extended alongside its internal logic concerning + the selection of output channels (and the master to node notification + thereof). To introduce as little redundant code as possible, most likely a + ``the client knows all'' setup is desirable, in which each node knows about + the whole setup, but is also set to only serve its own subset of + loudspeakers in it. This will make sure that the rendering engine remains + functional also in a small scale WFS setup.\\ + The lack of a direct OSC functionality, as provided by the two other + renderers, will not be problematic, as master and nodes can communicate + through their builtin TCP/IP sockets directly and the master can, if + needed, be controlled via OSC. + + \section{Prelimenaries} + In preparation to the exposé I tried to implement a side-by-side + installation, using Arch Linux on a medium scale setup, facilitating the + WFS system of the Electronic Studio at TU Berlin. Unfortunately the + proprietary Dante driver, that is used in that system is very complex to be + built, as well as underdeveloped and thus keeps the system from being + easily updated, which is needed for testing purposes (finding a suitable + real-time, low-latency Linux kernel), trying out new software features, + building new software and keeping a system safe. The driver will most + likely require changes to the hardware due to implemention of hardware + branding by the vendor and dire testing before usage.\\ + Although eventually using a proper WFS setup for testing will be necessary, + it is luckily not needed for implementing the features, as they can already be + worked out using two machines running Linux, JACK and the development version + of SSR.\\ + The hardware of the large scale setup at TU Berlin in H0104 is currently + about to be updated and therefore a valuable candidate for testing of the + sought SSR features. + + \section{Schedule} + I propose a six month schedule for the implementation and testing of the + changes to the source code and writing of an accompanying thesis. The + following rough schedule should serve as a guideline for the realization of + the work:\\ + \begin{tabular}{|l|l|l|l|} + \hline + \multicolumn{4}{|c|}{\textbf{Schedule}}\\ + \hline + \textbf{Week} & \textbf{Implementation} & \textbf{Tests} & \textbf{Thesis} \\ + \hline + 1 & Reading into codebase & & \\ + \hline + 2 & Reading into codebase & & \\ + \hline + 3 & Reading into codebase & & \\ + \hline + 4 & Reading into codebase & & \\ + \hline + 5 & Assessing changes & & Documentation \\ + \hline + 6 & Assessing changes & & Documentation \\ + \hline + 7 & Implementing changes & & \\ + \hline + 8 & Implementing changes & & \\ + \hline + 9 & Implementing changes & & \\ + \hline + 10 & Implementing changes & & \\ + \hline + 11 & Implementing changes & & \\ + \hline + 12 & Implementing changes & & \\ + \hline + 13 & Implementing changes & & Preparation\\ + \hline + 14 & Implementing changes & & Preparation\\ + \hline + 15 & & Small scale setup & Writing\\ + \hline + 16 & & Large scale setup & Writing\\ + \hline + 17 & & Large scale setup & Writing\\ + \hline + 18 & & Large scale setup & Writing\\ + \hline + 19 & Large scale setup (scripts) & & Writing\\ + \hline + 20 & Large scale setup (scripts) & & Writing\\ + \hline + 21 & Large scale setup (scripts) & & Writing\\ + \hline + 22 & & & Writing\\ + \hline + 23 & & & Writing\\ + \hline + 24 & & & Writing\\ + \hline + \end{tabular} + \pagebreak + \bibliographystyle{plainnat} + \bibliography{bib/ssr-networking} +\end{document} diff --git a/expose/images/ssr-networking.pdf b/expose/images/ssr-networking.pdf Binary files differnew file mode 100644 index 0000000..0efe0b4 --- /dev/null +++ b/expose/images/ssr-networking.pdf diff --git a/expose/images/ssr-networking.svg b/expose/images/ssr-networking.svg new file mode 100644 index 0000000..5ad38b3 --- /dev/null +++ b/expose/images/ssr-networking.svg @@ -0,0 +1,530 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 744.09448819 1052.3622047" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + sodipodi:docname="ssr-networking.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="2" + inkscape:cx="549.99356" + inkscape:cy="538.40824" + inkscape:document-units="px" + inkscape:current-layer="layer4" + showgrid="true" + inkscape:snap-text-baseline="false" + showguides="true" + inkscape:guide-bbox="true" + objecttolerance="20" + guidetolerance="8" + inkscape:snap-tangential="true" + inkscape:snap-perpendicular="true" + inkscape:window-width="3838" + inkscape:window-height="2138" + inkscape:window-x="1" + inkscape:window-y="21" + inkscape:window-maximized="1"> + <sodipodi:guide + position="339.41126,667.50882" + orientation="0,1" + id="guide11497" /> + <inkscape:grid + type="xygrid" + id="grid11499" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + inkscape:groupmode="layer" + id="layer3" + inkscape:label="Audio lines"> + <g + style="" + id="g11736"> + <path + inkscape:connector-curvature="0" + id="path11715" + d="m 347.24178,212.60097 c -85.52772,64.27369 -85.52772,64.27369 -85.52772,64.27369 l 0,0 85.52772,-64.27369 0,0 -85.52772,64.27369" + style="fill:none;fill-rule:evenodd;stroke:#871310;stroke-width:1.00674486px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path11718" + d="m 354.3171,212.60157 c -10.9777,64.27324 -10.9777,64.27324 -10.9777,64.27324 z" + style="fill:none;fill-rule:evenodd;stroke:#871310;stroke-width:1.02015305px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path11728" + d="m 357.87641,212.60082 c 63.77474,64.64974 63.77474,64.64974 63.77474,64.64974" + style="fill:none;fill-rule:evenodd;stroke:#871310;stroke-width:1.00676119px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path11730" + d="m 364.96219,212.35144 c 134.76755,64.3985 134.76755,64.3985 134.76755,64.3985" + style="fill:none;fill-rule:evenodd;stroke:#871310;stroke-width:1.0052954px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + </g> + </g> + <g + inkscape:groupmode="layer" + id="layer4" + inkscape:label="Audio boxes"> + <rect + y="152.77347" + x="313.63739" + height="59.610664" + width="80.546021" + id="rect11713" + style="fill:none;fill-opacity:0.87058824;stroke:#871310;stroke-width:0.66879374;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.3375874, 2.67517478999999980;stroke-dashoffset:1;stroke-opacity:1" /> + <rect + y="276.88834" + x="202.04231" + height="65.926254" + width="68.064415" + id="rect11713-6" + style="fill:none;fill-opacity:0.87058824;stroke:#871310;stroke-width:0.64654303;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.29308591, 2.58617179999999980;stroke-dashoffset:1;stroke-opacity:1" /> + <rect + y="276.88834" + x="281.74911" + height="65.926254" + width="68.064415" + id="rect11713-6-4" + style="fill:none;fill-opacity:0.87058824;stroke:#871310;stroke-width:0.64654303;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.29308591, 2.58617179999999980;stroke-dashoffset:1;stroke-opacity:1" /> + <rect + y="276.77045" + x="361.6153" + height="65.926254" + width="68.064415" + id="rect11713-6-4-7" + style="fill:none;fill-opacity:0.87058824;stroke:#871310;stroke-width:0.64654303;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.29308591, 2.58617179999999980;stroke-dashoffset:1;stroke-opacity:1" /> + <rect + y="276.87439" + x="440.45193" + height="65.926254" + width="68.064415" + id="rect11713-6-4-7-0" + style="fill:none;fill-opacity:0.87058824;stroke:#871310;stroke-width:0.64654303;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.29308591, 2.58617179999999980;stroke-dashoffset:1;stroke-opacity:1" /> + <g + id="g11853" + transform="translate(-1.6464466,0.44194174)"> + <g + id="g11842"> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 212.59843,301.1811 c 0,7.08662 0,7.08662 0,7.08662" + id="path11813" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 219.68504,301.1811 c 0,7.08662 0,7.08662 0,7.08662" + id="path11815" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 226.77165,301.1811 c 0,7.08662 0,7.08662 0,7.08662" + id="path11817" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 233.85827,301.1811 c 0,7.08662 0,7.08662 0,7.08662" + id="path11819" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 240.94488,301.1811 c 0,7.08662 0,7.08662 0,7.08662" + id="path11821" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 248.0315,301.1811 c 0,7.08662 0,7.08662 0,7.08662" + id="path11823" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 255.11811,301.1811 c 0,7.08662 0,7.08662 0,7.08662" + id="path11825" + inkscape:connector-curvature="0" /> + </g> + <path + inkscape:connector-curvature="0" + id="path11851" + d="m 262.20472,301.1811 c 0,7.08662 0,7.08662 0,7.08662 l 0,0 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + </g> + <g + id="g11853-2" + transform="translate(78.133078,0.8986376)"> + <g + id="g11842-7"> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 212.59843,301.1811 c 0,7.08662 0,7.08662 0,7.08662" + id="path11813-8" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 219.68504,301.1811 c 0,7.08662 0,7.08662 0,7.08662" + id="path11815-7" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 226.77165,301.1811 c 0,7.08662 0,7.08662 0,7.08662" + id="path11817-5" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 233.85827,301.1811 c 0,7.08662 0,7.08662 0,7.08662" + id="path11819-9" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 240.94488,301.1811 c 0,7.08662 0,7.08662 0,7.08662" + id="path11821-2" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 248.0315,301.1811 c 0,7.08662 0,7.08662 0,7.08662" + id="path11823-6" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 255.11811,301.1811 c 0,7.08662 0,7.08662 0,7.08662" + id="path11825-0" + inkscape:connector-curvature="0" /> + </g> + <path + inkscape:connector-curvature="0" + id="path11851-5" + d="m 262.20472,301.1811 c 0,7.08662 0,7.08662 0,7.08662 l 0,0 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + </g> + <g + id="g11853-4" + transform="translate(157.80237,0.8986376)"> + <g + id="g11842-6"> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 212.59843,301.1811 c 0,7.08662 0,7.08662 0,7.08662" + id="path11813-5" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 219.68504,301.1811 c 0,7.08662 0,7.08662 0,7.08662" + id="path11815-5" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 226.77165,301.1811 c 0,7.08662 0,7.08662 0,7.08662" + id="path11817-4" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 233.85827,301.1811 c 0,7.08662 0,7.08662 0,7.08662" + id="path11819-2" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 240.94488,301.1811 c 0,7.08662 0,7.08662 0,7.08662" + id="path11821-5" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 248.0315,301.1811 c 0,7.08662 0,7.08662 0,7.08662" + id="path11823-62" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 255.11811,301.1811 c 0,7.08662 0,7.08662 0,7.08662" + id="path11825-04" + inkscape:connector-curvature="0" /> + </g> + <path + inkscape:connector-curvature="0" + id="path11851-4" + d="m 262.20472,301.1811 c 0,7.08662 0,7.08662 0,7.08662 l 0,0 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + </g> + <g + id="g11853-42" + transform="translate(237.29843,0.8986376)"> + <g + id="g11842-0"> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 212.59843,301.1811 c 0,7.08662 0,7.08662 0,7.08662" + id="path11813-1" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 219.68504,301.1811 c 0,7.08662 0,7.08662 0,7.08662" + id="path11815-3" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 226.77165,301.1811 c 0,7.08662 0,7.08662 0,7.08662" + id="path11817-2" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 233.85827,301.1811 c 0,7.08662 0,7.08662 0,7.08662" + id="path11819-1" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 240.94488,301.1811 c 0,7.08662 0,7.08662 0,7.08662" + id="path11821-8" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 248.0315,301.1811 c 0,7.08662 0,7.08662 0,7.08662" + id="path11823-1" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 255.11811,301.1811 c 0,7.08662 0,7.08662 0,7.08662" + id="path11825-5" + inkscape:connector-curvature="0" /> + </g> + <path + inkscape:connector-curvature="0" + id="path11851-6" + d="m 262.20472,301.1811 c 0,7.08662 0,7.08662 0,7.08662 l 0,0 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + </g> + </g> + <g + id="g11667"> + <path + inkscape:connector-curvature="0" + id="path11636" + d="M 208.70157,276.7315 C 350.43385,177.5189 350.43385,177.5189 350.43385,177.5189 Z" + style="fill:none;fill-rule:evenodd;stroke:#68a754;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path11639" + d="m 354.08071,177.41535 c -63.77953,99.2126 0,0 0,0 l -63.77953,99.2126 z" + style="fill:none;fill-rule:evenodd;stroke:#68a754;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path11663" + d="m 357.87402,177.54035 c 10.62992,99.2126 10.62992,99.2126 10.62992,99.2126 l -10.62992,-99.2126 10.62992,99.2126 z" + style="fill:none;fill-rule:evenodd;stroke:#68a754;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path11665" + d="m 361.79232,177.54035 c 85.03937,99.2126 85.03937,99.2126 85.03937,99.2126 z" + style="fill:none;fill-rule:evenodd;stroke:#68a754;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + </g> + </g> + <g + inkscape:groupmode="layer" + id="layer2" + inkscape:label="Layer 2"> + <g + id="g11616"> + <g + transform="matrix(0.97104866,0,0,1.0034172,90.167774,-93.814154)" + id="g11468"> + <rect + style="fill:none;fill-opacity:0.87058824;stroke:#360000;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect3336" + width="60.772362" + height="24.912886" + x="120.05743" + y="369.42239" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:100%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="123.14749" + y="385.58472" + id="text4141" + sodipodi:linespacing="100%"><tspan + sodipodi:role="line" + id="tspan4143" + x="123.14749" + y="385.58472" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:100%;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start">SSR Node</tspan></text> + </g> + <g + transform="matrix(0.97104866,0,0,1.0034172,169.91194,-93.814154)" + id="g11468-7"> + <rect + style="fill:none;fill-opacity:0.87058824;stroke:#360000;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect3336-5" + width="60.772362" + height="24.912886" + x="120.05743" + y="369.42239" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:100%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="123.14749" + y="385.58472" + id="text4141-1" + sodipodi:linespacing="100%"><tspan + sodipodi:role="line" + id="tspan4143-2" + x="123.14749" + y="385.58472" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:100%;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start">SSR Node</tspan></text> + </g> + <g + transform="matrix(0.97104866,0,0,1.0034172,249.52819,-93.837483)" + id="g11468-7-0"> + <rect + style="fill:none;fill-opacity:0.87058824;stroke:#360000;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect3336-5-2" + width="60.772362" + height="24.912886" + x="120.05743" + y="369.42239" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:100%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="123.14749" + y="385.58472" + id="text4141-1-0" + sodipodi:linespacing="100%"><tspan + sodipodi:role="line" + id="tspan4143-2-6" + x="123.14749" + y="385.58472" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:100%;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start">SSR Node</tspan></text> + </g> + <g + transform="matrix(0.97104866,0,0,1.0034172,328.58513,-93.814154)" + id="g11468-7-0-8"> + <rect + style="fill:none;fill-opacity:0.87058824;stroke:#360000;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect3336-5-2-6" + width="60.772362" + height="24.912886" + x="120.05743" + y="369.42239" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:100%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="123.14749" + y="385.58472" + id="text4141-1-0-8" + sodipodi:linespacing="100%"><tspan + sodipodi:role="line" + id="tspan4143-2-6-0" + x="123.14749" + y="385.58472" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:100%;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start">SSR Node</tspan></text> + </g> + </g> + <g + id="g11468-9" + transform="matrix(0.97104866,0,0,1.0034172,202.46698,-217.8299)"> + <g + id="g11611"> + <rect + style="fill:none;fill-opacity:0.87058824;stroke:#360000;stroke-width:1.07921612;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect3336-8" + width="71.007797" + height="24.83367" + x="120.09704" + y="369.46201" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:100%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="122.05521" + y="385.58472" + id="text4141-4" + sodipodi:linespacing="100%"><tspan + sodipodi:role="line" + id="tspan4143-7" + x="122.05521" + y="385.58472" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:100%;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start">SSR Master</tspan></text> + </g> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40.52273178px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="213.77092" + y="407.3364" + id="text11607" + sodipodi:linespacing="125%" + transform="scale(1.0165302,0.98373864)"><tspan + sodipodi:role="line" + id="tspan11609" + x="213.77092" + y="407.3364"></tspan></text> + </g> + <rect + style="fill:none;fill-opacity:0.87058824;stroke:#360000;stroke-width:1.0652945;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect3336-8-1" + width="68.952026" + height="24.918531" + x="212.78783" + y="78.485184" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:39.48400879px;line-height:100%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="228.40347" + y="87.221191" + id="text4141-4-0" + sodipodi:linespacing="100%" + transform="scale(0.98373863,1.0165302)"><tspan + sodipodi:role="line" + id="tspan4143-7-6" + x="228.40347" + y="87.221191" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:100%;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start">Control</tspan><tspan + id="tspan11709" + sodipodi:role="line" + x="228.40347" + y="99.884544" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:100%;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start">Machine</tspan></text> + <text + sodipodi:linespacing="125%" + id="text11607-4" + y="109.84251" + x="307.18109" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="109.84251" + x="307.18109" + id="tspan11609-4" + sodipodi:role="line" /></text> + <path + inkscape:connector-curvature="0" + id="path11711" + d="m 248.0315,102.75591 c 74.40944,49.60629 74.40944,49.60629 74.40944,49.60629 l -74.40944,-49.60629 74.40944,49.60629 -74.40944,-49.60629 0,0" + style="fill:none;fill-rule:evenodd;stroke:#000064;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2, 4;stroke-dashoffset:1.01306832;stroke-opacity:1" /> + </g> +</svg> diff --git a/expose/input/abstract.tex b/expose/input/abstract.tex new file mode 100644 index 0000000..46bfd8f --- /dev/null +++ b/expose/input/abstract.tex @@ -0,0 +1,3 @@ +\begin{abstract} +Lorem ipsum blah +\end{abstract} diff --git a/expose/input/introduction.tex b/expose/input/introduction.tex new file mode 100644 index 0000000..f96114a --- /dev/null +++ b/expose/input/introduction.tex @@ -0,0 +1,2 @@ +\section{Introduction} + |