Wie können Sie JACK und Pulseaudio / ALSA gleichzeitig auf demselben Audiogerät verwenden?


30

Wenn ich Wasserstoff starte, wird mein Audio in allen anderen Anwendungen, die Pulse verwenden, unterbrochen. Beispielsweise kann ich nach dem ersten Start von Hydrogen keine Videos mehr in Chrome abspielen, bis ich meinen PC neu starte oder sudo alsa erzwinge. Ich habe Leute mit ähnlichen Problemen gefunden, aber keine tatsächliche Anleitung, um dies zu beheben. Oft gibt es Links zu http://jackaudio.org/pulseaudio_and_jack (die zu http://jackaudio.org/faq/pulseaudio_and_jack.html verschoben wurden ) benutze Ubuntu Studio 14.04 64bit.

ALTERNATIV kann mir jemand sagen, wie man Jack auf einer Soundkarte und Pulse auf einer anderen verwendet, wenn dies wirklich unmöglich ist? Auf diese Weise konnte ich eine USB-Soundkarte nur anschließen, wenn ich JACK benötige.

Bitte zwinge mich nicht, Windows zu benutzen.


Nach weiteren Recherchen scheint es ein paar Möglichkeiten zu geben, wie dies funktioniert. Siehe hier: github.com/jackaudio/jackaudio.github.com/wiki/… In meinem Fall wird jedoch die gesamte Audioausgabe dauerhaft gestört.
Andreas Hartmann

Antworten:


24

Ab 16.04 wird es viel einfacher :)

Einfach installieren qjackctlund pulseaudio-module-jackmodulieren:

apt-get install qjackctl pulseaudio-module-jack

Konfigurieren Sie dann qjackctl, um den folgenden Befehl nach dem Start auszuführen. Kopiere es in "Setup ..."> "Options"> "Execute script after Startup":

pacmd set-default-sink jack_out

Und das ist es. Pulseaudio erkennt (über D-Bus), dass JACK gestartet wurde, und leitet Audio automatisch zu ihm weiter. Wenn JACK gestoppt ist, kehrt Pulseaudio zum normalen Routing zurück und beginnt erneut, Audio direkt an die Karte zu senden.

Daher implementiert Pulseaudio (fast) standardmäßig das oben beschriebene Setup von mmv-ru.


Dies ist die einfachste Lösung, die ich bisher gesehen habe! Endlich kann ich Jack benutzen, ohne alles andere stummzuschalten! Vielen Dank.
Kapcom01

8
pactl set-default-sink jack_out -> "Fehler: Keine solche Einheit"
Karl Morrison

1
das hat bei mir geklappt als andere lösungen nicht, vielen dank!
Malte

