[gelöst] Snapcast-FIFO als ALSA-Device

Sound, Digitalkameras, TV+Video und Spiele.
Antworten
debianoli
Beiträge: 4072
Registriert: 07.11.2007 13:58:49
Lizenz eigener Beiträge: MIT Lizenz

[gelöst] Snapcast-FIFO als ALSA-Device

Beitrag von debianoli » 11.12.2018 11:10:29

Hi,

ich habe mir Zuhause als Mehrräume-Lösung Snapcast installiert (Debiansnapserver und Debiansnapclient). Das funktioniert alles spitzenmäßig, bis auf eine Kleinigkeit: Ich würde gerne von meinem Laptop aus per Debianmixxx den Sound hin und wieder durch die Wohnung streamen. Allerdings kann mixxx nur ALSA und OSS und leider kein PulseAudio oder das direkte Streamen über /tmp/snapfifo. Sonst wäre das alles kein Problem.

Daher bräuchte ich ein "Pseudo"-Device, das im Ausgabe-Auswahl-Menü von mixxx erscheint. Dann könnte ich den Sound synchron in jeden Raum streamen. Auf der Projekt-Seite von Snapcast findet man dazu auch eine Anleitung, die bei meinem Laptop leider nicht funktioniert (Debian Sid), siehe hier: https://github.com/badaix/snapcast/blob ... up.md#alsa
Edit or create your Alsa config /etc/asound.conf like this:

Code: Alles auswählen

pcm.!default {
	type plug
	slave.pcm rate48000Hz
}

pcm.rate48000Hz {
	type rate
	slave {
		pcm writeFile # Direct to the plugin which will write to a file
		format S16_LE
		rate 48000
	}
}

pcm.writeFile {
	type file
	slave.pcm null
	file "/tmp/snapfifo"
	format "raw"
}
Ich habe eine /etc/asound.conf angelegt, aber damit hat es nicht geklappt. Habt ihr eine Idee, was da nicht funktioniert? Hängt das evtl. mit ALSA in SID zusammen?
Zuletzt geändert von debianoli am 22.12.2018 10:28:32, insgesamt 1-mal geändert.

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Snapcast-FIFO als ALSA-Device

Beitrag von smutbert » 11.12.2018 13:50:10

Das Problem ist also, dass diese virtuelle Soundkarte nicht in mixxx zur Wahl steht?

Diese Beispielkonfiguration in der Anleitung zielt darauf ab, dass dein neues default-Gerät definiert wird, das den Ton über den Umweg von 2 Plugins (zuerst plug in default und dann rate in rate48000Hz) in die fifo-Datei von snapcast geschrieben wird. Das default-Gerät taucht, wenn überhaupt, unter dem Namen default in der Auswahl auf.
(Hier ist mir unklar wieso auf das plug-Plugin noch ein rate-Plugin folgt, schließlich kann bereits das plug-Plugin in die gewünschte Samplerate konviertieren.)

Ist auf dem Laptop auch pulseaudio installiert? Das richtet sich nämlich auch als default in Alsa ein... deshalb verstehe ich den Hinweis, dass mixxx Pulseaudio nicht kann nicht so recht.
Jetzt habe ich den Hinweis auf der Seite von mixxx gefunden:
https://www.mixxx.org/manual/1.11/chapters/configuration.html hat geschrieben: Warning

On GNU/Linux do not use the pulse device with the ALSA Audio API. This is an emulation layer for ALSA provided by PulseAudio and results in very poor performance. Make sure to run Mixxx using the pasuspender tool on GNU/Linux distributions that use PulseAudio.
(ich würde diese Warnung aber zumindest probeweise ignorieren - die Latenz ist doch im Zusammenspiel mit Snapcast sowieso schon beim Teufel?)


Ich hätte es eher so versucht

Code: Alles auswählen

