Come utilizzare JACK e Pulseaudio / ALSA contemporaneamente sullo stesso dispositivo audio?


30

Ogni volta che lancio idrogeno, il mio audio si interrompe in tutte le altre applicazioni che usano Pulse, ad esempio, non posso più riprodurre video in Chrome dopo aver avviato Hydrogen una volta, fino a quando non riavvio il PC o eseguo il caricamento forzato. Ho trovato persone con problemi simili, ma nessuna vera guida per risolvere questo problema, spesso ci sono collegamenti a http://jackaudio.org/pulseaudio_and_jack (che è passato a http://jackaudio.org/faq/pulseaudio_and_jack.html ) I sto usando Ubuntu Studio 14.04 64 bit.

ALTERNATIVAMENTE se questo è veramente impossibile da raggiungere, qualcuno può dirmi come usare Jack su una scheda audio e Pulse su un'altra? In questo modo ho potuto collegare una scheda audio USB solo quando ho bisogno di JACK.

Per favore, non farmi usare Windows.


Dopo ulteriori ricerche, sembrano esserci alcuni modi per farlo funzionare, vedi qui: github.com/jackaudio/jackaudio.github.com/wiki/… Tuttavia, nel mio caso, tutti questi uccidono permanentemente tutte le uscite audio.
Andreas Hartmann,

Risposte:


24

A partire dal 16.04, le cose diventano molto più semplici :)

Basta installare qjackctle pulseaudio-module-jackmodulo:

apt-get install qjackctl pulseaudio-module-jack

Quindi configurare qjackctlper eseguire il seguente comando dopo l'avvio. Copiarlo in "Setup ..."> "Opzioni"> "Esegui script dopo l'avvio":

pacmd set-default-sink jack_out

E questo è tutto. Pulseaudio riconoscerà (tramite D-Bus) l'avvio di JACK e indirizzerà automaticamente l'audio verso di esso. Quando JACK viene interrotto, Pulseaudio tornerà al routing normale e inizierà a inviare nuovamente l'audio direttamente alla scheda.

Quindi (quasi) per impostazione predefinita Pulseaudio implementa la configurazione sopra descritta da mmv-ru.


Questa è la soluzione più semplice che abbia mai visto finora! Finalmente posso usare Jack senza escludere tutto il resto! Grazie.
kapcom01,

8
pactl set-default-sink jack_out -> "Fallimento: nessuna entità del genere"
Karl Morrison

1
questo ha funzionato per me quando altre soluzioni no, molte grazie!
Malte,