2
Der richtige Befehl lautet 'pacmd set-default-sink jack_out'. Leider kann ich die Antwort nicht korrigieren, da eine Bearbeitung aus mehr als 6 Zeichen bestehen muss! :-(
Todd Chaffee

2
@ KarlMorrison, müssen Sie wahrscheinlich ausführen pactl load-module module-jack-sink channels=2und pactl load-module module-jack-sourcevor, siehe @ Kim-Tucker Antwort.
Naktinis

17

Dieses Youtube-Video: "Jack und PulseAudio zusammen als Freunde - Linux" schien einige Antworten zu haben:

Der Schlüssel zur Lösung schien darin zu liegen, sicherzustellen, dass die pulseaudio-Modulbuchse installiert ist mit:

aptitude install pulseaudio-module-jack

Anschließend bearbeiten Sie sudo die Datei /etc/pulse/default.pa so, dass sie zwei Zeilen im Abschnitt zum manuellen Laden von Audiotreibern enthält:

load-module module-jack-sink
load-module module-jack-source

dann - denke ich - wieder pulseaudio. Ich habe gerade den PC neu gestartet (faul, ich weiß) und es hat gut geklappt ... Ardour hat pulseaudio nicht mehr getötet, sie spielten glücklich zusammen.


Übrigens können Sie die Module auch im pactl load-module ...
laufenden Betrieb

9

Gerade durch die Suche nach dem Zusammenleben von Jack und Pulse auf Fedora gegangen. Im Allgemeinen bin ich mit Pulseaudio zufrieden, aber manchmal brauche ich Jack Audio.

Meine Lösung für Fedora 23.

dnf install jack-audio-connection-kit jack-audio-connection-kit-dbus qjackctl

Berühren Sie nicht /etc/pulse/default.pa!

Konfigurieren Sie qjackctl

die Einstellungen

Es gibt ein relevantes Fragment von ~ / .config / rncbc.org / QjackCtl.conf

[Settings]
Server=jack_control start
Driver=alsa
InDevice="hw:PCH,0"
OutDevice="hw:PCH,0"

Optionen Die Namen von sink für pactl können mit folgendem Befehl gefunden werden:

pacmd list-sinks

Es gibt ein weiteres Fragment von ~ / .config / rncbc.org / QjackCtl.conf, um die vollständigen Befehle anzuzeigen

[Options]
...
StartupScript=true
StartupScriptShell=pactl suspend-sink alsa_output.pci-0000_00_1b.0.analog-stereo 1
PostStartupScript=true
PostStartupScriptShell=pactl set-default-sink jack_out
ShutdownScript=false
ShutdownScriptShell="pactl unload-module module-jack-sink; pactl load-module module-jack-source"
PostShutdownScript=true
PostShutdownScriptShell="pactl suspend-sink alsa_output.pci-0000_00_1b.0.analog-stereo 0; pactl set-default-sink alsa_output.pci-0000_00_1b.0.analog-stereo"

Sonstiges Dort ist "D-Bus-Schnittstelle aktivieren" wichtig für Qjackctl selbst.

Wie es funktioniert

Jetzt auf dem Boot-PC nur mit PulseAudio arbeiten. Alle automatischen Arbeiten wie ohne Jack.

Nach dem Start von Qjackctl,

  1. Qjackctl-Startskript setzt die primäre Audiokarte in Plseuaudio aus und ermöglicht Jackj den Zugriff darauf "pactl suspend-sink alsa_output.pci-0000_00_1b.0.analog-stereo 1"
  2. Jack startete über den D-Bus "jack_control start"
  3. Der Impuls erkennt automatisch den Start der Buchse über den D-Bus und lädt die Senke und Quelle der Buchse.
  4. Qjackctl nach Startup-Skript ändert die Standardsenke in Pulse in jack_out. (Ich treffe es nicht selbst) "pactl set-default-sink jack_out" (zunächst sieht es unnötig aus, da alle laufenden PA-Clients auf neue Senke umgestellt haben, aber neue Apps ohne diesen Befehl auf suspendierte Senke stecken)

Das System wurde so umkonfiguriert, dass "Pulse on top of Jack" verwendet wird. (Dort überspringe ich Hardwareeingabe suspend, weil ich es sowieso nicht benutze)

Wenn "JACK-Audioserver auf Anwendung exti stoppen" nicht aktiviert ist, kann ich Qjackctl schließen und das nicht störende Setup erneut ausführen.

Nachdem Sie Jack durch Qjackctl gestoppt haben, kehren Sie alle zu einfachem, übersichtlichem Pulse zurück!

  1. Jackd stoppt mit Qjackctl über dbus - Option "D-Bus-Schnittstelle aktivieren".
  2. Jack-Source und Jack-Sink werden von Pulseaudio automatisch per D-Bus entfernt
  3. Die Standardsenke in Pulse Audio wurde auf die Audiokarte umgeschaltet, da der Jack-Out verschwindet
  4. Qjackctl nach Shutdown-Skript Audiokarte wieder in Pulseaudio aktivieren "pactl suspend-sink alsa_output.pci-0000_00_1b.0.analog-stereo 1"

Benutztes Werkzeug

  1. jackd (aus Paket pulseaudio-utils)
  2. jack_control (aus dem Paket ack-audio-connection-kit-dbus)
  3. Qjackctl (aus Paket pulseaudio-utils)
  4. pactl zur Steuerung von Pulseaudio aus sctipts (aus dem Paket pulseaudio-utils)

Diese Antwort bezieht sich nicht explizit auf die Konfiguration. Geht das ausschließlich über Qjackctl? Wenn ja, in welchen Dateien befinden sich die Konfigurationseinstellungen und wie werden sie festgelegt?
Faheem Mitha

Erstkonfiguration über Package Manager. Jackg-Start / Stop-Rekonfiguration über Jack-Audio-Connection-Kit-Dbus und Qjackctl-Skripte.
mmv-ru

Aha. Einige Details in diese Richtung wären äußerst hilfreich. Diese Details fehlen insbesondere in anderen Antworten und Informationen im Internet. Ich würde es vorziehen, Dinge nicht über eine GUI zu konfigurieren, wenn dies möglich ist. Bist du normalerweise im AU-Chat? Wenn ja, können wir es dort diskutieren.
Faheem Mitha

Qjackctl kann per GUI konfiguriert werden, wie Screenshots zeigen. In Reply zeige ich Teile von .config / rncbc.org / QjackCtl.conf, um vollständige Skriptzeilen anzuzeigen.
mmv-ru

Nicht genug Ruf, um zum Chatten einzuladen. Lade mich ein.
mmv-ru

7
  • Das Problem ist, dass Hydrogen (als Ardour) jackd beim Start startet, aber beim Verlassen nicht schließt:
    Sie können jedoch killall jackdnach dem Verlassen von Hydrogen in einem Terminal laufen .

  • Eine komplizierte Möglichkeit, Jack- und pulseaudio-Software gleichzeitig zu verwenden, besteht darin, "pulseaudio-module-jack" zu installieren (installieren Sie auch qjackctl (gui for jackd) und pavucontrol, falls nicht vorhanden). Starten Sie pulseaudio neu pulseaudio -k.
    Schließen Sie nun Audio-Apps (Jack und Pulseaudio),
    führen Sie Jackd mit qjackctl aus (klicken Sie auf die Start-Schaltfläche) (die Option dbus muss in den qjackctl-Einstellungen auf der letzten Registerkarte ausgewählt sein ).
    Klicken Sie auf der Registerkarte "Ausgabegerät" von Pavucontrol neben "Jack Sink" auf die grüne Schaltfläche "Standardgerät".
    Jetzt sollten die pulseaudio-Software und Wasserstoff gleichzeitig ausgeführt werden.

  • Mit qjackctl können Sie auf der ersten Registerkarte "Einstellungen" das Jackd-Audiogerät ändern.


3

Es könnte jetzt viel einfacher sein. Was heute für mich funktionierte, um meine wirklich grundlegenden Bedürfnisse zu befriedigen, war nach einer Neuinstallation von Linux Mint 18.2 (Ubuntu 16.04 Paketbasis):

  1. Verwenden Sie Synaptic, um QSynth und QJackCtl zu installieren.

  2. Kopieren Sie die erforderlichen Soundschriften in einen geeigneten Ordner, z /usr/share/sounds/sf2/

  3. In qsynth - Setup : unter Audio Registerkarte ändern Audio - Treiber zu Pulseaudio .

  4. Im QSynth Setup : unter SoundFonts : Öffnen ... und wählen Sie eine aus.

  5. In QJackCtl Setup> Einstellungen> Erweitert :

    Serverpräfix: pasuspsender - /usr/bin/jackd

  6. In QJackCtl Setup> Optionen :

    Skript nach dem Start ausführen:

    pactl load-module module-jack-sink channels=2; pactl load-module module-jack-source; pacmd set-default-sink jack_out
    
  7. In QJackCtl Connect: ALSA : Verbinden Sie die Tastatureingabe links mit FLUID Synth rechts.

  8. Wählen Sie in den Hauptsystemeinstellungen für Sound das gewünschte Ausgabegerät aus.

Jetzt kann ich auf der Tastatur spielen, während ich ein Video anschaue (z. B. auf YouTube mit Firefox). Früher konnte ich immer nur eine davon ausführen, ohne viele Änderungen vorzunehmen, die ich selten nachverfolgen konnte.

Hoffe, das hilft jemandem oder ermutigt ihn, es noch einmal zu versuchen :-).


