55 votes

Comment utiliser JACK et Pulseaudio/ALSA en même temps sur le même appareil audio ?

Chaque fois que je lance Hydrogen, cela casse mon audio dans toutes les autres applications qui utilisent Pulse, par exemple, je ne peux plus lire de vidéos dans Chrome après avoir lancé Hydrogen une fois, jusqu'à ce que je redémarre mon PC ou que je fasse sudo alsa force-reload. J'ai trouvé des gens avec des problèmes similaires, mais pas de guide pour résoudre ce problème, souvent il y a des liens vers http://jackaudio.org/pulseaudio_and_jack (qui a déménagé à http://jackaudio.org/faq/pulseaudio_and_jack.html ) J'utilise Ubuntu Studio 14.04 64bit.

ALTERNATIVEMENT, si c'est vraiment impossible à réaliser, quelqu'un peut-il me dire comment utiliser Jack sur une carte son et Pulse sur une autre ? De cette façon, je pourrais brancher une carte son USB uniquement lorsque j'ai besoin de JACK.

S'il vous plaît, ne me faites pas utiliser Windows.

55voto

José Micó Points 566

A partir de la 16.04, les choses deviennent beaucoup plus simples :)

Il suffit d'installer qjackctl y pulseaudio-module-jack module :

apt-get install qjackctl pulseaudio-module-jack

Ensuite, configurez qjackctl pour exécuter la commande suivante après le démarrage. Copiez-la dans "Configuration..." > "Options" > "Exécuter script après le démarrage" :

pacmd set-default-sink jack_out

Et c'est tout. Pulseaudio reconnaîtra (par le biais du D-Bus) que JACK a démarré, et acheminera automatiquement l'audio vers lui. Lorsque JACK est arrêté, Pulseaudio reviendra au routage normal et recommencera à envoyer l'audio directement à la carte.

Ainsi, Pulseaudio met en œuvre (presque) par défaut la configuration détaillée ci-dessus par mmv-ru.

21voto

RobinsSea Points 311

Cette vidéo Youtube : "Jack et PulseAudio ensemble comme des amis - Linux" semblait avoir des réponses :

La clé de la solution semble être de s'assurer que pulseaudio-module-jack est installé avec :

aptitude install pulseaudio-module-jack

puis sudo éditer le fichier /etc/pulse/default.pa pour inclure deux lignes sous la section load audio drivers manually :

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

puis - je pense - redémarrer pulseaudio. J'ai juste redémarré le PC (paresseux, je sais) et ça a marché à merveille... le démarrage d'Ardour ne tue plus pulseaudio, ils jouent joyeusement ensemble.

11voto

Dark Star1 Points 1345

Ma solution fonctionne sur Fedora 23.

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

Ne pas toucher à /etc/pulse/default.pa !

Configurer qjackctl

Settings

Le fragment pertinent de ~/.config/rncbc.org/QjackCtl.conf :

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

Options

Les noms des puits pour pactl peuvent être trouvés par :

pacmd list-sinks

Voici un autre fragment de ~/.config/rncbc.org/QjackCtl.conf pour montrer les commandes complètes

[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 "Activer l'interface D-Bus" est important pour Qjackctl lui-même.

Comment cela fonctionne

Maintenant, au démarrage, le PC fonctionne uniquement avec PulseAudio, tout fonctionne automatiquement comme sans Jack.

Après avoir lancé Qjackctl,

  1. Le démarrage Qjackctl script suspend la carte audio primaire dans Pulseaudio et permet à Jack d'y avoir accès : pactl suspend-sink alsa_output.pci-0000_00_1b.0.analog-stereo 1
  2. Jack est démarré par le d-bus : jack_control start
  3. Pulse détecte automatiquement le démarrage du jack sur le D-Bus et charge le puits du jack et la source du jack.
  4. Qjackctl après le démarrage script change le sink par défaut dans Pulse en jack_out : pactl set-default-sink jack_out (au début, cela semble inutile, car tous les clients PA en cours d'exécution sont basculés vers le nouveau puits, mais les nouvelles applications seront bloquées sur le puits suspendu sans cette commande).

Le système est donc reconfiguré pour utiliser "Pulse on top of Jack". (Je saute la suspension d'entrée matérielle, car je ne l'utilise pas de toute façon)

Si l'option "Stop JACK audio server on application exit" n'est pas cochée, je peux fermer Qjackctl et le relancer sans perturber la configuration.

Après l'arrêt de Jack par Qjackctl, tout revient à un Pulse clair et net !

  1. Jackd arrêté par Qjackctl over dbus - option "Enable D-bus interface".
  2. jack-source et jack-sink sont retirés de Pulseaudio automatiquement par d-bus
  3. le puits par défaut dans Pulse audio est commuté sur la carte audio car la sortie jack disparaît.
  4. Qjackctl after Shutdown script réactive la carte audio dans Pulseaudio : pactl suspend-sink alsa_output.pci-0000_00_1b.0.analog-stereo 1

Outils utilisés

  1. jackd (du paquet pulseaudio-utils)
  2. jack_control (du paquet ack-audio-connection-kit-dbus)
  3. Qjackctl (du paquet pulseaudio-utils)
  4. pactl pour contrôler Pulseaudio à partir de scripts (du paquet pulseaudio-utils)
  5. LANG=C pacmd list-sinks|grep -E "index:|name:|alsa.long_card_name =|alsa.name =" o LANG=C pactl list sinks|grep -E "(Sink #|Name:|alsa.long_card_name =|alsa.name =)" pour détecter le nom du dispositif alsa

7voto

laugeo Points 2689
  • Le problème est que Hydrogen (comme Ardour) lance jackd au démarrage mais ne le ferme pas à la sortie :
    Mais tu peux courir killall jackd dans un terminal après la sortie de l'hydrogène.

  • Une manière compliquée d'utiliser les logiciels Jack et pulseaudio en même temps est d'installer "pulseaudio-module-jack" (installez également qjackctl (gui pour jackd) et pavucontrol s'ils ne sont pas présents). Redémarrez pulseaudio pulseaudio -k .
    Fermez maintenant les applications audio (Jack et pulseaudio),
    exécuter jackd en utilisant qjackctl (cliquer sur le bouton de démarrage) ( l'option dbus doit être sélectionnée dans le dernier onglet des paramètres de qjackctl ).
    Dans l'onglet "output device" de Pavucontrol, cliquez sur le bouton vert "default device" près de "jack sink".
    Maintenant le logiciel pulseaudio et Hydrogen devraient fonctionner en même temps.

  • En utilisant qjackctl, dans le premier onglet "settings", vous pouvez changer le périphérique audio Jackd .

7voto

Le moyen le plus simple d'acheminer tout le système pour qu'il fonctionne avec jack :

Installer

sudo apt-get install qjackctl pulseaudio-module-jack

Ouvrez qjackctl. Dans Setup>Options>

Cochez Execute script after Startup et collez ceci :

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

Cochez Execute script after Shutdown et collez ceci :

killall jackd

Maintenant, lancez qjack et ouvrez vos paramètres sonores. Vous trouverez le port de sortie Pulse Audio Jack Sink. Sélectionnez-le et tout le système sera synchronisé. Si vous arrêtez le serveur Jack/qjack, le son reviendra à votre port par défaut.

[Voici la vue d'ensemble]

enter image description here

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X