Spacesound: Difference between revisions

From NURDspace
No edit summary
No edit summary
 
(8 intermediate revisions by 3 users not shown)
Line 10: Line 10:
}}
}}


=== Info ===
Spacesound is a software/hardware infrastructure used to manage and play audio content in the space. It can be used to stream music, provide sound effects, or facilitate other audio-related tasks. Spacesound runs on an Intel NUC and is designed to be customizable, allowing for the integration of different audio sources and configurations to meet specific needs.
The NUC is responsible for running Snapcast, which manages all audio-related tasks for the space, including MPD, soundboard, and more. However, because Snapcast synchronizes all clients, there is an artificial delay, making it unsuitable for audio visualization such as LedFX. Consequently, Soundfx is utilized for these purposes.
Spacesound uses Pipewire as its underlying audio infrastructure, providing a First-In-First-Out (FIFO) output for Snapcast. Spacesound is configured to send all it's audio to this FIFO. Additionally, pipewire is used as the mixing interface for multiple audio programs to run simultaneously. This configuration allows Spacesound to provide a seamless and efficient audio management experience for the space. Spacesound is designed to run most of its audio software as a user, rather than as a global service (root). To make this process easier, an X11 session combined with X11vnc has been put in place, allowing for a more streamlined experience in automatically starting the various audio services. This configuration also enables the use of qpwgraph, which simplifies the process of configuring audio routing. Additionally, if necessary, plugins such as compressors or limiters can be added within the audio chain. Overall, this approach provides more flexibility and control over the audio management process.


=== Info ===
Spacesound provides a variety of notable services that make it a powerful and versatile audio management system. These services include:
 
* Snapcast: a multiroom client-server audio player, where all clients are time synchronized with the server to play perfectly synced audio. It's not a standalone player, but an extension that turns your existing audio player into a Sonos-like multiroom solution.
* MPD (Music Player Daemon): a flexible and customizable music player that supports a wide range of audio formats and can be controlled via various interfaces, including web and mobile.
* Spotify Connect (librespot): an integration with the popular music streaming service that enables users to control their Spotify playback through Spacesound.
* [[Soundboard]]: a feature that allows users to play various pre-recorded sounds, jingles, or effects through Spacesound, providing an interactive and immersive audio experience.
* Icecast Radio Broadcast: a service that enables users to stream audio content over the internet, allowing for the creation and distribution of live or pre-recorded audio broadcasts.


A raspberry Pi 4 running Snapcast. All audio related stuff for the space happens here, such as MPD, soundboard etc. However, due to the nature of Snapcast there is a artificial delay introduced to keep all the clients in-sync. As such, audio visualization such as LedFX are run on [[Soundfx]].
=== Technical information ===
== Specs ==
* NUC6I5SYH
*  Intel Core i5-6260U CPU @ 1.80GHz (Skylake)
* 8GB DDR4
* 128GB SSD


Under the hood, Snapcast provides a FIFO under <code>/tmp/snapfifo</code> where you can dump audio. Pulseaudio for example is configured to send audio to this fifo. We are running Pulseaudio under the hood, to provide an mixing interface for multiple audio programs to run at once.
=== Services ===
As most services run under the user nurds, to edit/start/stop/restart these services you need to use systemctl as <code>systemctl --user</code>


