<feed xmlns='http://www.w3.org/2005/Atom'>
<title>soundbox/doc, branch 0.1.0</title>
<subtitle>Device to connect classic audio systems to the network</subtitle>
<id>https://cgit.xengineering.eu/soundbox/atom?h=0.1.0</id>
<link rel='self' href='https://cgit.xengineering.eu/soundbox/atom?h=0.1.0'/>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/'/>
<updated>2024-02-02T20:21:51Z</updated>
<entry>
<title>doc: Replace author name by email address</title>
<updated>2024-02-02T20:21:51Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-02-02T20:21:51Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=65bd53fb8c324c2237ccd9ce06bb9f3d47222f1f'/>
<id>urn:sha1:65bd53fb8c324c2237ccd9ce06bb9f3d47222f1f</id>
<content type='text'>
Since the name is contained inside the mail address it is not required
to add both.

Adding the email address is important for all kinds of feedback. This
might include general reactions to the project, feature requests, legal
questions or patches for improvements.
</content>
</entry>
<entry>
<title>doc: Mention license in introduction text</title>
<updated>2024-02-02T20:21:00Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-02-02T20:21:00Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=94d7ae0f681a2ab325f865d48a3a5131fdec4ebe'/>
<id>urn:sha1:94d7ae0f681a2ab325f865d48a3a5131fdec4ebe</id>
<content type='text'>
This is very important information for every reader so it should be part
of the first section.
</content>
</entry>
<entry>
<title>doc: Add license text as appendix</title>
<updated>2024-02-02T20:06:23Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-21T08:28:01Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=8a6065d53dcbc1f0cedd6925681b43c9c5e0b890'/>
<id>urn:sha1:8a6065d53dcbc1f0cedd6925681b43c9c5e0b890</id>
<content type='text'>
The text of each used license is added to the documentation PDF since
this might be passed to third parties without the source or build tree.
Adding the licenses to the PDF makes sure they are always accessible.
</content>
</entry>
<entry>
<title>Switch completely to CERN-OHL-S</title>
<updated>2024-02-02T19:57:44Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-02-02T17:44:46Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=52e93507245fb2c2421f0d324d6af1724ea847a9'/>
<id>urn:sha1:52e93507245fb2c2421f0d324d6af1724ea847a9</id>
<content type='text'>
The CERN Open Hardware License is not restricted to mechanical or
electrical design files but instead has a very wide scope (see section
1.3 of the OHL).

Thus it can be applied to all contents of this repository. Having only
one license makes the license structure for this project way easier.

Since the OHL is written with hardware in mind it likely fits better to
this open hardware project.
</content>
</entry>
<entry>
<title>doc: Restrict lldpd to Unix OS not Linux</title>
<updated>2024-01-30T20:14:44Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-30T20:14:44Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=9af2e3c3357ff738700e89dd816fd4162fd3bfcf'/>
<id>urn:sha1:9af2e3c3357ff738700e89dd816fd4162fd3bfcf</id>
<content type='text'>
The lldpd homepage [1] mentions Unix operating systems as host systems,
not only Linux. Furthermore there is a possibly working homebrew package
for MacOS.

