<feed xmlns='http://www.w3.org/2005/Atom'>
<title>soundbox, branch alsa-loop</title>
<subtitle>Device to connect classic audio systems to the network</subtitle>
<id>https://cgit.xengineering.eu/soundbox/atom?h=alsa-loop</id>
<link rel='self' href='https://cgit.xengineering.eu/soundbox/atom?h=alsa-loop'/>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/'/>
<updated>2024-01-24T19:29:09Z</updated>
<entry>
<title>WIP: doc: Explain ALSA loop device use case</title>
<updated>2024-01-24T19:29:09Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-24T17:22:26Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=26444dbc9195c8eec0e6caa360d67d5c14d129c9'/>
<id>urn:sha1:26444dbc9195c8eec0e6caa360d67d5c14d129c9</id>
<content type='text'>
</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>Add versioned documentation file in artifacts dir</title>
<updated>2024-01-14T14:59:55Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-14T14:59:55Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=929e1052d822f8b18f9545375e4f07b9a5c7121a'/>
<id>urn:sha1:929e1052d822f8b18f9545375e4f07b9a5c7121a</id>
<content type='text'>
The full soundbox-&lt;version&gt;- prefix was only used for the artifact tar
archive name so far. This has the advantage that the file names inside
that archive are shorter like 'documentation.pdf'.

But sometimes it is useful to pass only the documentation around as a
PDF file because it is easier for people to open it compared to a tar
file.

For this purpose a second artifact installation for the documentation
PDF is added including the soundbox-&lt;version&gt;- prefix.
</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>
<entry>
<title>mech: Rework front panel</title>
<updated>2024-01-10T20:07:42Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-10T18:46:10Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=cad2b003b8c936237a909d4076beb0bfd6607b00'/>
<id>urn:sha1:cad2b003b8c936237a909d4076beb0bfd6607b00</id>
<content type='text'>
The positions of the connectors had to be adapted to the new PCB case
dimensions.

Furthermore the micro USB port which is built in to supply the device
with power is now the only visible micro USB port from the outside. The
other one is unused and could lead to confusion. User might plug in the
power cable into the wrong port.

Hiding this misleading USB port is an elegant way to avoid this problem.
Developers can still open the device to make use of that port if
required.
</content>
</entry>
<entry>
<title>mech: Adapt thickness and spacing</title>
<updated>2024-01-09T19:14:31Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-09T19:14:31Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=ca969ac44ea1c2194193eb444c4e6e8ca222c8bf'/>
<id>urn:sha1:ca969ac44ea1c2194193eb444c4e6e8ca222c8bf</id>
<content type='text'>
The front panel has to be very close and thin so that USB and HDMI
cables can still be connected when only the ports are cut out of the
panel.
</content>
</entry>
<entry>
<title>mech: pcb_case: Add spacers</title>
<updated>2024-01-09T18:59:04Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-09T18:59:04Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=c9fb2c1531fd1430fb2034fa3edbb41f7b69b385'/>
<id>urn:sha1:c9fb2c1531fd1430fb2034fa3edbb41f7b69b385</id>
<content type='text'>
Since a proper norm-based distance bolt was not found printing spacers
is the easiest way to make the case producable independent of part
availability.
</content>
</entry>
<entry>
<title>mech: pcb_case: Align connector_z and bolt length</title>
<updated>2024-01-09T18:44:42Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-09T18:42:22Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=ca53dd20c9f45809888b3a0511c223847e97988a'/>
<id>urn:sha1:ca53dd20c9f45809888b3a0511c223847e97988a</id>
<content type='text'>
This makes sure that the bolts inside the connectors align with them.
Thus the bolts do not stick inside the case which might lead to PCB
collisions.
</content>
</entry>
<entry>
<title>mech: pcb_case: Fix height calculation</title>
<updated>2024-01-09T18:26:25Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-07T17:19:40Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=78447efe6110cd4cfd6a48fd05b1cd8139f02894'/>
<id>urn:sha1:78447efe6110cd4cfd6a48fd05b1cd8139f02894</id>
<content type='text'>
The height should take into account that the shell is two instead of one
times the thickness high. This is relevant for the vertical spacing.
</content>
</entry>
<entry>
<title>doc: Change paragraph distance</title>
<updated>2024-01-06T19:50:43Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-06T19:49:03Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=e1acff9b0583e19dec4c27061c4bb4d16fe79d1b'/>
<id>urn:sha1:e1acff9b0583e19dec4c27061c4bb4d16fe79d1b</id>
<content type='text'>
There used to be no extra space between paragraphs which in combination
with no indentation was not useful.
</content>
</entry>
<entry>
<title>doc: Fix missing `-re` flag for ffmpeg streaming</title>
<updated>2024-01-05T21:03:23Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-05T21:03:23Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=3b7c474bebcdc79ec354859366673b441c8f90e1'/>
<id>urn:sha1:3b7c474bebcdc79ec354859366673b441c8f90e1</id>
<content type='text'>
This flag makes sure the file is streamed in native frame rate and not
e.g. way faster. This is the expected behaviour.
</content>
</entry>
<entry>
<title>doc: Switch from UDP port 1234 to UDP port 5316</title>
<updated>2024-01-05T19:58:34Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-05T19:58:34Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=cad96e8944a86df30376564dca15661ddef590a4'/>
<id>urn:sha1:cad96e8944a86df30376564dca15661ddef590a4</id>
<content type='text'>
This port should be used in the future as soundbox standard port.
</content>
</entry>
<entry>
<title>doc: Add example for FFMpeg MP3 streaming</title>
<updated>2024-01-05T11:03:13Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-05T11:03:13Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=90286663aa293deeb91bed3ae2319bc77a461467'/>
<id>urn:sha1:90286663aa293deeb91bed3ae2319bc77a461467</id>
<content type='text'>
This allows more testing than only streaming sine waves.
</content>
</entry>
<entry>
<title>doc: Add section 'Playing audio'</title>
<updated>2024-01-05T10:48:23Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-05T10:48:23Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=f2b47e8030fdfcd8c794d1e27ab1b35c7e87310c'/>
<id>urn:sha1:f2b47e8030fdfcd8c794d1e27ab1b35c7e87310c</id>
<content type='text'>
This documents a basic FFmpeg streaming example so that soundbox devices
can be tested.
</content>
</entry>
<entry>
<title>doc: Write section 'Versioning'</title>
<updated>2024-01-05T09:52:04Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-04T21:05:39Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=ce83411b44ffce77e57fb1b834c6008f4222a3fe'/>
<id>urn:sha1:ce83411b44ffce77e57fb1b834c6008f4222a3fe</id>
<content type='text'>
This section is important to communicate how to interpret version
numbers in the context of this device repository.
</content>
</entry>
<entry>
<title>doc: Build twice with LaTeX</title>
<updated>2024-01-05T09:07:04Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-04T20:44:56Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/soundbox/commit/?id=15285f111eae401663a459344e99e4e351ea3207'/>
<id>urn:sha1:15285f111eae401663a459344e99e4e351ea3207</id>
<content type='text'>
This is required to build the table of contents and similar parts of the
document correctly.
</content>
</entry>
</feed>
