Jak korzystać jednocześnie z JACK i Pulseaudio / ALSA na tym samym urządzeniu audio?

30

Za każdym razem, gdy uruchamiam wodór, powoduje to uszkodzenie mojego dźwięku we wszystkich innych aplikacjach korzystających z Pulse, na przykład nie mogę już odtwarzać filmów w Chrome po jednorazowym uruchomieniu Hydrogen, dopóki nie uruchomię ponownie komputera lub nie uruchomię sudo alsa force-reload. Znalazłem osoby z podobnymi problemami, ale nie ma rzeczywistego przewodnika, aby to naprawić, często są linki do http://jackaudio.org/pulseaudio_and_jack (który został przeniesiony do http://jackaudio.org/faq/pulseaudio_and_jack.html ) I używam Ubuntu Studio 14.04 64bit.

ALTERNATYWNIE, jeśli to naprawdę niemożliwe do osiągnięcia, czy ktoś może mi powiedzieć, jak używać Jacka na jednej karcie dźwiękowej, a Pulse na innej? W ten sposób mogłem podłączyć kartę dźwiękową USB tylko wtedy, gdy potrzebuję JACK.

Nie zmuszaj mnie do korzystania z systemu Windows.

Andreas Hartmann
źródło
Po dalszych badaniach wydaje się, że istnieje kilka sposobów na to, aby to zadziałało, patrz tutaj: github.com/jackaudio/jackaudio.github.com/wiki/... Jednak w moim przypadku wszystkie te zabijają wszystkie wyjścia audio na stałe.
Andreas Hartmann

Odpowiedzi:

24

Od 16.04 rzeczy stają się o wiele prostsze :)

Wystarczy zainstalować qjackctli pulseaudio-module-jackmoduł:

apt-get install qjackctl pulseaudio-module-jack

Następnie skonfiguruj, qjackctlaby uruchomić następujące polecenie po uruchomieniu. Skopiuj go do „Setup ...”> „Options”> „Uruchom skrypt po uruchomieniu”:

pacmd set-default-sink jack_out

I to wszystko. Pulseaudio rozpozna (przez D-Bus), że JACK zaczął, i automatycznie skieruje do niego audio. Po zatrzymaniu JACK Pulseaudio powróci do normalnego routingu i ponownie zacznie wysyłać dźwięk bezpośrednio na kartę.

Tak więc (prawie) domyślnie Pulseaudio implementuje ustawienia wyszczególnione powyżej przez mmv-ru.

