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.

7voto

Jérôme Points 171

Mise à jour 2020. Buster Debian. Avec un peu de chance, applicable à Ubuntu également.

Plus besoin d'utiliser un script.

Installer pulseaudio-module-jack . Il contient un module responsable de la détection du démarrage du vérin et du sourcing/introduction de celui-ci.

Vous pouvez vérifier cela dans le fichier de configuration de pulseaudio :

/etc/pulse/default.pa

### Automatically connect sink and source if JACK server is present
.ifexists module-jackdbus-detect.so
.nofail
load-module module-jackdbus-detect channels=2
.fail
.endif

Assurez-vous que jackdbus est démarré. Si vous utilisez qjackctl pour lancer jack, cochez la case dbus dans Setup -> Misc.

Cela devrait être tout ce qu'il faut.

6voto

Bruno Grieder Points 191

Ubuntu 20.04 J'ai trouvé que c'était un mélange de plusieurs réponses.

  1. Installer JACK et QJackCtl ainsi que le sink et le source pulseaudio pour JACK

    sudo apt-get install qjackctl pulseaudio-module-jack

  2. Lancez QJackCtl et dans Setup... --> Options --> Execute script after Startup coller les éléments suivants :

    pactl load-module module-jack-sink channels=2; pactl load-module module-jack-source; pacmd set-default-sink jack_out

enter image description here

  1. Démarrez JACK, dans QJackCtl, le Sink et la Source de PulseAudio doivent être connectés au système. enter image description here

  2. Dans les paramètres d'Ubuntu, sélectionnez le puits JACK comme sortie.

enter image description here

4voto

Kim Tucker Points 41

Ça pourrait être beaucoup plus facile maintenant. Ce qui a fonctionné pour moi aujourd'hui, pour satisfaire mes besoins vraiment basiques, après une nouvelle installation de Linux Mint 18.2 (Ubuntu 16.04 package base) a été :

  1. Utilisez Synaptic pour installer QSynth et QJackCtl.

  2. Copiez la ou les polices de son requises dans un dossier approprié tel que /usr/share/sounds/sf2/

  3. En Configuration de QSynth : sous Audio changement d'onglet Pilote audio a pulseaudio .

  4. En Configuration de QSynth : sous SoundFonts : Ouvrir ... et sélectionnez-en un selon vos besoins.

  5. En Configuration de QJackCtl > Paramètres > Avancé :

    Préfixe du serveur : pasuspsender -- /usr/bin/jackd

  6. En Configuration de QJackCtl > Options :

    Exécuter script après le démarrage :

    pactl load-module module-jack-sink channels=2; pactl load-module module-jack-source; pacmd set-default-sink jack_out
  7. En QJackCtl Connect : ALSA : joindre l'entrée clavier de gauche à FLUID Synth à droite.

  8. Dans l'essentiel Paramètres du système pour le son, sélectionnez le périphérique de sortie requis.

Je peux maintenant jouer du clavier tout en regardant une vidéo (par exemple sur YouTube en utilisant Firefox). Auparavant, je ne pouvais faire qu'une seule de ces choses à la fois sans un grand nombre de réglages dont je pouvais rarement garder la trace.

J'espère que cela aidera quelqu'un, ou l'encouragera à réessayer :-).

3voto

tobiasBora Points 2018

