Erste Erfahrungen mit Pipewire
Written on (last modified on )
DISCLAIMER: In diesem Post befinden sich einige Links. Viele davon führen auf eine Videoplattform, die einem großen bösen Konzern gehört.
Pipewire... Das ist doch dieser Versuch mal wieder ein neues Soundsystem für Linux zu entwickeln. Hat irgendwie mit Wayland und flatpak zu tun. Neumodischer Unsinn braucht kein Mensch.
-- Der Bach (23.12.2021)
Wenn man obiges Zitat meiner Gedanken liest, fragt man sich sicher wie es dazu kommen konnte, dass ich mir Pipewire auf meinem Hauptsystem installiert habe.
Nun, das ist eine längere Geschichte.
Um diese zu Verstehen, muss man sich erst einmal angucken wie mein Audio-Setup bisher aussah: Viele Jahre habe ich ein günstiges 2.1 Soundsystem von irgendeinem Hersteller verwendet. Über die Jahre habe ich immer mal wieder andere Boxen verwendet und hatte einen kleinen Mixer dazwischen, um zwischen PC und Mediacenter umzuschalten.
Das Mediacenter war einst ein Apple TV der ersten Generation (als dit im Prinzip noch ein Mac mini war) mit Linux und XBMC drauf, an einem uralten Röhrenfernseher1. Später (heißt so vor π * Daumen 8 Jahren) wich das Ganze dann einem Raspberry PI und einem Beamer.
Der billige "DJ"-Mixer den ich verwendet habe, hat über die Jahre unter meinem ständigen Gequalme, meiner Unordentlichkeit und meiner Putzphobie stark gelitten. Außerdem waren Beamer und PC räumlich einige Meter voneinander entfernt, weshalb durch meine winzige 1-Zimmer-Wohnung lange Kabel verliefen (nicht, dass das jetzt anders wäre).
Vor etwa 5 Jahren erzählte ich einem Bekannten von meiner "Heimkino"-Anlage, also meinem Beamer und der "Leinwand" (weißes Rollo von IKEA. Sehr zu empfehlen!) und dieser schenkte mir völlig überraschend einfach so ein 5.1 Soundsystem, mit der Aussage, dass dieses bei ihm noch im Keller stand und Staub ansammelte.
Völlig aus dem Häusschen schleppte ich die Boxen, den Subwoofer und die ganzen Kabel durch die halbe Stadt und machte mich daran es aufzubauen. Ein kleiner Tipp an alle die darüber nachdenken sich ein 5.1-System zum Filme gucken zuzulegen: Vorsicht! Wenn man sowas erstmal hat, will man nie wieder zurück!
Seit diesem Tag, hatte ich dann immer zwei Soundsysteme am laufen. Einmal das 5.1-System am Mediacenter und das alte 2.1er am Laptop (ja mein PC ist irgendwann einem Laptop gewichen... Erst einem X200, der dann letztes Jahr durch ein X220 ersetzt wurde. Ersteren habe ich aber immernoch. Völlig unverwüstliches Teil: total verbogenes Gehäuse, kaum noch Tasten, Hälfte des Innenlebens fehlt, aber läuft immernoch super).
Irgendwann kam ich daher mal auf die Idee, das Ganze zu vereinfachen: Warum sollen hier immer 2 Soundsysteme Strom verschwenden?2 Warum nicht einfach den Sound übers Netzwerk verschicken? Dachte sich der junge Bach und kämpfte mehrere Wochen mit pulseaudio und der Dokumentation (die damals noch nicht so doll war). Nach vielen Fehlversuchen, gedebugge etc. pp. war es dann endlich geschafft: Der Sound von meinem Laptop wurde von pulseaudio durch das Netzwerk an meinen Raspberry Pi am anderen Ende der Wohnung verschickt und von diesem über die Lautsprecher ausgegeben. :O
Hier eine kleine Skizze des Setups:
Laptop MediaCenter Soundsystem ____ _______ | | (LAN) (Kabel) | o | |____| .............. PI ------------ | | \ \ | ( ) | \____\ |_____|
(Das ist natürlich eine sehr stark vereinfachte Darstellung)8
Der ein oder andere wird sich sicher fragen, was das Ganze jetzt mit Pipewire zu tun hat. Ach was schreibe ich da. Das hier ließt maximal noch ein Mensch.
Wie dem geneigten Leser sicherlich bewusst ist, verbringe ich viel zu viel meiner Zeit vor einem oder mehreren (also eigentlich fast immer mehreren) Bildschirmen. Viel zu viel dieser Zeit gucke ich mir irgendwelchen Unsinn auf YouTube an. Ich habe in der Vergangenheit schon immer mal wieder versucht Alternativen wie invidious zu benutzen, damit Google nicht all meine wirren Ideen und Gedanken mitbekommt, aber der YouTube-Algorithmus ist einfach zu gut darin, mir Sachen zu präsentieren, die den Anschein haben, als ob ich sie vielleicht interessant finden könnte.
Immer mal wieder gucke ich Videos von verschiedenen Musikern, daher ist es wenig verwunderlich, dass Big Y mir immer mal wieder interessante Sachen vorschlägt die mit Musik zu tun haben. So ist es wenig verwunderlich, dass ich irgendwann eine Menge Videos von LOOK MUM NO COMPUTER gesehen habe (irgendwie schon ein wenig ironisch bei meiner eindeutigen langjährigen Computersucht).
Über einige Tage/Wochen/wahrscheinlich noch länger bin ich in das Rabbithole SYNTHESIZER gefallen und habe angefangen mich mit VCVRack auseinanderzusetzen. Wie so oft, habe ich mir auch noch alle mögliche andere Software installiert wie QSynth, LMMS, ardour etc. pp. Ich war mal wieder auf dem besten Wege meine Festplatte mit Programmen vollzuschmeißen, die ich nicht bedienen kann und wahrscheinlich nie bedienen werde.
Das Thema Musik machen am PC hat mich schon öfter gepackt. Viele der Tools hatte ich nicht zum ersten mal installiert. Ich spielte also wieder einmal mit einigen Musikprogrammen rum und ließ meinen Computer schreckliche Tonfolgen erzeugen. Es stellte sich mal wieder raus, dass mir etwas sehr wichtiges zum Musik machen fehlt: musikalisches TALENT!
Ja, ja, ich weiß kann man alles lernen und eigentlich ist keiner musikalisch geboren, jeder muss sich da durchkämpfen und das alles erlernen. Manchen fällt es leichter und mir schwer. Demotiviert, wie so oft, wenn ich merke, dass 24 Jahre lang immer mal wieder auf ner Gitarre rumschrammeln, wenig geholfen haben mein Verständnis für Musik zu erweitern, saß ich abends vor dem PC und musste an ein Video denken, dass ich mal kurz überflogen habe: Learn music theory in half an hour.
Ich kramte in meinen viel zu vielen Elektronikkisten und entstaubte mein olles Korg Nanokey (1. Generation, mit den schrecklichen Laptoptastatur-ähnlichen Tasten), stöpselte es an meinem Laptop und suchte erstmal nach der besten Möglichkeit damit Sound zu machen. Nicht so einfach, wenn man pulseaudio benutzen will um den Sound übers Netzwerk zu verschicken. Aber nach einiger Recherche im ArchWiki sah ich, dass man fluidsynth auch mit pulseaudio verwenden kann.
Anstatt mir o.g. Lehrvideo anzugucken, kam mir beim Anblick der Klaviatur der Gedanke, dass es doch echt genial wäre, wenn ich mal endlich was auf einem Keyboard spielen könnte. Zumindest mal so ein paar Akkorde oder so. Also suchte ich mir ein "7 Days To Learning Piano (Beginner Lesson)"-Video und machte mich an die Arbeit.
Schon in den ersten Momenten, die ich meine Finger langsam, einen nach dem anderen, auf die Tasten meines MIDI-Keybaords legte wurden mir mehrere Dinge glasklar: 1. die Tasten am Korg NanoKey sind absolut beschissen und viel zu klein und 2. sind die 2 Oktaven die das Teil hat zu wenig um irgendwas mit 2 Händen zu spielen.
Was macht man, wenn man mit seinen derzeitigen Besitztümern unzufrieden ist? Jawoll, ab auf ebay kleinanzeigen und nach Keyboards geguckt. Und wat seh ick da: direkt in meiner Straße will jemand seins loswerden. Das muss ein Zeichen von Gott Bach sein.
Einige Tage später hielt ich das gute Stück in den Händen: ein M-Audio Keystation. Es war wie Weihnachten (naja war ein paar Wochen vor Weihnachten). (Ich habe das Ganze hier mal ein wenig abgekürzt, eigentlich hätte ich hier auch gut schreiben können, wie ich das Teil durch einen schrecklichen Dezember Regen von einem Ende der Straße bis zum anderen schleppen musste, aber das habe ich dir netterweise erspart.)
Nachdem ich das gute Stücke gründlich entstaubt und gereinigt hatte, schloß ich es an meinen HighEnd Laptop (der steht auf der höher gelegenen Seite meines Schreibtischs) an, startete fluidsynth, drückte eine Taste und...
fast eine Sekunde später kam der Ton aus meinen Lautsprechern.3
Crap.
Ick bin zwar auch nicht der Schnellste, aber mit so einer Verzögerung lässt es sich schlecht spielen.
Hmm. Ok. Wat machen wir'n da?
Wie du, geneigter Leser, sicherlich weißt, ist JACK das Audiotoolkit der Wahl, wenn man guten latenzarmen Sound unter Linux haben will. Leider war dies für mich keine Lösung: 1. habe ich keine Idee wo die tausend Kabel für mein 2.1er System rumliegen. Die Boxen stehen zwar noch auf meinen Regalen und der Subwoofer an der Heizung (man bin ich schlecht im Sachen wegräumen), aber ohne Kabel bringt dit nüscht und 2. kann Firefox nicht mit JACK4. Gibt glaube ich auch Möglichkeiten JACK übers Netzwerk zu betreiben, allerdings habe ich keine Lust irgendwas an meinem MediaCenter zu verändern. Ick weiß noch was für eine Qual es war, dass so einzurichten, dass ich Musik vom Teflon per Bluetooth darüber abspielen kann.
Nächst beste Idee: Kopfhörer auf, per Bluetooth an Laptop ran (keine Ahnung wo das Kabel liegt) und auf die Tasten gedrückt. Und siehe da: es funktioniert. Die Latenz ist minimal! Ich kann spielen! Also, nee nicht wirklich, das muss ich noch lernen. Aber das kann ich jetzt!
Ich habe dann anschließend wirklich einige Tage gelernt :O Unbelievable, I know. Aber darum geht es in diesem Artikel nicht.
Wie gesagt, habe ich mich auch mal wieder ein wenig mit LMMS beschäftig und auch auf YT ein paar Videos hierzu angeguckt und stieß irgendwann auf den Producer unfa. Auf Grund seiner Mähne, dachte ich erst, dass dit n Metaler sein muss, aber scheinbar ist er mehr auf dem Elektro-Trip. Na egal, er ist n Nerd und nutzt nur Linux und FOSS zum Musikmachen.
Dank ihm habe ich mich auch mal wieder mit ardour beschäftigt. Das kann zwar theoretisch auch mit pulseaudio, aber irgendwie wirkte das ganze nicht sehr solide. Außerdem würde ich auch gerne andere Sachen wie zynaddsubfx (bzw. syn-fusion) und andere tolle Audio-Tools verwenden. Die meisten wollen allerdings nur mit JACK reden.
Ich machte mich daran mein System wieder für low-latency JACK pro-audio vorzubereiten. Doch nach einiger Zeit merkte ich, dass ich echt keine Lust habe etwas an meinem momentanen Setup zu ändern.
In einem seiner Videos hat unfa pipewire ausprobiert. Als ich den Titel sah, war ich erstmal skeptisch und meidete Das Video einige Zeit. Pipewire ist/war für mich so negativ besetzt wie systemd, wayland und flatpak. Aber an ersteres aus der Liste habe ich mich inzwischen gewöhnt (auch wenn es immer noch viel zu viel tut und vieles davon nicht gut). Nach kurzen Anfangsschwierigkeiten (RTFM dude) war er positiv überrascht, wie simpel das doch alles ist und was es alles kann. Vor allem, dass es nach einem Neustart ziemlich Plug&Play war und alle Audiogeräte auf einmal in "JACK" (dank pipewire-jack-dropin
) verfügbar waren.
Fasziniert davon wie einfach zu benutzen, dass Ganze scheint, habe ich mich daraufhin spontan entschlossen es auch einfach mal auszuprobieren5. Nach der Installation hatte ich sofort Sound über die interne Soundkarte, über Bluetooth, über USB und über Klinkenkabel. Nice! Und ich kann all diese Geräte über pulse, als auch JACK ansprechen (soll heißen, die Applikationen denken, sie nutzen pulseaudio bzw JACK, aber reden eigentlich mit pipewire). Sogar gleichzeitig. Wow!
Fehlt nur noch eine Sache: Soundausgabe über mein 5.1-Soundsystem.
Eine kurze Recherche im Internet führte mich zum Pulseaudio Artikel im Pipewire Wiki. Im unteren Bereich geht es um Netzwerk-Support und siehe da: Pipewire kann angeblich fast alles was pulseaudio auch kann. Also gleich mal das module-zeroconf-discover
Modul geladen und siehe da: ich kann die Soundkarten meines Mediacenters sehen. Aus irgendeinem Grund doppelt, aber das sollte ja kein Problem sein.
Was allerdings ein Problem ist, wenn ich versuche über mein Mediacenter Sound auszugeben, höre ich nichts. Pavucontrol zeigt die Level an, alles sieht gut aus, aber weder ich noch meine Nachbarn hören etwas aus meinem Soundsystem kommen. Um ehrlich zu sein habe ich keine Ahnung wo genau das Problem ist und da es 2 Uhr morgens an Heiligabend war, hatte ich auch wenig Lust das ganze zu debuggen. Die Devise lautete: schnell eine Lösung finden oder wieder zurück zu pulseaudio6.
Was tun, wenn das fancy zeroconf-Gedöns nicht funktioniert? Selber machen. Also einfach mal pactl load-module module-tunnel-sink server=tcp:bender
in die Konsole gehauen und BOOM. Nicht nur ich, sondern auch die halbe Straße konnte hören, dass ich Erfolg hatte. An dieser Stelle möchte ich mal wieder bei meinen Nachbarn für die nächtliche Ruhestörung entschuldigen. Ich weiß, kommt leider öfter vor. Eigentlich jeden Morgen, wenn mein Teflon versucht mich zu wecken, in dem es auf fast voller Lautstärke geile Mucke über mein Soundsystem ausspuckt.
Nach kurzer Lautstärkenanpassung (way, way down) testete ich das Jack-Dropin und was soll ich sagen? Es funktioniert. Ganz einfach, ohne Probleme. Na gut nicht ganz ohne:
- wenn ich ardour laufen habe und pipewire neustarte bekommt ersteres nicht mit, dass der "jack"-Server weg war und der Sound geht nicht mehr und beim Versuch die Verbindung neu aufzubauen friert es ein und muss hart gekillt werden (also bloß nicht vergessen zu speichern)
- qjackctl, catia und carla machen immer mal wieder mucken (von gar nicht erst starten, bis einfrieren)
Aber grundlegend funktioniert alles. Die Übersicht in der Patchbay ist ein wenig unordentlich, wenn man so viele reale und virtuelle Sounddevices hat wie ich, aber so ist das halt.
Fazit
Insgesamt bin ich sehr positiv überrascht, wie einfach und problemarm das Ganze funktioniert. Werde das jetzt erstmal so beibehalten und gucken, was für Probleme sich ergeben und wie ich diese umschiffen kann.
Es wäre auch schön rauszufinden, warum die per zeroconf gefundenen Sinks keinen Sound ausgeben, aber solange ich überhaupt Sound habe, ist das kein wirkliches Problem.
-
Für die jüngeren Generationen, die diesen Blog wahrscheinlich nicht lesen: Röhrenfernseher waren groß. Also nicht von der Auflösung und Bildschirmfläche, sondern vom Volumen des Gerätes. Da war hinter der Mattscheibe (heute würde man Display sagen) noch ein riesiger Apparatus, in dem mit Hochspannung Elektronen auf die Mattscheibe geschossen wurden. Echt abgefahrene Technik. Kann man sich heute kaum noch vorstellen. ↩
-
Tzzz. Also wenn du mir mit Stromverschwendung anfängst, sollten wir mal über deine 30-Jahre alte Waschmaschine und deinen 20 Jahre alten Rechner reden, den du gerne als Heizung verwendest. ↩
-
Das wär natürlich auch mit dem Korg NanoKey so, aber das hatte ich bis dahin vor allem mit Kopfhörern verwendet, weil dat mal wieder mitten in der Nacht war und ich manchmal doch versuche ein wenig Rücksicht auf meine Nachbarn zu nehmen. ↩
-
Hier muss ick mal kurz einhaken: scheinbar geht das heutzutage ganz gut mit einem pulse-jack plugin. Aber früher da jab es sowas nich. ↩
-
Da ich ein guter Sysadmin bin, habe ich natürlich vorher überlegt ein Backup von meinem System zu machen. Habe sogar flott timeshift installiert, aber das müsste man ja erstmal einrichten.7 ↩
-
Dafür wäre ein Backup/Restorepunkt von voher ganz gut... ↩
-
Falls sich jetzt jemand denkt, ich hätte keine Backups: doch hab ich. Irgendwo... ↩
-
Das gezeige "Kabel" zwischen MediaCenter und Soundsystem besteht in Wirklichkeit aus einem langen USB-Kabel, einer USB-Soundkarte (die 5.1 kann) und mehreren langen Kabeln zum Subwoofer) ↩