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
Le fragment pertinent de ~/.config/rncbc.org/QjackCtl.conf :
[Settings]
Server=jack_control start
Driver=alsa
InDevice="hw:PCH,0"
OutDevice="hw:PCH,0"
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"
"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,
- 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
- Jack est démarré par le d-bus :
jack_control start
- Pulse détecte automatiquement le démarrage du jack sur le D-Bus et charge le puits du jack et la source du jack.
- 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 !
- Jackd arrêté par Qjackctl over dbus - option "Enable D-bus interface".
- jack-source et jack-sink sont retirés de Pulseaudio automatiquement par d-bus
- le puits par défaut dans Pulse audio est commuté sur la carte audio car la sortie jack disparaît.
- 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
- jackd (du paquet pulseaudio-utils)
- jack_control (du paquet ack-audio-connection-kit-dbus)
- Qjackctl (du paquet pulseaudio-utils)
- pactl pour contrôler Pulseaudio à partir de scripts (du paquet pulseaudio-utils)
-
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