[1]: https://lldpd.github.io
[2]: https://formulae.brew.sh/formula/lldpd#default
</content>
</entry>
<entry>
<title>doc: Add section 'Getting soundbox'</title>
<updated>2024-01-30T19:55:46Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-30T19:55:46Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=32be56460a716aa0a1e14b9c29b1b98fb8fe4750'/>
<id>urn:sha1:32be56460a716aa0a1e14b9c29b1b98fb8fe4750</id>
<content type='text'>
</content>
</entry>
<entry>
<title>doc: Add version information to PDF title page</title>
<updated>2024-01-30T19:42:07Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-30T19:40:35Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=57e12bcf9aafcd6bea41e895e14fdd2e6f6d8479'/>
<id>urn:sha1:57e12bcf9aafcd6bea41e895e14fdd2e6f6d8479</id>
<content type='text'>
Since otherwise the Git describe output / version information is only
embedded into the file name the risk is given that Git version
information is lost by renaming the file.
</content>
</entry>
<entry>
<title>doc: Reformulate variadic command definition</title>
<updated>2024-01-30T19:33:12Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-30T19:33:12Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=a4906e5da055d9f47b98e16a72b804bbfc6eb3e1'/>
<id>urn:sha1:a4906e5da055d9f47b98e16a72b804bbfc6eb3e1</id>
<content type='text'>
The new format is closer to e.g. 'man 1 printf'.
</content>
</entry>
<entry>
<title>doc: Move 'setup-alpine' to configuration section</title>
<updated>2024-01-30T19:26:00Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-30T19:26:00Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=718422591a603223ff64f7d056d4b2f986109530'/>
<id>urn:sha1:718422591a603223ff64f7d056d4b2f986109530</id>
<content type='text'>
This was never part of an installation but instead of a configuration
step.
</content>
</entry>
<entry>
<title>doc: Add section 'Bill of materials'</title>
<updated>2024-01-30T19:05:07Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-30T19:05:07Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=8c883f04f9c07d1a14a34daaac99250c0ae6b97e'/>
<id>urn:sha1:8c883f04f9c07d1a14a34daaac99250c0ae6b97e</id>
<content type='text'>
This is the central reference what is required to build soundbox
devices.
</content>
</entry>
<entry>
<title>doc: Rewrite introduction</title>
<updated>2024-01-30T18:11:53Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-28T13:23:47Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=9faebc1cfb5153e9b1961863d2930958464f4132'/>
<id>urn:sha1:9faebc1cfb5153e9b1961863d2930958464f4132</id>
<content type='text'>
The introduction was very limited so far but is important to manage
expectations regarding the device.
</content>
</entry>
<entry>
<title>doc: Add new chapter 'Developer documentation'</title>
<updated>2024-01-28T12:33:58Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-28T12:33:58Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=996ee12aa51c8279257991d76d11c14e7e0302f6'/>
<id>urn:sha1:996ee12aa51c8279257991d76d11c14e7e0302f6</id>
<content type='text'>
This new chapter should be the one with the highest level of details.
The section about versioning is also moved there with this commit.
</content>
</entry>
<entry>
<title>doc: Use Git-provided commit date for PDF</title>
<updated>2024-01-27T21:25:30Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-27T21:25:30Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=62d68edfef3afaae315c020f20e0cc6ff7ad5719'/>
<id>urn:sha1:62d68edfef3afaae315c020f20e0cc6ff7ad5719</id>
<content type='text'>
Using the date of the build makes it not-reproducible. This should be
avoided. Furthermore the date on the front page should anyway reflect
when the source of the document was created. Not when it was converted
into a PDF.
</content>
</entry>
<entry>
<title>doc: Switch protocol, format and codec</title>
<updated>2024-01-27T21:02:27Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-24T19:43:54Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=c79f077db7a79dd953bee68c51b1c4b863051d62'/>
<id>urn:sha1:c79f077db7a79dd953bee68c51b1c4b863051d62</id>
<content type='text'>
The following changes are included in this commit:

- multicast to unicast
- UDP to TCP
- Matroska to ogg
- MP3 to FLAC

Switching to these protocols has several advantages. Avoiding multicast
makes it unnecessary to care about the available multicast addresses in
the local network. Unicast addresses are anyway assigned by DHCP. In a
multi-room setup this has of course the disadvantage that the same data
might be streamed via separate connections. The bandwidth requirement
would be multiplied by the number of soundbox devices. But since a
stream takes around 2 Mbit/s and we live in a world where 100 Mbit/s in
a local network should not be a problem the inefficiency can be
neglected.

Switching from UDP to TCP has the advantage that the stream is
transmitted reliably. Furthermore it avoids the situation that multiple
clients stream to the same soundbox simultaneously since a
single-connection TCP server is used.