2

Der einfachste Weg, um alle Systeme so zu routen, dass sie mit Jack laufen:

Installieren

sudo apt-get install qjackctl pulseaudio-module-jack

Qjackctl öffnen. In Setup> Optionen>

Aktivieren Sie "Skript nach dem Start ausführen" und fügen Sie Folgendes ein:

pacmd load-module module-jack-source channels=2; pacmd load-module module-jack-sink channels=2;

Aktivieren Sie "Skript nach dem Herunterfahren ausführen" und fügen Sie Folgendes ein:

killall jackd

Starten Sie nun qjack und öffnen Sie Ihre Soundeinstellungen. Sie finden den Ausgang für die Pulse Audio Jack Sink. Wählen Sie es aus und alle Systeme werden synchronisiert. Wenn Sie Jack server / qjack anhalten, wird der Ton wieder an Ihren Standardanschluss gesendet.

Hier ist die Gesamtansicht


0

Natürlich wird man wollen, dass sowohl pulseaudio als auch jack laufen, wenn sie den Punkt erreichen, an dem sie jack brauchen, da die meisten Browser-Mediaplayer jack nicht kennen! ..Unglücklicherweise.

Ich sah immer wieder den Vorschlag, nur einen von ihnen gleichzeitig laufen zu lassen, was mir wie ein so schrecklicher Kompromiss erscheint. Es ist meiner Meinung nach etwas tragisch, dass diese beiden Dienste, dh jack und pulseaudio, obwohl beide für sich genommen so schlecht von kxstudio verwaltet werden, zumindest was ich benutze.