Il y a deux façons de répondre à cette question.

  1. Soit vous essayez de faire fonctionner Jack avec pulseaudio... le reste de cette question vous expliquera comment faire.
  2. Ou... n'essayez pas d'utiliser à la fois pulseaudio et jack, remplacez-les simplement par du fil de fer : pipewire est censé être "le nouveau pulseaudio" (il devrait remplacer pulseaudio à certains endroits je pense, et est déjà beaucoup moins bogué que pulseaudio et supporte plus d'options Bluetooth). Pipewire émule pulseaudio et jack en même temps, et peut être utilisé de manière transparente avec pulseaudio/qjackctl/... pour connecter des applications pulseaudio et jack ensemble (en fait, pipewire ne fait pas beaucoup de différence entre les applications pulseaudio et jack... la plupart du temps, je ne suis même pas sûr si l'application que j'utilise tourne avec jack ou pulseaudio). Si vous voulez vraiment vous faire mal et utiliser pulseaudio + jack... le reste de cette question est pour vous.

Il y a quelque temps, j'ai écrit une commande, et quelqu'un m'a signalé qu'après avoir essayé toutes les solutions ici, il n'avait pas de chance. Mais cette solution a fonctionné pour lui, donc je vais la poster ici au cas où quelqu'un d'autre pourrait être aidé. NB : Je ne prétends pas que cette solution est la plus élégante, mais elle a fait le travail assez bien pour moi :

  • Je peux démarrer/arrêter jack en cliquant simplement sur le bouton start/stop et le passage est automatique entre pulseaudio et pavucontrol.
  • il connecte automatiquement tous les logiciels de lecture actuels à jack (c'est pourquoi il y a cet affreux grep, faites-moi savoir si vous avez une meilleure solution)
  • il s'assure également que l'application pulseaudio peut aussi utiliser les microphones

Cette solution peut être légèrement améliorée en déchargeant correctement les modules en quittant Jack, peut-être en utilisant l'horrible grep proposé. ici mais je n'ai pas vraiment trouvé de bénéfice pour moi.

Notez également que je donne des instructions assez détaillées sur la façon de déboguer de tels problèmes.

Ma solution (voir la théorie ci-dessous pour comprendre pourquoi elle fonctionne/échoue et déboguer tout problème potentiel)

Installez :

$ sudo apt install jack2 pavucontrol qjackctl pulseaudio-module-jack. 

Lancez qjackctl :

$ qjackctl

enter image description here

Cliquez sur Setup et vérifiez que l'interface de sortie est la bonne (si vous avez une sortie HDMI par exemple, cette vérification peut être importante). Dans mon cas, je vais simplement utiliser la valeur par défaut et je reviendrai ici si j'ai des problèmes plus tard. enter image description here

Ensuite, dans l'onglet avancé, j'ai remplacé le Préfixe du serveur jackd avec pasuspender -- jackd . Ceci est censé dire à pulseaudio de laisser temporairement Jack gérer la carte son. Je ne suis pas sûr que ce soit vraiment nécessaire, mais je pense que ça ne peut pas faire de mal : enter image description here

Ensuite, dans l'onglet "Options", mettez dans le champ Execute script after Startup le code suivant :

pactl load-module module-jack-sink && pactl load-module module-jack-source && pactl set-default-sink jack_out && pacmd set-default-source jack_in && pacmd list-sink-inputs | grep index | sed 's/ *index: *//g' | xargs -I{} pacmd move-sink-input "{}" jack_out

Le but de cette commande est de créer une nouvelle sortie (sink) vers pulseaudio qui pointe vers jack, d'activer ce nouveau sink par défaut (toutes les applications nouvellement ouvertes écriront vers jack), et il modifie également la sortie de toutes les applications existantes pour s'assurer qu'elles pointent vers jack.

Ensuite, pour s'assurer que pulseaudio redémarre lorsque jack est fermé, j'ai également ajouté dans le champ Execute script after Shutdown :

pacmd suspend false

enter image description here

C'est ça ! Maintenant, il ne vous reste plus qu'à sauvegarder en cliquant sur Apply et de cliquer sur Start pour commencer le cric :

enter image description here Vous devriez voir quelque chose comme cela si cela fonctionne (et bien sûr aucune erreur) : enter image description here

Un peu de théorie pour comprendre pourquoi ça marche ou pourquoi ça ne marche pas.

Donc, en gros, vous ne pouvez pas lire le son parce qu'un seul programme peut lire le son en même temps sur la même carte son. Ainsi, lorsque Jack joue, pulseaudio est bloqué. Maintenant, il s'avère également que la plupart des applications de bureau peuvent parler à pulseaudio mais pas à Jack. Donc quand Jack est en marche, vous n'avez plus de son. L'astuce est de router le trafic pulseaudio vers Jack avec quelque chose comme ça :

application -> pulseaudio -> Jack -> sound card

Notez que tous les liens doivent être correctement configurés. Nous allons voir maintenant comment ils sont configurés et comment vérifier s'ils sont correctement configurés.

Donc pour créer le lien pulseaudio -> Jack nous allons charger un module qui crée un nouveau puits pulseaudio (c'est à dire un périphérique de sortie virtuel) appelé Jack sink De cette façon, toutes les applications qui écrivent dans ce puits seront redirigées sur Jack. Vous pouvez avoir plusieurs puits déjà existants, comme un pour l'audio interne, et si vous avez un casque bluetooth, vous pouvez avoir un puits pour lui aussi. Pour vérifier sur quel sink une application est en train de jouer, installez et exécutez pavucontrol ( pavucontrol est de toute façon super utile pour tout ce qui concerne le son, puisque vous pouvez tout contrôler à partir de lui). Vous pouvez voir la liste des puits dans un onglet nommé comme suit Input devices (désolé si la traduction est mauvaise), dans mon cas j'ai actuellement 2 éviers (le jack n'est pas encore chargé) : enter image description here

Si vous n'avez qu'un seul puits, vous ne verrez peut-être rien d'intéressant, mais si vous avez plusieurs puits, vous pouvez vérifier dans le premier onglet quelle application joue sur quel puits (ici vous voyez que firefox joue sur mon casque bluetooth), et vous pouvez le changer si nécessaire :

enter image description here

Donc si vous avez des problèmes, vous pouvez :

  1. lien pulseaudio -> jack : vérifiez que vous avez un évier correspondant à jack (si ce n'est pas le cas, essayez d'exécuter manuellement la commande pactl load-module module-jack-sink qui était censé être exécuté automatiquement. Si cela échoue, vérifiez que vous avez installé le fichier pulseaudio-module-jack et éventuellement redémarrer pulseaudio en le tuant simplement killall pulseaudio . Pas d'inquiétude, pas besoin de redémarrer pulseaudio, il respawn automatiquement). Assurez-vous également que le volume n'est pas à 0%, et que le canal n'est pas coupé : enter image description here
  2. lien application -> pulseaudio : vérifiez que vos applications écrivent sur cet évier. Si ce n'est pas le cas, vous pouvez changer manuellement le sink (mais le script de démarrage était censé changer le sink automatiquement) de cette façon : enter image description here
  3. lien jack -> sound card : Si vous avez encore des problèmes (cette partie peut aussi concerner un problème que vous avez avec les logiciels qui écrivent directement sur le jack comme zynaddsubfx ), consultez le Graph une partie de Jack :

enter image description here

Vous devriez commencer par regrouper tous les nœuds, mais vous pouvez les déplacer pour les rendre plus visibles. Ensuite, assurez-vous que toutes les applications que vous voulez écouter sont connectées à system (dans mon cas zynaddsubfx n'a pas été connecté automatiquement). NB : si vous avez une ancienne version de QJackctl, alors vous pouvez avoir des onglets à la place de ceci. Mais c'est la même chose : vous aurez des entrées/sorties vertes dans l'onglet "Jack" que vous pouvez connecter manuellement, les violettes seront dans l'onglet "Alsa", et les rouges dans l'onglet "MIDI"... mais en fait tous les périphériques MIDI externes que vous branchez apparaîtront dans l'onglet Alsa : la raison est qu'il y a deux sortes de "MIDI" : l'ancien Alsa Midi (les ports sont globaux au système), et le plus récent Jack Midi (chaque application peut avoir ses propres entrées/sorties midi).

enter image description here

  1. Problèmes avec le MIDI : En théorie, pour obtenir du midi, il suffit de connecter les entrées violettes aux entrées violettes (ou dans l'onglet Alsa dans l'ancienne version, oui je sais c'est étrange que vous devez aller dans l'onglet Alsa et non Midi pour obtenir du Midi( !!!) mais c'est à cause de la différence entre Alsa MIDI vs le Jack Midi plus récent mais moins utilisé). Cependant, il s'avère que pour certaines raisons étranges, zynaddsubfx a des valeurs par défaut étranges et apparaîtra comme "Midi/rouge" au lieu de "Alsa/vert", rendant impossible la connexion à un périphérique midi externe. Plus précisément, si vous exécutez zynaddsubfx à partir de la ligne de commande sans aucune option ou avec :

    zynaddsubfx -I alsa -O jack

(ce qui signifie l'entrée de Alsa MIDI, la sortie à jack) il ne devrait pas être un problème, vous serez en mesure de connecter les dispositifs MIDI :

enter image description here

Cependant, si vous l'exécutez de manière graphique, l'entrée Jack par défaut exécute automatiquement zynaddsubfx -I jack -O jack à la place... Et il y aura le problème que le zynaddsubfx sera créée dans l'onglet rouge/MIDI, tandis que le dispositif MIDI externe réel se trouve dans l'onglet violet/Alsa. Cela signifie donc que vous ne serez pas en mesure d'affecter votre clavier MIDI externe à l'entrée suivante zynaddsubfx :

enter image description here

La solution consiste donc à exécuter zynaddsubfx en utilisant la ligne de commande sans options, ou avec zynaddsubfx -I alsa -O midi et tout devrait fonctionner !

0voto

Alex Points 138

Bien sûr, on voudra faire fonctionner à la fois pulseaudio et jack si l'on en arrive au point où l'on a besoin de jack, car la plupart des lecteurs multimédia par navigateur ne connaissent pas le jack ! malheureusement.

Je n'ai cessé de voir la suggestion de n'en faire fonctionner qu'un seul à la fois, ce qui me semble être un compromis terrible. C'est un peu tragique à mon avis que ces deux services, c'est-à-dire jack et pulseaudio, bien que tous deux fonctionnels par eux-mêmes, soient si mal gérés par kxstudio, du moins ce que j'utilise.

Donc ce qui se passe est :

  • jack ne peut pas démarrer alors que pulseaudio est en cours d'exécution (et utilise le pilote de carte son qu'il veut utiliser, ce qui est normal), il doit donc être démarré en premier.

  • pulseaudio doit être pointé vers jack une fois les deux en place et en fonctionnement

Plutôt simple ey ? Pour certaines raisons, j'ai eu des problèmes sans fin avec ça parce que

Tout d'abord, je pense que pulseaudio 4.0 semble être bogué et perturber le pilote alsa de sorte que dans certaines situations, il le laisse verrouillé et donc jack ne peut pas démarrer même si pulseaudio n'est pas en cours d'exécution. (Il dit qu'il n'a pas réussi à définir les paramètres de capture ou quelque chose comme ça).

Ce que j'ai fait à la fin était

  • J'ai supprimé complètement jack et pulseaudio (avec find et rm -rf :D après apt-get purge).
  • installé pulseaudio 11 (à partir des sources)
  • installation de jack et de ses librairies (libjack-dev)

dans cet ordre et puis j'ai finalement réussi à les faire fonctionner normalement grâce à qjackctl qui s'assure qu'ils démarrent de la bonne manière (charge le jack sink dans pulseaudio, et le met par défaut).

En fait, j'ai vu que Cadence est recommandé à la place et je ne comprends pas pourquoi, car pour moi, il semble nul comparé à qjackctl.

Quoi qu'il en soit, le problème est que le démarrage d'un jack à l'aide de qjackctl prend un certain temps et pour éviter les temps d'attente à chaque démarrage, vous pouvez utiliser cette fonction de sauvetage de kde qui consiste à charger la session précédente. Assurez-vous que vous n'avez pas qjackctl en démarrage automatique car vous vous retrouverez avec une instance de plus à chaque redémarrage sans tenir compte du paramètre singleton = true (buggy buggy toute la nuit).

C'est parce que je n'avais pas envie de bricoler plus longtemps, comme écrire un script intelligent qui s'assurera que pulseaudio est en panne (ou suspendu), lancera jack et vérifiera qu'il a démarré correctement, puis lancera pulseaudio, chargera le module jack, etc.

Sinon, compter sur le système d'exploitation pour démarrer les démons et charger correctement la configuration serait le scénario normal (sain), mais cela ne semble pas se produire.

Amusez-vous bien.

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