Diese Anleitung ist Teil 2 der Anleitung, wie man Ultraschall unter Linux zum Laufen bekommt. Bei Teil 1 haben wir die Installation an sich angeschaut, hier soll es nun um die Audio-Konfiguration gehen.
Ich gehe auf 2 Möglichkeiten ein, wie man Reaper/Ultraschall nutzen kann:
Variante 1: Pulseaudio
Variante 2: Pipewire
Eigentlich gäbe es noch die Variante JACK, die aber mittlerweile (fast) obsolet ist, da Pipewire diese Variante vollends abdeckt. Sollte Pipewire nicht installierbar sein, ist JACK aber sicher die gewünschte Variante, wenn Pulseaudio nicht die nötige Flexibilität bietet.
Ganz vereinfacht lässt sich sagen: Pulseaudio ist bisher noch das Standardsystem vieler Linux-Distributionen. Es ist einfach, „vollautomatisch“ und deckt das Grundsetup ab, z.B. 1 Mikrofon via USB, d.h. nur einen physischen Input. Will man ein USB-Audio-Interface verwenden, wirds bereits schwierig bis unmöglich, und man sollte Pipewire verwenden (oder eben JACK).
Variante 1: Pulseaudio
Ohne jetzt zu tief in die Details zu gehen, hier eine kurze Übersicht. Pulseaudio ist bisher der Standard unter Linux für normale Audio-Anwendungen. Das kann auch verwendet werden mit Reaper und funktioniert soweit. Die Nachteile:
- höhere Latenzen (je nachdem nicht spürbar oder relevant für euer Setup)
- kein flexibles Routing (je nach Setup aber kein Hindernis)
Wenn man kein Interface mit mehreren Eingängen verwenden will, sondern nur ein Mikrofon (1-Kanal, kann auch USB sein) verwenden will, dann kann Pulseaudio eine Lösung sein. Reaper verwendet damit die System-Eingangs-Quelle (euer Standard-Mikro) als Eingang für Reaper und die Standard-Ausgabe. Es ist definitiv einfacher in der Bedienung und wenn es für euch soweit klappt, kann das eine gute Variante sein.
Geht dazu in die Reaper-Einstellungen:
Options > Preferences > Audio > Device
und wählt da als „Audio System“ dann „Pulseaudio“ aus. Damit ist alles auch schon eingestellt. Ihr könnt dann für die Spuren unter Reaper die gewünschte Quelle wählen.
Meine präferierte Variante, die ich bisher auch in Verwendung hatte ist aber Pipewire.
Variante 2: Pipewire
Pipewire ist unter Fedora seit Frühjahr 2021 der Standard und löst damit Pulseaudio auf Fedora ab. Pipewire scheint der heilige Gral für Linux-Audio zu sein und ich gehe davon aus, dass auch Ubuntu und andere Distros bald darauf umsteigen werden.
Die Vorteile:
- niedrige Latenz bzw. kann dafür konfiguriert werden
- emuliert Pulseaudio und wichtiger noch: JACK
- flexibles Routing
- verhält sich für Normalanwender gleich wie Pulseaudio, lässt sich aber sehr gut konfigurieren für diverse Szenarien
Sollte Pipewire bei euch nicht standardmässig installiert sein, kann ich euch nicht empfehlen, das händisch zu installieren auf die Gefahr hin, dass ihr euer Audio-Setup schrottet. Es gibt diverse Anleitungen, wie man das z.B. für Ubuntu macht, dies macht ihr aber auf eigene Gefahr. Ich verwende Fedora, und da ist es schon Standard. Ich musste also nichts installieren oder umkonfigurieren.
Wer mutig genug ist und es trotzdem versuchen will, hier die Anleitung, die bei mir in der virtuellen Maschine funktioniert hat.
In meiner VM habe ich es aber so hinbekommen:
$ sudo apt install gstreamer1.0-pipewire libpipewire-0.3-{0,dev,modules} libspa-0.2-{bluetooth,dev,jack,modules} pipewire{,-{audio-client-libraries,pulse,media-session,bin,tests}}
Zudem installiert ihr:
$ sudo apt install pipewire-audio-client-libraries qjackctl
Das installiert euch pipewire-Tools und QJackCtl, das auch JACK mitinstalliert, das ihr aber eigentlich gar nicht braucht, aber trotzdem mitinstallieren müsst. Ubuntu fragt euch dann nach der Echtzeitpriorisierung für JACK. Das könnt ihr einrichten oder nicht, es spielt aber keine Rolle, da wir JACK nicht verwenden werden. Danach am besten mal neu starten.
Nachdem wir die Pakete installiert haben, schliessen wir Reaper erstmal. Wir starten nun QJackCtl mit der JACK-Emulation von Pipewire:
$ pw-jack -s 48000 -p 256 qjackctl
Mit pw-jack
gaukelt Pipewire QJackCtl vor, dass ein JACK-Daemon läuft.
-s
steht dabei für die Samplerate, die ihr am besten so belässt und auch unter Reaper so einstellt
-p
konfiguriert die Buffergrösse. Je kleiner der Buffer, desto niedriger die Latenz. Ist der Buffer zu klein, kann es aber zu Aussetzern kommen. Spielt mit dem Wert rum, für mich war 256 eine gute Grösse, geht aber wahrscheinlich auch kleiner.
Denselben Trick wenden wir nun an für Reaper selbst:
$ pw-jack -s 48000 -p 256 ~/.local/opt/REAPER/reaper -new
Wir öffnen nun in Reaper die Einstellungen unter:
Options > Preferences > Audio > Device
und stellen unter Audio System „JACK“ ein. Die Anzahl „Input Channels“ sollte der Anzahl Mikrofone/Eingänge entsprechen, die ihr in Reaper verwenden möchtet. Mehr Eingänge schaden nicht, ihr könnt hier also grosszügiger anlegen.
Routing mit QJackCtl
Da wir Sowohl QJackCtl als auch Reaper mit dem pw-jack-Tool gestartet haben, wird beiden Prozessen ein JACK-Daemon vorgegaukelt. Man hat hier also die volle Flexibilität von JACK, mit weniger Komplexität.
Nähme man stattdessen JACK, müssten alle Prozesse JACK-kompatibel sein. Ein Browser oder ein Programm, das JACK nicht unterstützt, kann dann keinen Ton mehr abspielen und vor allem auch nicht als Quelle herangezogen werden.
Mit pw-jack wird aber nur ein JACK-Daemon emuliert, d.h. alle bisherigen Prozesse fügen sich hier nahtlos mit ein und man kann beliebige Programme dazuholen, z.B. als Audio-Quellen. Der Trick ist hier, dass Pipewire sowohl Pulseaudio als auch JACK „spricht“ (plus das eigene Protokoll). Egal welches Soundsystem ein Programm unterstützt, es kann also mit Pipewire sprechen und ist daher ins System integriert und damit für Reaper nutzbar.
Ein Beispiel, wie man eine N-1-Schalte mit Skype macht, zeige ich im Anschluss.
Bei QJackCtl klickt man auf „Graph“ und hat dann ein Fenster, bei dem man alle Audio-Quellen und -Ziele sieht. Irgendwo sollte man Reaper sehen und die konfigurierte Anzahl Eingänge und Ausgänge. Das einfache Setup habe ich hier mal konfiguriert mit meinem USB-Interface, bei dem ich den 4. Mikrofon-Eingang mit dem ersten Reaper-Eingang verbunden habe, und dann den Reaper-Ausgang wieder mit dem USB-Interface.
Pipewire macht hier schon ein paar Standard-Verbindungen, die man am besten kappt. Man kann hier die einzelnen Verbindungen anklicken und löschen. Effektiver ist aber, gleich zwei Komponenten anzuklicken mit gedrückter Shift-Taste und dann oben „Disconnect“ zu wählen.
Man verbindet also die gewünschten Eingänge mit den Eingangs-Slots von Reaper und leitet die zwei Ausgänge (Stereo) z.B. zum Interface oder auf das Gerät, auf dem man den Ton von Reaper hören will.
Komplexeres Setup: N-1-Schalte mit Skype
Um die Mächtigkeit von Pipewire zu zeigen, habe ich mal noch eine N-1-Schalte mit Skype implementiert zum Selber-Nachstöpseln zu Hause.
Damit das klappt, müssen wir bei Reaper statt nur den normalen 2 Ausgängen neu 4 Ausgänge haben. Die ersten zwei sind unser „Master“-Ausgang, der auch beim normalen Setup zum Zuge kommt. Die letzten 2 Ausgänge sind das Signal, das wir an Skype schicken möchten. Für das Signal von Skype verwenden wir einfach 2 Eingänge von Reaper, die wir beliebig wählen können. Es sind jeweils 2 Kanäle, weil Skype hier sowohl Stereo empfängt als auch ausgibt.
Achtung: Startet ihr Skype, ist es erstmal nicht sichtbar in QJackCtl. Offenbar macht Skype erstmal keine Verbindung zum Audio-System. Wählt am besten mal den Echo-Test-Service, damit Skype sich hier zum Audiosystem verbindet. Ihr werden sehen, dass Skype plötzlich auftaucht und auch Verbindungen zum Standard-Eingabe- bzw. Ausgabe-Gerät macht. Diese Verbindungen kappt ihr (via „Disconnect“) und macht folgendes Setup:
Damit alles funktioniert, muss auch das Routing in Reaper korrekt konfiguriert sein. Meine Spur („Thomas“) muss aktiv sein auf dem Ausgang „Skype“, damit dieses Signal bei Skype ankommt. Alle anderen Nicht-Skype-Spuren müssen auch gleich gesetzt sein, damit Skype alle Spuren hört.
Die zweite Spur („Skype“) muss auf den Standard-Ausgang (hier Scarlett 18i8, mein USB-Interface) verbunden sein, damit ich auf dem Interface höre, was aus Skype rauskommt.
Soweit eigentlich ganz einfach, wäre nicht Skype etwas frickelig beim Audio-Setup. Sobald ihr nämlich einen neuen Anruf startet, krallt sich Skype wieder die Standardgeräte und ihr müsst in QJackCtl das korrekt Routing setzen, damit man euch hört und ihr das Gegenüber via Skype hört. Am besten warnt ihr euer Gegenüber vor. Hat man’s ein paar Mal gemacht, geht’s schnell von der Hand, wenn man weiss, welche Handgriffe man tätigen muss.
Zusammenfassung
Ich hoffe, die Anleitung hilft euch weiter beim Setup von Reaper und Ultraschall unter Linux. Bei einfachen Setups sollte es mit Pulseaudio auch ohne Anleitung relativ selbsterklärend sein. Nimmt man Pipewire mit der JACK-Emulation, eröffnen sich komplett neue Möglichkeiten mit einem komplett flexiblen Routing, das jedes Programm ansprechbar werden lässt, das Eingänge oder Ausgänge hat.