Editing Multiroom Audio

From Chaosdorf Wiki
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
Im Dorf gibt es aktuell ein rudimentäres Multiroom Audio System, aufgebaut auf Snapcast. Ich hatte noch nicht genug Zeit um alle In- & Outputs einzubauen, deshalb aktuell noch <sup>beta</sup>.
Snapcast ist nur für das Routing und die Synchronisation von Audio verantwortlich, der Input wird durch andere Systeme generiert (siehe [[Multiroom Audio#Musik rein|Musik rein]]).
{{Project
{{Project
|name=Multiroom Audio
|name=Multiroom Audio
Line 5: Line 9:
|location=Neues Dorf
|location=Neues Dorf
|image=5968845.png
|image=5968845.png
|status=obsolete
|status=beta
|people={{U|cyaniccerulean}}
|people={{U|cyaniccerulean}}
|source=https://github.com/badaix/snapcast
|source=https://github.com/badaix/snapcast
}}
}}
'''DEPRECATED'''
Im Dorf gibt es aktuell ein rudimentäres Multiroom Audio System, aufgebaut auf Snapcast. Ich hatte noch nicht genug Zeit um alle In- & Outputs einzubauen, deshalb aktuell noch <sup>beta</sup>.
Snapcast ist nur für das Routing und die Synchronisation von Audio verantwortlich, der Input wird durch andere Systeme generiert (siehe [[Multiroom Audio#Musik rein|Musik rein]]).


== Musik rein ==
== Musik rein ==


=== TCP ===
=== Generisch ===
Der Snapserver stellt 4 TCP-Ports und server.snapcast.chaosdorf.space zu Verfügung. An Port ''4951'', ''4952'', ''4953'' und ''4954'' (auch so im Webinterface als Stream benannt, siehe unten) kann jemensch PCM-Audiopakete (48kHz, 16 Bit, Stereo) schicken.
Der Snapserver stellt 4 TCP-Ports und server.snapcast.chaosdorf.space zu Verfügung. An Port ''4951'', ''4952'', ''4953'' und ''4954'' (auch so im Webinterface als Stream benannt, siehe unten) kann jemensch PCM-Audiopakete (48kHz, 16 Bit, Stereo) schicken.


Line 27: Line 24:
=== Web ===
=== Web ===
Unter mopidy.chaosdorf.space findet sich ein Webinterface, dass es möglich macht Online-Radio und den Sound von YouTube Videos direkt an Snapcast zu streamen, ohne das ein Gerät im Hintergrund weiterlaufen muss.
Unter mopidy.chaosdorf.space findet sich ein Webinterface, dass es möglich macht Online-Radio und den Sound von YouTube Videos direkt an Snapcast zu streamen, ohne das ein Gerät im Hintergrund weiterlaufen muss.
=== Bluetooth ===
Im ELab findet sich ein Bluetooth-Receiver ("Snapcast BT ELab"). Die PIN ist 0000, sobald Musik abgespielt wird, ist sie im Snapcast-Web-Interface unter "elab-bt" verfügbar und kann im ganzen Dorf abgespielt werden.


=== Linux ===
=== Linux ===
Linux kann Audio direkt per Loopback Souddevice an den Snapserver schicken (siehe Abschnitt Generisch). Das klappt z.B. mit ffmpeg oder pw-cat. Mehr Infos folgen.
Linux kann Audio direkt per Loopback Souddevice an den Snapserver schicken (siehe Abschnitt Generisch). Das klappt z.B. mit ffmpeg oder pw-cat. Mehr Infos folgen.


==== ''pw-cat'' ====
Windows
Mit dem CLI-Tool ''pw-cat'' lässt sich ein simpler PipeWire-Client erzeugen, der ein Signal von PipeWire empfangen und dann über ''stdout'' (mit optionalem Resampling) an den ''stdin'' eines beliebigen Prozesses weitergeben kann. In Kombination mit ''netcat'' (siehe "Generisch") lässt sich dann ein einfacher TCP-Streamer bauen.
 
Der einfachste Befehl, um das zu implementieren wäre wohl folgender:
pw-cat -r - | nc server.snapcast.chaosdorf.space $zielport
 
Hierbei ganz praktisch ist, dass die Defaults von ''pw-cat'' (Samplerate, Bittiefe, Channelcount) genau den Werten entsprechen, die der ''snapserver'' auf seinen Sockets erwartet, sodass da nichts extra konfiguriert werden muss. Der ''$zielport'' ist aus der Liste von Ports im Abschnitt "Generisch" zu wählen.
 
Eine Tücke an dieser Lösung ist, dass sich ''pw-cat'' per Default an das Mikrofon als Eingabestream koppelt. Hier muss dann z.B. mit einem Patchbay wie [https://gitlab.freedesktop.org/pipewire/helvum helvum] nachgeholfen werden, um die gewünschte Soundquelle an den ''pw-cat''-Prozess anzubinden.
 
Alternativ kann auch ''pw-cat --target $target'' verwendet werden, um direkt beim Start die richtige Quelle zu binden. Folgender Befehl sollte z.B. Spotify auf Stream ''4591'' abspielen:
pw-cat -r --target "spotify" - | nc server.snapcast.chaosdorf.space 4591
 
=== Windows ===


=== macOS, iOS ===
=== macOS, iOS ===
Line 71: Line 52:
                                                                     +------------+
                                                                     +------------+
</syntaxhighlight>Die beiden Raspberry Pis für das E-Lab und die Lounge sind unter elab.local und lounge.local per mDNS erreichbar. SSH ist aktiviert (snapcast:snapcast) und die SD-Karte ist read-only, die Pis können also ohne Probleme vom Strom getrennt werden.
</syntaxhighlight>Die beiden Raspberry Pis für das E-Lab und die Lounge sind unter elab.local und lounge.local per mDNS erreichbar. SSH ist aktiviert (snapcast:snapcast) und die SD-Karte ist read-only, die Pis können also ohne Probleme vom Strom getrennt werden.
* Pi ELab (Snapcast Client), USB-Lautsprecher, "elab", elab.local
* Pi ELab (Bluetooth Empfänger), elab-bt.local
* Pi Lounge (Snapcast Client), am Audio-Board, lounge.local


Der Server ist im Kubernetes-Cluster deployed, und die Konfiguration ist im Repo [https://github.com/chaosdorf/flux/tree/main/apps/snapcast-server chaosdorf/flux] zu finden. Das Helm-Chart ist liegt in [https://github.com/lukasklinger/snapcast-server-k8s lukasklinger/snapcast-server-k8s].
Der Server ist im Kubernetes-Cluster deployed, und die Konfiguration ist im Repo [https://github.com/chaosdorf/flux/tree/main/apps/snapcast-server chaosdorf/flux] zu finden. Das Helm-Chart ist liegt in [https://github.com/lukasklinger/snapcast-server-k8s lukasklinger/snapcast-server-k8s].
Please note that all contributions to Chaosdorf Wiki are considered to be released under the Attribution 3.0 Unported (see Chaosdorf Wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!
Cancel Editing help (opens in new window)