pcm.snapcast {
	type plugin
	slave {
		pcm snapfifo
		channels 2
		format S16_LE
		rate 48000
	}
	hint {
		show on
		description "Snapcast Server"
	}
}

pcm.snapfifo {
	type file
	slave.pcm null
	file "/tmp/snapfifo"
	format "raw"
}
Hier habe ich erstens den Umweg über das rate-Plugin weggelassen und das Format im plug-Plugin definiert. Außerdem wird nichts als default-Gerät definiert sondern stattdessen mit hint angegeben, dass das Gerät angezeigt werden soll und auch eine Beschreibung hinterlegt. (Ich kenne mixxx nicht, aber bei KDEs Phonon ist das notwendig damit eine Soundkarte zur Auswahl steht.)

Bedenken musst du, dass du egal ob auf die Art wie es in der Snapcast-Anleitung beschrieben wird oder so wie ich es vorgeschlagen habe (wobei ich es nicht für unwahrscheinlich halte, dass sich da noch Fehler eingeschlichen haben) immer nur eine Anwendung auf den Snapcast-Server schreiben kann.


Sonst könnte ich mir zumindest theoretisch noch vorstellen, dass mixxx nur Soundkarten und keine "Pseudo"-Devices verwenden will. (Passt allerdings nicht dazu, dass sich mit Mixxx pulseaudio verwenden lässt, auch wenn davon abgeraten wird.)
Du könntest dann jedenfalls noch den Umweg über ein Loopbackdevice ausprobieren – das ist nur der letzte Ausweg, wenn es anders gar nicht hinzubekommen ist.

debianoli
Beiträge: 4072
Registriert: 07.11.2007 13:58:49
Lizenz eigener Beiträge: MIT Lizenz

Re: Snapcast-FIFO als ALSA-Device

Beitrag von debianoli » 11.12.2018 14:46:53

smutbert hat geschrieben: ↑ zum Beitrag ↑
11.12.2018 13:50:10
Ist auf dem Laptop auch pulseaudio installiert? Das richtet sich nämlich auch als default in Alsa ein... deshalb verstehe ich den Hinweis, dass mixxx Pulseaudio nicht kann nicht so recht.
Danke für den Hinweis, das werde ich als erstes testen, wenn ich zuhause bin. Denn ich wusste nicht, dass das "Default"-Device in ALSA bei Verwendung von Pulasaudio immer Pulseaudio ist.

Wobei im Snapcast-Manual bei der Verwendung von Pulseaudio die Anlage eines eigenen pipe-sink für Snapcast empfohlen wird. Das habe ich auch gemacht und dann erscheint zB bei Clementine in den Einstellungen Snapcast als Ausgabe. Funktioniert prächtig:

Code: Alles auswählen

pacmd load-module module-pipe-sink file=/tmp/snapfifo sink_name=Snapcast rate=48000
pacmd update-sink-proplist Snapcast device.description=Snapcast
Wenn ich Zuhause bin, teste ich deine Alsa-Lösung. Bei der sieht man dann wenigstens, welche Ausgabe man gerade wählt.
smutbert hat geschrieben: ↑ zum Beitrag ↑
11.12.2018 13:50:10
...die Latenz ist doch im Zusammenspiel mit Snapcast sowieso schon beim Teufel?
Denke auch. Aber das ist in dem Fall egal, da man mit snapcast in der ganzen Wohnung die gleiche Musik hören kann. Und mit snapdroid geht das auch auf jedem Android-Device. Finde ich richtig praktisch.

debianoli
Beiträge: 4072
Registriert: 07.11.2007 13:58:49
Lizenz eigener Beiträge: MIT Lizenz

Re: Snapcast-FIFO als ALSA-Device

Beitrag von debianoli » 12.12.2018 08:51:50

Ich habe das jetzt mit einer asound.conf getestet und es funktioniert nicht. Das Snapcast-Device erscheint zwar bei der Ausgabe von alsa-info, doch nicht bei aplay -L bzw im alsamixer.

