Ich höre nichts!
Wie viele Nächte habe ich schon damit verbracht, die optimale Linux-Audio-Konfiguration zu suchen, mit der alle Anwendungen -- vom Video-Player bis zum Software-Synthesizer -- klar kommen, Ton ausgeben und ggf. sogar untereinander austauschen! Das Unterfangen wurde auch dadurch nicht gerade vereinfacht, dass unter Linux numehr mindestens drei verschiedene Komponenten für Audio zuständig sind:
- ALSA -- die Advanced Linux Sound Architecture stellt sozusgaen die hardware-nahe oder Treiber-Schicht im Linux-Audio-Stack dar -- obgleich auch ALSA vielfältige Formen der Audio-Daten-Manipulation in Echtzeit beherrscht (Stichwort: virtuelle Soundkarten und Resampling)
- PulseAudio -- mittlerweilen die Standard-High-Level-Bibliothek für den Alltagsgebrauch, die von so ziemlich allen Desktop-Anwendungen unterstützt wird und auch die Einbindung von z. B. Bluetooth-Geräten ermöglicht
- JACK -- der Jack Audio Connection Kit, welcher ebenfalls auf ALSA aufsetzt, im Gegensatz zu Pulseaudio viel Wert auf die exakte Synchronisation von Audio-Quellen legt, dabei aber nur jeweils eine Soundkarte gleichzeitig unterstützt
Das Problem liegt nun vor allem darin begründet, dass PulseAudio beim Start alle von ALSA verwaltete Audio-Hardware exklusiv für sich reklamiert, so dass andere Programme, die -- wie JACK -- ebenfalls direkt auf eine Soundkarte zugreifen wollen, dies nicht mehr tun könne.
Glücklicherweise haben sich die drei Systeme mittlerweilen soweit "angefreundet", dass ein relativ reibungsloser Parallel-Betrieb möglich ist. Gewusst wie, ist es daher nun möglich, z. B. mit Firefox oder VLC per PulseAudio Videos mit Ton (!) anzusehen, um in der nächsten Minute -- oder auch gleichzeitig -- ohne Umkonfigurierung des Audio-Systems mit Jack-basierten Anwendungen wie QTractor oder Ardour zu arbeiten. Und das von Audacity verwendete PortAudio spielt auch noch mit!
Schön zusammen spielen
Tatsächlich sind die genannten Audio-Komponenten bei einem modernen Debian-System (Stand: Buster) bereits so gut vorkonfiguriert, dass nur noch wenig Arbeit nötig ist, um sie zu reibungsloser Zusammenarbeit zu bewegen.
Zur Verwaltung von JACK verwende ich das GUI-Tool QJackCtl. Um Jack parallel zu PulseAudio betreiben zu können, muss zusätzlich noch das entsrpechende PulseAudio-Modul installiert werden. Zudem wird die Verwendung des a2jmidid-Tools zur Festlegung persistenter Namen für MIDI-Devices in JACK empfohlen. Und schließlich empfiehlt sich pavucontrol als GUI zur Einrichtung von PulseAudio:
sudo apt install a2jmidi pavucontrol pulseaudio-module-jack qjackctl
Die Magie passiert über die D-Bus-Checkboxen in der rechten Spalte des Misc-Reiters: Hierüber informiert JACK beim Starten PulseAudio, welches dann je eine Quelle und -Senke einrichtet, die mit entsprechenden Jack-Ports verknüpft sind und die ab jetzt (bis zum Beenden von JACK) als Default-PulseAudio-Ein/Ausgabe-Geräte verwendet werden.
Sobald JACK läuft, es es nun möglich, die neuen JACK-Quellen und -Senken in PulseAudio z. B. per pavucontrol als Ein- oder -Ausgabegerät zu auszuwählen (hier am Beispiel eines in Firefox abgespielten Videos) und bei Bedarf auch als Default-Gerät festzulegen (hier am Beispiel der neuen JACK-Senke):
Audacity und PortAudio
Tbd.
Laut mit Bluetooth
Tbd.