<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">\documentclass{report}
\author{xengineering}
\title{soundbox documentation}

\usepackage{graphicx}
\graphicspath{ {./diagrams/} }
\usepackage{hyperref}

\setlength\parindent{0pt}

\begin{document}

\maketitle
\newpage

\tableofcontents
\newpage

\listoffigures
\newpage

\chapter{Introduction}
\label{chap:introduction}

\texttt{soundbox} is a device to connect classic audio systems to the network.

\section{Versioning}

This device is versioned with Semantic
Versioning\footnote{\href{https://semver.org}{https://semver.org}}. The
resulting version numbers have the format \texttt{&lt;major&gt;.&lt;minor&gt;.&lt;patch&gt;} like
e.g. \texttt{2.0.3}. While Semantic Versioning is usually targeted at software
only it is here used for the whole device. This includes mechanical, electronic
and software aspects as shown in figure \ref{diagram:device-semver}.

\begin{figure}[h]
	\centering
	\includegraphics[width=\textwidth]{device-semver.pdf}
	\caption{API for a device versioned with Semantic Versioning}
	\label{diagram:device-semver}
\end{figure}

This versioning makes sure that users do not have to care about the device
internals at all. Devices can be seen as atomic from a user's perspective. This
level of granularity is choosen because users are not expected to disassemble
devices or to care about the software internals.

%\section{Licensing}

\chapter{User guide}

In addition to \autoref{chap:introduction} `\nameref{chap:introduction}` the
following sections document everything required to use \texttt{soundbox}
devices..

%\section{Device setup}

\section{Playing audio}

For a simple audio streaming test the following commands from the FFmpeg
streaming
guide\footnote{\href{https://trac.ffmpeg.org/wiki/StreamingGuide\#StreamingasimpleRTPaudiostreamfromFFmpeg}{https://trac.ffmpeg.org/wiki/StreamingGuide\#StreamingasimpleRTPaudiostreamfromFFmpeg}}
can be used. The following command has to be executed on the soundbox to start
listening on port \texttt{1234} for incoming audio streams:

\begin{verbatim}
	ffplay rtp://127.0.0.1:1234
\end{verbatim}

As soon as the soundbox is listening the stream can be send from another
computer in the same network with this command:

\begin{verbatim}
	ffmpeg -re -f lavfi -i aevalsrc="sin(400*2*PI*t)" -ar 8000 -f mulaw \
	    -f rtp rtp://&lt;soundbox-ip&gt;:1234
\end{verbatim}

It will send a simple sine wave with 400~Hz to the soundbox device.
Alternatively a mp3 file can be sent like this:

\begin{verbatim}
	ffmpeg -i '/path/to/file.mp3' -acodec libmp3lame -ar 11025 \
	    -f rtp rtp://&lt;soundbox-ip&gt;:1234
\end{verbatim}

These commands allow to test the \texttt{soundbox} device setup.

%\chapter{Production}
%\section{Printing mechanical parts}
%\section{Install operating system to SD card}
%\section{Final assembly}

%\chapter{Device internals}
%\section{Mechanical design}
%\section{Electronics}
%\section{Operating system}
%\section{Software}

\end{document}
</pre></body></html>