The switch from Matroska to ogg is done because the ogg format is
recommended on the FLAC homepage. FLAC is used instead of MP3 because it
is a lossless audio compression format. This is obviously superior
compared to the lossy MP3 format regarding audio quality.
</content>
</entry>
<entry>
<title>doc: Rework user guide for streaming</title>
<updated>2024-01-21T08:19:43Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-21T08:19:43Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=38d6997e5f6bd725b28c8cc6ed28cda670a2e900'/>
<id>urn:sha1:38d6997e5f6bd725b28c8cc6ed28cda670a2e900</id>
<content type='text'>
The default streaming guide is now far away from the original taken from
the FFmpeg streaming guide.

Since the command can handle a lot of inputs its also not useful to send
sine waves to soundbox devices.
</content>
</entry>
<entry>
<title>doc: Add user guide for device discovery</title>
<updated>2024-01-20T20:55:22Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-20T20:55:22Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=090e063a539f6ee6e62e65ada619787930c31eac'/>
<id>urn:sha1:090e063a539f6ee6e62e65ada619787930c31eac</id>
<content type='text'>
</content>
</entry>
<entry>
<title>doc: Add OpenRC service configuration</title>
<updated>2024-01-20T20:25:20Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-20T14:20:02Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=ce3aad39474789faa7e3c8fd49a6f401c8fa3c01'/>
<id>urn:sha1:ce3aad39474789faa7e3c8fd49a6f401c8fa3c01</id>
<content type='text'>
This makes sure the audio-receiving software `ffplay` runs all the time.
</content>
</entry>
<entry>
<title>doc: Split configuration section into subsections</title>
<updated>2024-01-20T14:12:42Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-20T14:12:42Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=e7f055deddf551c32de631c4579c53589ea14948'/>
<id>urn:sha1:e7f055deddf551c32de631c4579c53589ea14948</id>
<content type='text'>
</content>
</entry>
<entry>
<title>doc: Add lldpd configuration</title>
<updated>2024-01-20T11:05:15Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-19T15:33:22Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=75a661f088ff48b87c67af4ed14d8dc162e3bb93'/>
<id>urn:sha1:75a661f088ff48b87c67af4ed14d8dc162e3bb93</id>
<content type='text'>
This makes a soundbox device discoverable via the Link Layer Discovery
Protocol (LLDP). That way a client application can lookup the available
soundbox devices inside the network to display playback options.
</content>
</entry>
<entry>
<title>doc: Always use MP3 as audio codec</title>
<updated>2024-01-14T19:50:59Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-14T19:50:59Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=36341f1e9856e17ad00e3741bb5bc1224aadc225'/>
<id>urn:sha1:36341f1e9856e17ad00e3741bb5bc1224aadc225</id>
<content type='text'>
While transcoding to a lossy formate like MP3 is not recommended [1]
forquality reasons it has the advantage that alway UPD / Matroska / MP3
is used for soundbox. That way the stream can be stopped and started at
any time without re-launching ffplay on the soundbox device. This could
make the SSH connection to the soundbox not longer needed.

[1]: https://trac.ffmpeg.org/wiki/Encode/HighQualityAudio#WhenshouldItranscodeaudio
</content>
</entry>
<entry>
<title>doc: Simplify streaming commands</title>
<updated>2024-01-14T19:48:43Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-14T19:48:43Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=6a05f26e4a7726fa719a55b5918b0262b27c02ba'/>
<id>urn:sha1:6a05f26e4a7726fa719a55b5918b0262b27c02ba</id>
<content type='text'>
</content>
</entry>
<entry>
<title>doc: Switch from RTP to Matroska and UDP</title>
<updated>2024-01-14T19:27:05Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-14T19:27:05Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=8a47aec3581f0272677ffbbbc9d488c50fbd973d'/>
<id>urn:sha1:8a47aec3581f0272677ffbbbc9d488c50fbd973d</id>
<content type='text'>
The Matroska format has to advantage that a stream can be stopped and
the restarted at any time without executing new commands on the soundbox
device.