Könnte es sein, dass das bei meiner Alsa-Version alles anders ist?

Code: Alles auswählen

dpkg -l|grep alsa
ii  alsa-utils                                     1.1.7-1                                  amd64      

debianoli
Beiträge: 4072
Registriert: 07.11.2007 13:58:49
Lizenz eigener Beiträge: MIT Lizenz

Re: Snapcast-FIFO als ALSA-Device

Beitrag von debianoli » 22.12.2018 10:28:14

OK, habe das mit mixxx und einem Snapcast-Server zum Laufen gebracht, mit der Pulse-Lösung von der Projekt-Seite:

Code: Alles auswählen

pacmd load-module module-pipe-sink file=/tmp/snapfifo sink_name=Snapcast rate=48000
pacmd update-sink-proplist Snapcast device.description=Snapcast
Dann wählt man im mixxx-Menü "pulse" als Ausgabe und stellt bei Pavucontrol den Ausgabe-Stream auf "snapcast" um. Funktioniert. Allerdings wird dann die Audio-Ausgabe am Laptop geblockt und man kann nicht mal mehr per Kopfhörer vorhören. Die Latenz ist ebenfalls recht hoch.

Allerdings ist das zu umständlich und unpraktisch für die paar Mal im Jahr, an denen ich Lust auf Sound per Mixxx habe. Ich löse das jetzt mit der Funktion "Liverübertragung" von mixxx. Dabei kann ich den Sound an einen Icecast-Server schicken und das dann im Netzwerk streamen. So hat man dann wenigstens die Möglichkeit, mit dem Kopfhörer in Musikstücke reinzuhören, ehe man sie zur Playlist hinzufügt.

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: [gelöst] Snapcast-FIFO als ALSA-Device

Beitrag von smutbert » 22.12.2018 14:00:45

Entschuldige, ich hab deine Antwort vom 12. Dezember übersehen.

Dass es in alsamixer nicht auftaucht ist vollkommen normal - dort werden ja nur Soundkarten und deren Lautstärkeregler angezeigt. Es lassen sich in Alsa allerdings in Software Regler hinzufügen, falls du einen eigenen Alsaregler für die Snapcast-Wiedergabe willst.
Was aplay -L alles anzeigt oder nicht anzeigt, habe ich bis jetzt noch nicht ganz durchschaut.

Ich hätte snapcast einfach einmal so getestet

Code: Alles auswählen

$ aplay -D snapcast pfad/zu/irgendeiner/Datei.wav
Wenn du also immer noch Interesse hast es mit Alsa zum Laufen zu bekommen...

debianoli
Beiträge: 4072
Registriert: 07.11.2007 13:58:49
Lizenz eigener Beiträge: MIT Lizenz

Re: [gelöst] Snapcast-FIFO als ALSA-Device

Beitrag von debianoli » 26.12.2018 09:41:12

@smutbert

Noch mal Danke für deine Bemühungen, doch auch beim Testen gibt es weiterhin Fehlermeldungen. Das lasse ich jetzt an diesem Rechner, da mir auch nicht klar ist, ob die Fehler etwas mit Sid zu tun haben könnten. Es funktioniert ja über den Umweg Icecast und das reicht mit.

Code: Alles auswählen

aplay -D snapcast test.wav 
ALSA lib dlmisc.c:287:(snd1_dlobj_cache_get) Cannot open shared library /usr/lib/x86_64-linux-gnu/alsa-lib/libasound_module_pcm_plugin.so ((null): /usr/lib/x86_64-linux-gnu/alsa-lib/libasound_module_pcm_plugin.so: Kann die Shared-Object-Datei nicht öffnen: Datei oder Verzeichnis nicht gefunden)
aplay: main:828: Fehler beim Öffnen des Gerätes: Kein passendes Gerät bzw. keine passende Adresse gefunden

Antworten