'''Note''':
The following services are suppose to be running:
* mpdtube.service (See: [[mpdtube]])
* mpd_plugin.service (MPD ghbot plugin)
* testhappy-alsa.service (Some flok thing?)
* mpd_icecast_update.service (Allows tthe title to be updated for the radio)
* spotify.service (Librespotify, for Spotify connect)
* soundboard.service (See [[soundboard]]


The hostname is spacesound.vm.nurd.space as spacesound used to be a vm running on [[Coherence]] but has been moved to hardware as stutters kept happening when running in an LXC.
=== Stutters? ===
Spacesound is a complicated system, and there are various services at play that might need to be tweaked to allow for a stutter-free experience. It can also depend on the snapcast client, the network or other issues.
== Snapcast ==
For snapcast, one can try to tweak some latency settings in the config located at <code>/etc/snapserver.conf</code>
To provide a low latency experience but a stutter-free experience both chunk_ms and buffer can be tweaked.


=== Running services ===
== Pipewire ==
For pipewire, one can try to tweak settings in <code>/etc/wireplumber/wireplumber.conf</code> the settings that can be adjusted are the settings for <code>libpipewire-module-rt</code>  see https://docs.pipewire.org/page_module_rt.html


* Icecast + Darkice (Accessible on the web)
== Radio Stream ==
* espeak-server (/home/nurds/scripts)
Due to issues with introduced when using pulseaudio together with snapcast and darkice, darkice has been switched to running in a docker container on docker.vm.nurd.space. It's a container that runs darkice + snapcast and pulseaudio. Two instances are running, one for 320Kbps mp3 and one for the lower quality stream.
* icecast-title (/home/nurds/scripts)
* [[Soundboard]]
* Web MPD Client (running on erratic in it's own LXC http:polyding.vm.nurd.space


=== Legacy ===
Spacesound was previously running on a Raspberry Pi 4, but due to unforeseen member issues, the Pi4 was moved to the ledticker. We attempted to run Spacesound on a Raspberry Pi 3B, but it lacked the necessary performance, resulting in terrible stutters. Consequently, we chose to use a NUC to run the Spacesound infrastructure. The hostname for Spacesound is spacesound.vm.nurd.space as initially Spacesound started as a VM/LXC running on [[Coherence]], but as stutters persisted, it was moved to hardware.  See also [[SlabPi]]


=== Todo ===  
=== Future===
* Get a better case for cooling
== Video streaming ==
With the increased processing power of Spacesound, the team is exploring the possibility of adding video streaming capabilities to the infrastructure. The plan is to use OBS (Open Broadcaster Software) in combination with NDIS to enable the streaming of videos. This setup would allow audio to be handled by Spacesound and pushed through Snapcast while the video is streamed to monitors throughout the space


* Document the web accessible mpd interface
== Bluetooth streaming ==
== Line input ==
== Studio to Spacesound==

Latest revision as of 15:41, 26 February 2023


Spacesound
Spacesound.jpg
Owner Space
Status Infra
Hostname spacesound.vm.nurd.space
Location rack
Tool No
Tool category

Spacesound

spacesound.jpg {{{InventoryOwner}}}Property "Tool Owner" (as page type) with input value "{{{InventoryOwner}}}" contains invalid characters or is incomplete and therefore can cause unexpected results during a query or annotation process. rack

Info

Spacesound is a software/hardware infrastructure used to manage and play audio content in the space. It can be used to stream music, provide sound effects, or facilitate other audio-related tasks. Spacesound runs on an Intel NUC and is designed to be customizable, allowing for the integration of different audio sources and configurations to meet specific needs.

The NUC is responsible for running Snapcast, which manages all audio-related tasks for the space, including MPD, soundboard, and more. However, because Snapcast synchronizes all clients, there is an artificial delay, making it unsuitable for audio visualization such as LedFX. Consequently, Soundfx is utilized for these purposes.

Spacesound uses Pipewire as its underlying audio infrastructure, providing a First-In-First-Out (FIFO) output for Snapcast. Spacesound is configured to send all it's audio to this FIFO. Additionally, pipewire is used as the mixing interface for multiple audio programs to run simultaneously. This configuration allows Spacesound to provide a seamless and efficient audio management experience for the space. Spacesound is designed to run most of its audio software as a user, rather than as a global service (root). To make this process easier, an X11 session combined with X11vnc has been put in place, allowing for a more streamlined experience in automatically starting the various audio services. This configuration also enables the use of qpwgraph, which simplifies the process of configuring audio routing. Additionally, if necessary, plugins such as compressors or limiters can be added within the audio chain. Overall, this approach provides more flexibility and control over the audio management process.

Spacesound provides a variety of notable services that make it a powerful and versatile audio management system. These services include:

  • Snapcast: a multiroom client-server audio player, where all clients are time synchronized with the server to play perfectly synced audio. It's not a standalone player, but an extension that turns your existing audio player into a Sonos-like multiroom solution.
  • MPD (Music Player Daemon): a flexible and customizable music player that supports a wide range of audio formats and can be controlled via various interfaces, including web and mobile.
  • Spotify Connect (librespot): an integration with the popular music streaming service that enables users to control their Spotify playback through Spacesound.
  • Soundboard: a feature that allows users to play various pre-recorded sounds, jingles, or effects through Spacesound, providing an interactive and immersive audio experience.
  • Icecast Radio Broadcast: a service that enables users to stream audio content over the internet, allowing for the creation and distribution of live or pre-recorded audio broadcasts.

Technical information

Specs

  • NUC6I5SYH
  • Intel Core i5-6260U CPU @ 1.80GHz (Skylake)
  • 8GB DDR4
  • 128GB SSD

Services

As most services run under the user nurds, to edit/start/stop/restart these services you need to use systemctl as systemctl --user

The following services are suppose to be running:

  • mpdtube.service (See: mpdtube)
  • mpd_plugin.service (MPD ghbot plugin)
  • testhappy-alsa.service (Some flok thing?)
  • mpd_icecast_update.service (Allows tthe title to be updated for the radio)
  • spotify.service (Librespotify, for Spotify connect)
  • soundboard.service (See soundboard

Stutters?

Spacesound is a complicated system, and there are various services at play that might need to be tweaked to allow for a stutter-free experience. It can also depend on the snapcast client, the network or other issues.

Snapcast

For snapcast, one can try to tweak some latency settings in the config located at /etc/snapserver.conf To provide a low latency experience but a stutter-free experience both chunk_ms and buffer can be tweaked.

Pipewire

For pipewire, one can try to tweak settings in /etc/wireplumber/wireplumber.conf the settings that can be adjusted are the settings for libpipewire-module-rt see https://docs.pipewire.org/page_module_rt.html

Radio Stream

Due to issues with introduced when using pulseaudio together with snapcast and darkice, darkice has been switched to running in a docker container on docker.vm.nurd.space. It's a container that runs darkice + snapcast and pulseaudio. Two instances are running, one for 320Kbps mp3 and one for the lower quality stream.

Legacy

Spacesound was previously running on a Raspberry Pi 4, but due to unforeseen member issues, the Pi4 was moved to the ledticker. We attempted to run Spacesound on a Raspberry Pi 3B, but it lacked the necessary performance, resulting in terrible stutters. Consequently, we chose to use a NUC to run the Spacesound infrastructure. The hostname for Spacesound is spacesound.vm.nurd.space as initially Spacesound started as a VM/LXC running on Coherence, but as stutters persisted, it was moved to hardware. See also SlabPi

Future

Video streaming

With the increased processing power of Spacesound, the team is exploring the possibility of adding video streaming capabilities to the infrastructure. The plan is to use OBS (Open Broadcaster Software) in combination with NDIS to enable the streaming of videos. This setup would allow audio to be handled by Spacesound and pushed through Snapcast while the video is streamed to monitors throughout the space

Bluetooth streaming

Line input

Studio to Spacesound