Was also passiert ist:

  • jack kann nicht gestartet werden, während pulseaudio ausgeführt wird (und verwendet den Soundkartentreiber, den es verwenden möchte, der fair genug ist), sodass es zuerst gestartet werden muss

  • pulseaudio muss darauf hingewiesen werden, dass es einmal betriebsbereit ist

Ziemlich einfach. Aus bestimmten Gründen hatte ich endlosen Kummer damit, weil ..

Zuerst denke ich, weil pulseaudio 4.0 fehlerhaft zu sein scheint und den alsa-Treiber durcheinander bringt, so dass er in einigen Situationen gesperrt bleibt und daher nicht gestartet werden kann, obwohl pulseaudio nicht läuft. (Sagt, dass Capture-Parameter oder ähnliches nicht eingestellt werden konnten)

Was ich am Ende tat, war

  • Jack und Pulseaudio komplett entfernt (mit find und rm -rf: D nach apt-get purge)
  • Pulseaudio 11 installiert (aus Quellen)
  • installierte jack und seine libs (libjack-dev)

in dieser reihenfolge habe ich sie dann schließlich normal durch qjackctl laufen lassen, was sicherstellt, dass sie auf die richtige Weise starten (lädt die Jack Sink in pulseaudio und legt sie als Standard fest).

Übrigens, ich habe gesehen, dass Cadence stattdessen empfohlen wird und ich verstehe nicht, warum es für mich im Vergleich zu qjackctl Unsinn ist.

Auf jeden Fall dauert das Starten von Jack mit qjackctl eine Weile. Um Wartezeiten bei jedem Start zu vermeiden, können Sie diese Lebensrettungsfunktion von kde verwenden, mit der die vorherige Sitzung geladen wird. Stellen Sie jedoch sicher, dass Sie qjackctl nicht im Autostart haben, da Sie bei jedem Neustart eine weitere Instanz erhalten, unabhängig von der Einstellung singleton = true (Buggy-Buggy die ganze Nacht über).

Das liegt daran, dass ich nicht länger damit rumgespielt habe, wie zum Beispiel ein intelligentes Skript zu schreiben, das sicherstellt, dass Pulseaudio heruntergefahren (oder angehalten) wurde. Überprüfen Sie, ob es ordnungsgemäß gestartet wurde, und starten Sie dann Pulseaudio, laden Sie das Jack-Modul usw.

Andernfalls wäre es das normale (fehlerfreie) Szenario, sich darauf zu verlassen, dass das Betriebssystem die Daemons startet und die Konfiguration korrekt lädt. Dies scheint jedoch nicht zu geschehen.

Habe Spaß..


0

Ich verwende Linux Mint 19.1. Nachdem ich all die verschiedenen Lösungen ausprobiert hatte, funktionierte es für mich immer noch nicht reibungslos.

Schließlich konnte ich alle meine Probleme lösen, indem ich den Schritten / Anweisungen im Video folgte: Link

Grundsätzlich werden Anwendungen aus den Kxstudio-Repositorys installiert. und sie haben ein Skript, um alles beim Start perfekt zu konfigurieren.

Mein Endziel war es, Eingaben über meine Benutzeroberfläche (Scarlett Solo) aufzuzeichnen und gleichzeitig Sound von anderen Anwendungen (Desktop, Browser) ausführen / aufzeichnen zu können.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.