José Micó
źródło
To najłatwiejsze rozwiązanie, jakie do tej pory widziałem! Nareszcie mogę używać Jacka bez wyciszania wszystkiego innego! Dziękuję Ci.
kapcom01
8
pactl set-default-sink jack_out -> „Niepowodzenie: brak takiego bytu”
Karl Morrison,
1
działało to dla mnie, gdy inne rozwiązania nie, wielkie dzięki!
malte
2
Prawidłowe polecenie to „pacmd set-default-sink jack_out”. Niestety nie mogę poprawić odpowiedzi, ponieważ edycja musi zawierać więcej niż 6 znaków! :-(
Todd Chaffee,
2
@KarlMorrison, prawdopodobnie musisz wykonać, pactl load-module module-jack-sink channels=2a pactl load-module module-jack-sourcewcześniej zobacz odpowiedź @ kim-tucker.
naktinis
17

Wydaje się, że ten film na Youtube: „Jack and PulseAudio Together as Friends - Linux” zawiera kilka odpowiedzi:

Kluczem do rozwiązania było upewnienie się, że pulseaudio-module-jack jest zainstalowany z:

aptitude install pulseaudio-module-jack

następnie sudo edytuje plik /etc/pulse/default.pa w celu ręcznego umieszczenia dwóch linii pod sekcją wczytywania sterowników audio:

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

potem - tak myślę - restartowanie pulseaudio. Właśnie zrestartowałem komputer (leniwy, wiem) i zadziałało ... rozpalenie Ardora nie zabiło już pulseaudio, grali razem szczęśliwie.

RobinsSea
źródło
BTW, możesz również dodawać moduły w locie, używającpactl load-module ...
0__
9

Właśnie zakończyłem misję koegzystencji Jacka i Pulse na Fedorze. Ogólnie jestem zadowolony z Pulseaudio, ale czasami potrzebuję dźwięku Jacka.

Moje rozwiązanie działa na Fedorze 23.

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

Nie dotykaj /etc/pulse/default.pa!

Skonfiguruj qjackctl

Ustawienia

Istnieje odpowiedni fragment ~ / .config / rncbc.org / QjackCtl.conf

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

Opcje nazwy zlewu dla pactl można znaleźć za pomocą polecenia:

pacmd list-sinks

Jest jeszcze jeden fragment ~ / .config / rncbc.org / QjackCtl.conf, aby wyświetlić pełne polecenia

[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"

Misc Tam „Włącz interfejs D-Bus” ważne dla samego Qjackctl.

Jak to działa

Teraz po uruchomieniu komputer działa tylko z PulseAudio. Cała automatyczna praca jak bez Jacka.

Po uruchomieniu Qjackctl

  1. Skrypt startowy Qjackctl zawiesza podstawową kartę audio w Plseuaudio i pozwala Jackjowi uzyskać do niej dostęp „pactl suspend-sink alsa_output.pci-0000_00_1b.0.analog-stereo 1”
  2. Jack zaczął przez d-bus „jack_control start”
  3. Impuls automatycznie wykrywa start podnośnika przez D-Bus oraz odbiornik i źródło podnośnika.
  4. Qjackctl po skrypcie startowym zmień domyślny obiekt sink w Pulse na jack_out. (Widzę, że nie zrobiłem tego sam) „pactl set-default-sink jack_out” (na początku wygląda to niepotrzebnie, ponieważ wszyscy działający klienci PA przełączyli się na nowy zlew, ale nowe aplikacje utknęły na zawieszonym zlewie bez tego polecenia)

Tak więc system został ponownie skonfigurowany do używania „Pulse on Jack”. (Tam pomijam zawieszenie wejścia sprzętowego, ponieważ i tak go nie używam)

Jeśli opcja „Zatrzymaj serwer audio JACK na exti aplikacji” nie jest zaznaczona, mogę zamknąć Qjackctl i uruchomić go ponownie, nie zakłócając konfiguracji.

Po zatrzymaniu Jacka przez Qjackctl wszyscy wracają do zwykłego, uporządkowanego Pulsu!

  1. Jackd stop przez Qjackctl przez dbus - opcja „Włącz interfejs D-bus”.
  2. jack-source i jack-sink usunięte automatycznie z Pulseaudio przez d-bus
  3. domyślny zlew w Pulse audio przełączony na kartę audio, ponieważ jack-out znikają
  4. Qjackctl po skrypcie Shutdown ponownie aktywuje kartę dźwiękową w Pulseaudio „pactl suspend-sink alsa_output.pci-0000_00_1b.0.analog-stereo 1”

Narzędzia użyte

  1. jackd (z pakietu pulseaudio-utils)
  2. jack_control (z pakietu ack-audio-connection-kit-dbus)
  3. Qjackctl (z pakietu pulseaudio-utils)
  4. pactl do sterowania Pulseaudio z sctipts (z pakietu pulseaudio-utils)
mmv-ru
źródło
Ta odpowiedź nie jest jednoznaczna na temat konfiguracji. Czy odbywa się to wyłącznie za pośrednictwem Qjackctl? Jeśli tak, w jakich plikach są ustawienia konfiguracji i jak je ustawić?
Faheem Mitha,
Wstępna konfiguracja wykonana za pomocą menedżera pakietów. rekonfiguracja jackg start / stop za pomocą skryptów jack-audio-connection-kit-dbus i Qjackctl.
mmv-ru 11.11.16
Widzę. Niektóre szczegóły w tym zakresie byłyby niezwykle pomocne. Tych szczegółów brakuje zwłaszcza w innych odpowiedziach i informacjach w sieci. Wolę nie konfigurować rzeczy za pomocą GUI, jeśli to możliwe. Czy zazwyczaj rozmawiasz na AU? Jeśli tak, możemy to przedyskutować.
Faheem Mitha,
Qjackctl można skonfigurować za pomocą GUI, jak pokazują zrzuty ekranu. W odpowiedzi pokazuję części .config / rncbc.org / QjackCtl.conf, aby pokazać pełne linie skryptu.
mmv-ru 11.03.16
Brak wystarczającej reputacji, aby zaprosić do czatu. Zaproś mnie.
mmv-ru 11.03.16
7
  • Problem polega na tym, że wodór (jako Ardor) uruchamia jackd przy starcie, ale nie zamykaj go przy wyjściu:
    Ale możesz uruchomić killall jackdw terminalu po wyjściu z wodoru.

  • Skomplikowanym sposobem korzystania z oprogramowania Jack i pulseaudio w tym samym czasie jest instalacja „pulseaudio-module-jack” (także zainstalować qjackctl (gui dla jackd) i pavucontrol, jeśli nie są obecne). Uruchom ponownie pulseaudio pulseaudio -k.
    Teraz zamknij aplikacje audio (Jack i pulseaudio),
    uruchom jackd za pomocą qjackctl (kliknij przycisk Start) ( opcja dbus musi być wybrana w ostatniej zakładce ustawień qjackctl ).
    W zakładce „urządzenie wyjściowe” Pavucontrol, zielony przycisk „urządzenie domyślne” obok „jack sink”
    Teraz oprogramowanie pulseaudio i Wodór powinny działać jednocześnie.

  • Za pomocą qjackctl w pierwszej zakładce „ustawienia” możesz zmienić urządzenie audio Jackd.

laugeo
źródło
3

Teraz może być znacznie łatwiej. To, co zadziałało dzisiaj, aby zaspokoić moje naprawdę podstawowe potrzeby, po nowej instalacji Linux Mint 18.2 (baza pakietów Ubuntu 16.04) to:

  1. Użyj Synaptic, aby zainstalować QSynth i QJackCtl.

  2. Skopiuj wymagane czcionki dźwiękowe do odpowiedniego folderu, takiego jak /usr/share/sounds/sf2/

  3. W konfiguracji QSynth : poniżej audio zmiany zakładce Audio Driver do PulseAudio .

  4. W konfiguracji QSynth : w obszarze SoundFonts : Otwórz ... i wybierz jeden w razie potrzeby.

  5. W Ustawienia QJackCtl> Ustawienia> Zaawansowane :

    Prefiks serwera: pasuspsender - /usr/bin/jackd

  6. W Ustawienia QJackCtl> Opcje :

    Wykonaj skrypt po uruchomieniu:

    pactl load-module module-jack-sink channels=2; pactl load-module module-jack-source; pacmd set-default-sink jack_out
    
  7. W QJackCtl Connect: ALSA : dołącz pozycję klawiatury po lewej stronie do FLUID Synth po prawej.

  8. W głównych Ustawieniach systemu dźwięku wybierz wymagane urządzenie wyjściowe.

Teraz mogę grać na klawiaturze podczas oglądania filmu (np. Na YouTube za pomocą przeglądarki Firefox, na przykład) - wcześniej mogłem robić tylko jedną z nich na raz, bez wielu drobnych poprawek, których rzadko śledziłem.

Mam nadzieję, że to pomoże komuś lub zachęci go do ponownej próby :-).

Kim Tucker
źródło
2

Najłatwiejszym sposobem na skierowanie całego systemu do działania z gniazdem jack:

zainstalować

sudo apt-get install qjackctl pulseaudio-module-jack

Otwórz qjackctl. W Ustawienia> Opcje>

Zaznacz Uruchom skrypt po uruchomieniu i wklej to:

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

Zaznacz Wykonaj skrypt po wyłączeniu i wklej to:

killall jackd

Teraz uruchom qjack i otwórz ustawienia dźwięku. Znajdziesz wyjście Pulse Audio Jack Sink Output. Wybierz to, a cały system zsynchronizuje się. Jeśli zatrzymasz serwer Jack / qjack, dźwięk wróci do portu domyślnego.

Oto ogólny widok

Fahad Hasan Pathik
źródło
0

Oczywiście, ktoś będzie chciał uruchomić zarówno pulseaudio, jak i jack, jeśli dotrą do punktu, w którym potrzebują jack, ponieważ większość odtwarzaczy multimedialnych w przeglądarce nie zna jack! ..Niestety.

Wciąż dostrzegałem sugestię, aby uruchomić tylko jedną z nich w czasie, który wydaje mi się tak strasznym kompromisem. Moim zdaniem tragiczne jest to, że te dwie usługi, tj. Jack i pulseaudio, mimo że obie funkcjonują same, są tak źle zarządzane przez kxstudio, przynajmniej tego używam.

Tak więc dzieje się:

  • Jack nie może się uruchomić, gdy pulseaudio jest uruchomiony (i używając sterownika karty dźwiękowej, którego chce użyć, co jest wystarczająco sprawiedliwe), więc należy go najpierw uruchomić

  • pulseaudio musi być skierowane na Jacka, gdy jest gotowe i działa

Całkiem proste .. prawda? Z pewnych powodów odczuwałem niekończący się smutek, ponieważ ..

Najpierw myślę, że ponieważ pulseaudio 4.0 wydaje się być wadliwy i psuje sterownik alsa, tak że w niektórych sytuacjach pozostawia zablokowany i dlatego jack nie może się uruchomić, nawet jeśli pulseaudio nie działa. (Mówi, że nie udało się ustawić parametrów przechwytywania lub smtg w ten sposób)

To, co ostatecznie uczyniłem, było

  • całkowicie usunął zarówno jack jak i pulseaudio (z find i rm -rf: D po apt-get purge)
  • zainstalowany pulseaudio 11 (ze źródeł)
  • zainstalowany jack i jego libs (libjack-dev)

w tej kolejności, a następnie w końcu uruchomiłem je normalnie przez qjackctl, co zapewnia, że ​​zaczną poprawnie (ładuje jack sink w pulseaudio i ustawia go jako domyślny).

Przy okazji, widziałem zamiast tego Cadence'a i nie rozumiem dlaczego wydaje mi się, że to śmieci w porównaniu do qjackctl.

W każdym razie problem polega na tym, że uruchomienie Jacka za pomocą qjackctl zajmuje trochę czasu. Aby uniknąć czasu oczekiwania przy każdym rozruchu, możesz skorzystać z tej funkcji kde, która służy do ładowania poprzedniej sesji. Upewnij się, że nie masz qjackctl w autostartie, ponieważ przy każdym ponownym uruchomieniu będziesz mieć jeszcze jedną instancję, niezależnie od ustawienia singleton = true (buggy buggy przez całą noc).

Wynika to z faktu, że nie czułem się już przy tym, aby się z tym bawić, np. Napisać inteligentny skrypt, który upewni się, że pulseaudio jest wyłączone (lub zawieszone), uruchomi jack i sprawdzi, czy uruchomił się poprawnie, a następnie uruchom pulseaudio, moduł ładowania jack itp.

W przeciwnym razie poleganie na systemie operacyjnym w celu uruchomienia demonów i prawidłowego załadowania konfiguracji byłoby normalnym (zdrowym) scenariuszem, jednak wydaje się, że tak się nie dzieje.

Baw się dobrze..

Negru Voda
źródło
0

Używam Linux Mint 19.1. Po wypróbowaniu wszystkich różnych rozwiązań rzeczy nadal nie działałyby dla mnie płynnie.

Wreszcie udało mi się rozwiązać wszystkie moje problemy, wykonując kroki / instrukcje w filmie: Link

Zasadniczo instaluje aplikacje z repozytoriów Kxstudio. i mają skrypt do skonfigurowania wszystkiego idealnie podczas uruchamiania.

Moim celem końcowym była możliwość nagrywania danych wejściowych przez mój interfejs (Scarlett solo), a jednocześnie możliwość uruchamiania / nagrywania dźwięku z innych aplikacji (komputer stacjonarny, przeglądarka)

joe_maya
źródło