2
Il comando corretto è 'pacmd set-default-sink jack_out'. Purtroppo non riesco a correggere la risposta perché una modifica deve contenere più di 6 caratteri! :-(
Todd Chaffee,

2
@KarlMorrison, probabilmente dovrai eseguire pactl load-module module-jack-sink channels=2e pactl load-module module-jack-sourceprima ancora, vedi la risposta di @ kim-tucker.
naktinis,

17

Questo video di Youtube: "Jack e PulseAudio insieme come amici - Linux" sembravano avere delle risposte:

La chiave della soluzione sembrava essere assicurarsi che pulseaudio-module-jack fosse installato con:

aptitude install pulseaudio-module-jack

quindi sudo modificando il file /etc/pulse/default.pa per includere due righe nella sezione di caricamento dei driver audio manualmente:

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

quindi - penso - riavviando pulseaudio. Ho appena riavviato il PC (pigro, lo so) e ha funzionato a meraviglia ... accendere Ardor non ha più ucciso pulseaudio, hanno suonato felicemente insieme.


A proposito, puoi anche aggiungere i moduli al volo, usandopactl load-module ...
0__

9

Ho appena superato la ricerca della coesistenza di Jack e Pulse su Fedora. In generale sono contento di Pulseaudio, ma a volte ho bisogno dell'audio di Jack.

La mia soluzione funziona su Fedora 23.

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

Non toccare /etc/pulse/default.pa!

Configura qjackctl

impostazioni

C'è un frammento rilevante di ~ / .config / rncbc.org / QjackCtl.conf

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

Opzioni i nomi di sink per pactl possono essere trovati dal comando:

pacmd list-sinks

C'è un altro frammento di ~ / .config / rncbc.org / QjackCtl.conf per mostrare i comandi completi

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

Varie Lì, "Abilita interfaccia D-Bus" è importante per Qjackctl stesso.

Come funziona

Ora all'avvio il PC funziona solo con PulseAudio. Tutto funziona automaticamente come senza Jack.

Dopo il lancio di Qjackctl,

  1. Lo script Qjackctl Startup sospende la scheda audio principale in Plseuaudio e consente a Jackj di accedervi "pactl suspend-sink alsa_output.pci-0000_00_1b.0.analog-stereo 1"
  2. Jack ha avviato il d-bus "jack_control start"
  3. Pulse rileva automaticamente l'avvio del jack su D-Bus e carica il sink jack e la sorgente del jack.
  4. Qjackctl dopo lo script di avvio cambia il sink predefinito in Pulse in jack_out. (L'ho incontrato non è stato fatto da solo) "pactl set-default-sink jack_out" (all'inizio sembra inutile, poiché tutti i client PA in esecuzione sono passati al nuovo sink, ma le nuove app sono bloccate sul sink sospeso senza questo comando)

Quindi il sistema è stato riconfigurato per utilizzare "Pulse on top of Jack". (Lì ignoro la sospensione dell'ingresso hardware, perché non lo uso comunque)

Se l'opzione "Arresta il server audio JACK all'uscita dell'applicazione" non è selezionata, posso chiudere Qjackctl ed eseguire nuovamente l'installazione senza disturbare.

Dopo aver fermato Jack di Qjackctl, tutti tornano a Pulse ordinatamente ordinato!

  1. Jackd stop di Qjackctl su dbus - opzione "Abilita interfaccia D-bus".
  2. jack-source e jack-sink rimossi da Pulseaudio automaticamente da d-bus
  3. sink predefinito nell'audio Pulse passato alla scheda audio perché il jack-out scompare
  4. Qjackctl dopo lo script di spegnimento riattiva la scheda audio in Pulseaudio "pactl suspend-sink alsa_output.pci-0000_00_1b.0.analog-stereo 1"

Strumenti utilizzati

  1. jackd (dal pacchetto pulseaudio-utils)
  2. jack_control (dal pacchetto ack-audio-connection-kit-dbus)
  3. Qjackctl (dal pacchetto pulseaudio-utils)
  4. pactl per controllare Pulseaudio dagli script (dal pacchetto pulseaudio-utils)

Questa risposta non è esplicita su come viene eseguita la configurazione. Viene eseguito esclusivamente tramite Qjackctl? In tal caso, in quali file sono presenti le impostazioni di configurazione e come vengono impostati?
Faheem Mitha,

Configurazione iniziale effettuata tramite gestore pacchetti. jackg start / stop riconfigurazione tramite script jack-audio-connection-kit-dbus e Qjackctl.
mmv-ru,

Vedo. Alcuni dettagli in tal senso sarebbero estremamente utili. Questi dettagli mancano in particolare di altre risposte e informazioni in rete. Preferirei non configurare le cose tramite una GUI, se possibile. Sei di solito in chat AU? In tal caso, possiamo discuterne lì.
Faheem Mitha,

Qjackctl può essere configurato tramite gui come mostrano gli screenshot. In Reply mostro parti di .config / rncbc.org / QjackCtl.conf per mostrare linee complete di script.
mmv-ru,

Non abbastanza reputazione da invitare a chattare. Invitami.
mmv-ru,

7
  • Il problema è che Hydrogen (come Ardor) lancia jackd all'avvio ma non lo chiude all'uscita:
    Ma puoi correre killall jackdin un terminale dopo l'uscita Hydrogen.

  • Un modo complicato di utilizzare contemporaneamente Jack e il software pulseaudio è installare "pulseaudio-module-jack" (installare anche qjackctl (gui per jackd) e pavucontrol se non presente). Riavvia pulseaudio pulseaudio -k.
    Ora chiudi le app audio (Jack e pulseaudio),
    esegui jackd usando qjackctl (fai clic sul pulsante Start) ( l'opzione dbus deve essere selezionata nell'ultima scheda delle impostazioni qjackctl ).
    Nella scheda "dispositivo di output" di Pavucontrol, fare clic sul pulsante verde "dispositivo predefinito" vicino a "jack sink".
    Ora il software pulseaudio e Hydrogen dovrebbero funzionare contemporaneamente.

  • Usando qjackctl, nella prima scheda "impostazioni", puoi cambiare il dispositivo audio Jackd.


3

Ora potrebbe essere molto più semplice. Ciò che ha funzionato per me oggi, per soddisfare le mie esigenze di base, dopo una nuova installazione di Linux Mint 18.2 (pacchetto base Ubuntu 16.04) è stato:

  1. Utilizzare Synaptic per installare QSynth e QJackCtl.

  2. Copia i font audio richiesti in una cartella appropriata come /usr/share/sounds/sf2/

  3. In Setup Qsynth : sotto Audio cambiamento scheda Audio Driver per pulseaudio .

  4. In QSynth Setup : sotto SoundFonts : Apri ... e selezionane uno come richiesto.

  5. In QJackCtl Setup> Impostazioni> Avanzate :

    Prefisso server: pasuspsender - /usr/bin/jackd

  6. In QJackCtl Setup> Opzioni :

    Esegui script dopo l'avvio:

    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 : unisci la voce della tastiera a sinistra al FLUID Synth a destra.

  8. Nelle Impostazioni di sistema principali per Audio, selezionare il dispositivo di output richiesto.

Ora posso suonare la tastiera mentre guardo un video (ad esempio su YouTube usando Firefox per esempio) - in precedenza potevo fare solo uno di questi alla volta senza molte modifiche di cui raramente potevo tenere traccia.

Spero che aiuti qualcuno o li incoraggi a riprovare :-).


2

Il modo più semplice per eseguire il routing di tutti i sistemi con jack:

Installare

sudo apt-get install qjackctl pulseaudio-module-jack

Apri qjackctl. In Setup> Opzioni>

Controlla Esegui script dopo l'avvio e incolla questo:

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

Controlla Esegui script dopo l'arresto e incolla questo:

killall jackd

Ora avvia qjack e apri le tue impostazioni audio. Troverete la porta di uscita del dissipatore Jack Pulse Audio. Selezionalo e tutto il sistema si sincronizzerà. Se si interrompe Jack server / qjack, l'audio tornerà nuovamente alla porta predefinita.

Ecco la visione d'insieme


0

Naturalmente uno vorrà sia pulseaudio che jack in esecuzione se sono arrivati ​​al punto in cui hanno bisogno di jack poiché la maggior parte dei lettori multimediali del browser non conoscono jack! ..Sfortunatamente.

Continuavo a vedere il suggerimento di far correre solo uno di loro alla volta, che mi sembra un compromesso così terribile. È un po 'tragico secondo me che questi due servizi, ad esempio jack e pulseaudio, sebbene entrambi funzionanti da soli siano gestiti in modo così scadente da kxstudio, che è quello che sto usando.

Quindi quello che succede è:

  • jack non può avviarsi mentre pulseaudio è in esecuzione (e usando il driver della scheda audio vuole usare quale è abbastanza giusto) quindi deve essere avviato prima

  • pulseaudio deve essere puntato su jack una volta sia attivo che funzionante

Abbastanza semplice..ey? Per alcune ragioni, ho avuto un dolore senza fine perché ...

Innanzitutto penso che pulseaudio 4.0 sembra essere difettoso e rovinare il driver alsa in modo che in alcune situazioni lo lasci bloccato e quindi il jack non può avviarsi anche se pulseaudio non è in esecuzione. (Dice che non è stato possibile impostare i parametri di acquisizione o smtg in quel modo)

Quello che ho fatto alla fine è stato

  • rimosso completamente sia jack che pulseaudio (con find e rm -rf: D dopo apt-get purge)
  • pulseaudio 11 installato (da fonti)
  • jack installato ed è libs (libjack-dev)

in questo ordine e poi finalmente li ho fatti funzionare normalmente attraverso qjackctl, il che si assicura che si avviino nel modo corretto (carica il sink di jack in pulseaudio e lo imposta come predefinito).

A proposito, ho visto invece Cadence raccomandato e non capisco perché a me sembra spazzatura rispetto a qjackctl.

Ad ogni modo, il problema è che avviare jack usando qjackctl richiede un po 'di tempo e per evitare i tempi di attesa ad ogni avvio puoi usare questa funzione di salvataggio di kde che è quella di caricare la sessione precedente. Assicurati di non avere qjackctl in avvio automatico, poiché finirai con un'istanza in più ad ogni riavvio, indipendentemente dall'impostazione singleton = true (buggy buggy per tutta la notte).

Questo perché non mi sentivo più a disagio con esso, come scrivere uno script intelligente che assicurerà che pulseaudio è inattivo (o sospeso) e controlla che sia avviato correttamente, quindi avvia pulseaudio, modulo jack di caricamento ecc.

Altrimenti, fare affidamento sul sistema operativo per avviare i demoni e caricare correttamente la configurazione sarebbe lo scenario normale (salutare), tuttavia non sembra accadere.

Divertiti..


0

Sto eseguendo Linux Mint 19.1. Dopo aver provato tutte le varie soluzioni, le cose continuano a non funzionare senza problemi per me.

Infine, sono stato in grado di risolvere tutti i miei problemi seguendo i passaggi / le istruzioni nel video: Link

Fondamentalmente, installa applicazioni dai repository di Kxstudio. e hanno uno script per configurare tutto perfettamente all'avvio.

Il mio obiettivo finale era quello di essere in grado di registrare l'input attraverso la mia interfaccia (Scarlett solo) mentre di essere in grado di eseguire / registrare l'audio da altre applicazioni (desktop, browser)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.