Since Matroska and RTP have similar / redundant features [1] the
transport protocol is switched to plain UDP.

[1]: https://en.wikipedia.org/wiki/Comparison_of_video_container_formats#cite_note-22
</content>
</entry>
<entry>
<title>doc: Fix duplicated period</title>
<updated>2024-01-14T14:46:35Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-14T14:46:35Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=e94b3cc341a4a641ca41cc95f3b8ae907654e34a'/>
<id>urn:sha1:e94b3cc341a4a641ca41cc95f3b8ae907654e34a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>doc: Switch to multicast for streaming</title>
<updated>2024-01-14T13:14:45Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-14T13:14:45Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=a7dc6b07781cb7901e9bbcffbe0d5ffa1c690c73'/>
<id>urn:sha1:a7dc6b07781cb7901e9bbcffbe0d5ffa1c690c73</id>
<content type='text'>
This allows to stream to multiple devices at the same time. Nevertheless
it still works for a point to point stream.
</content>
</entry>
<entry>
<title>doc: Explain how to enable default RPi audio</title>
<updated>2024-01-14T13:10:35Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-14T13:10:35Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=afe7b5fb9921dd990719e5823a7fd30553d3ed23'/>
<id>urn:sha1:afe7b5fb9921dd990719e5823a7fd30553d3ed23</id>
<content type='text'>
The soundbox software should be portable to other Raspberry Pis without
the HiFiBerry DAC too.
</content>
</entry>
<entry>
<title>doc: Unify replacable parts of streaming command</title>
<updated>2024-01-14T11:22:51Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-14T11:22:51Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=41c73098b35dd820d22b557363fcd1aaed6133ae'/>
<id>urn:sha1:41c73098b35dd820d22b557363fcd1aaed6133ae</id>
<content type='text'>
</content>
</entry>
<entry>
<title>doc: Use native audio codec for streaming</title>
<updated>2024-01-14T11:04:06Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-14T11:04:06Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=0b0ca08ee8a4954c59ea2421f7e7dfcf1272baff'/>
<id>urn:sha1:0b0ca08ee8a4954c59ea2421f7e7dfcf1272baff</id>
<content type='text'>
The music streaming documentation used to enforce re-encoding via ffmpeg
to save bandwidth. This led to pretty poor audio quality. This is not
the purpose of soundbox. It is assumed that the user wants the highest
possible audio quality as default.
</content>
</entry>
<entry>
<title>doc: Add Alpine Linux config guide</title>
<updated>2024-01-14T10:44:18Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-06T09:50:09Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=27c2557c21cae2af48b9ba298149c6fe9cceb96f'/>
<id>urn:sha1:27c2557c21cae2af48b9ba298149c6fe9cceb96f</id>
<content type='text'>
Configuring the Alpine Linux operating system correctly for soundbox is
not trivial. Since it is very important it has to be documented in
detail.
</content>
</entry>
<entry>
<title>doc: Switch to tar-based installation</title>
<updated>2024-01-14T10:44:12Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-13T16:04:53Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=5f62cff66916db54f3be0c9fbc6198253ef7b6f0'/>
<id>urn:sha1:5f62cff66916db54f3be0c9fbc6198253ef7b6f0</id>
<content type='text'>
The tar-based installation is more difficult to explain but has the
advantage that the partition size is maximized from the beginning. This
is way easier than resizing the partition after the installation.
</content>
</entry>
<entry>
<title>doc: Add Alpine Linux installation instructions</title>
<updated>2024-01-12T21:02:02Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-05T21:14:44Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=bfbdcfad3489f943748fa584972d27c9255d365b'/>
<id>urn:sha1:bfbdcfad3489f943748fa584972d27c9255d365b</id>
<content type='text'>
This is currently the recommended OS installation for soundbox.
</content>
</entry>
</feed>
