¿Cómo usar JACK y Pulseaudio / ALSA al mismo tiempo en el mismo dispositivo de audio?


30

Cada vez que lanzo hidrógeno, interrumpe mi audio en todas las demás aplicaciones que usan Pulse, por ejemplo, ya no puedo reproducir videos en Chrome después de haber lanzado Hydrogen una vez, hasta que reinicie mi PC o sudo alsa forzar la recarga. He encontrado personas con problemas similares, pero no hay una guía real para solucionar esto, a menudo hay enlaces a http://jackaudio.org/pulseaudio_and_jack (que se ha movido a http://jackaudio.org/faq/pulseaudio_and_jack.html ) I Estoy usando Ubuntu Studio 14.04 64bit.

ALTERNATIVAMENTE si esto es realmente imposible de lograr, ¿alguien puede decirme cómo usar Jack en una tarjeta de sonido y Pulse en otra? De esta manera, podría enchufar una tarjeta de sonido USB solo cuando necesite JACK.

Por favor no me hagas usar Windows.


Después de más investigación, parece que hay algunas maneras de hacer que esto funcione, vea aquí: github.com/jackaudio/jackaudio.github.com/wiki/… Sin embargo, en mi caso, todos estos eliminan toda la salida de audio de forma permanente.
Andreas Hartmann

Respuestas:


24

A partir del 16.04, las cosas se vuelven mucho más simples :)

Simplemente instale qjackctly pulseaudio-module-jackmodifique:

apt-get install qjackctl pulseaudio-module-jack

Luego configure qjackctlpara ejecutar el siguiente comando después del inicio. Cópielo en "Configuración ..."> "Opciones"> "Ejecutar secuencia de comandos después del inicio":

pacmd set-default-sink jack_out

Y eso es. Pulseaudio reconocerá (a través de D-Bus) que JACK comenzó, y automáticamente le enviará el audio. Cuando se detiene JACK, Pulseaudio volverá al enrutamiento normal y comenzará a enviar audio directamente a la tarjeta nuevamente.

Entonces (casi) por defecto, Pulseaudio implementa la configuración detallada anteriormente por mmv-ru.


¡Esta es la solución más fácil que he visto hasta ahora! ¡Por fin puedo usar Jack sin silenciar todo lo demás! Gracias.
kapcom01

8
pactl set-default-sink jack_out -> "Falla: no existe tal entidad"
Karl Morrison

1
esto funcionó para mí cuando otras soluciones no lo hicieron, muchas gracias!
malte

2
El comando correcto es 'pacmd set-default-sink jack_out'. ¡Desafortunadamente no puedo corregir la respuesta porque una edición debe tener más de 6 caracteres! :-(
Todd Chaffee

2
@KarlMorrison, probablemente necesite ejecutar pactl load-module module-jack-sink channels=2y pactl load-module module-jack-sourceantes de eso, vea la respuesta de @ kim-tucker.
naktinis

17

Este video de Youtube: "Jack y PulseAudio juntos como amigos - Linux" parecía tener algunas respuestas:

La clave de la solución parecía estar en asegurarse de que pulseaudio-module-jack esté instalado con:

aptitude install pulseaudio-module-jack

luego sudo editando el archivo /etc/pulse/default.pa para incluir dos líneas en la sección cargar controladores de audio manualmente:

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

entonces, creo, reiniciar pulseaudio. Acabo de reiniciar la PC (perezoso, lo sé) y funcionó de maravilla ... encender Ardor ya no mataba a pulseaudio, jugaban felices juntos.


Por cierto, también puede agregar los módulos sobre la marcha, usandopactl load-module ...
0__

9

Acabo de pasar por la búsqueda de la coexistencia de Jack y Pulse en Fedora. Generalmente estoy contento con Pulseaudio, pero a veces necesito audio Jack.

Mi solución trabajando en Fedora 23.

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

¡No toque /etc/pulse/default.pa!

Configurar qjackctl

Configuraciones

Hay un fragmento relevante de ~ / .config / rncbc.org / QjackCtl.conf

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

Opciones los nombres de sumidero para pactl se pueden encontrar por comando:

pacmd list-sinks

Hay un fragmento más de ~ / .config / rncbc.org / QjackCtl.conf para mostrar los comandos completos

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

Misceláneos Allí, "Habilitar interfaz D-Bus" es importante para Qjackctl.

Como funciona

Ahora, en el arranque, la PC funciona solo con PulseAudio. Todo el trabajo automático como sin Jack.

Después del lanzamiento de Qjackctl,

  1. El script de inicio Qjackctl suspende la tarjeta de audio principal en Plseuaudio y permite que Jackj tenga acceso a ella "pactl suspend-sink alsa_output.pci-0000_00_1b.0.analog-stereo 1"
  2. Jack comenzó sobre d-bus "jack_control start"
  3. El pulso detecta automáticamente el inicio del conector sobre D-Bus y el sumidero del conector de carga y la fuente del conector.
  4. Qjackctl después del script de inicio cambia el sumidero predeterminado en Pulse a jack_out. (Me parece que no se hizo por sí mismo) "pactl set-default-sink jack_out" (al principio parece innecesario, ya que todos los clientes PA en ejecución cambiaron a un nuevo sumidero, pero las nuevas aplicaciones se atascaron en el sumidero suspendido sin este comando)

Entonces, el sistema se reconfiguró para usar "Pulse en la parte superior de Jack". (Allí omito la suspensión de entrada de hardware, porque no la uso de todos modos)

Si "Detener el servidor de audio JACK en la aplicación exti" no está marcado, puedo cerrar Qjackctl y volver a ejecutarlo sin alterar la configuración.

¡Después de detener a Jack junto a Qjackctl, todos regresan a su pulso despejado!

  1. Jackd pasa por Qjackctl sobre dbus - Opción "Habilitar interfaz D-bus".
  2. jack-source y jack-sink eliminados de Pulseaudio automáticamente por d-bus
  3. el sumidero predeterminado en el audio Pulse se cambió a la tarjeta de audio porque desaparece la desconexión
  4. Qjackctl después del script de apagado activa la tarjeta de audio nuevamente en Pulseaudio "pactl suspend-sink alsa_output.pci-0000_00_1b.0.analog-stereo 1"

Herramientas utilizadas

  1. jackd (del paquete pulseaudio-utils)
  2. jack_control (del paquete ack-audio-connection-kit-dbus)
  3. Qjackctl (del paquete pulseaudio-utils)
  4. pactl para controlar Pulseaudio desde sctipts (desde el paquete pulseaudio-utils)

Esta respuesta no es explícita sobre cómo se realiza la configuración. ¿Se hace únicamente a través de Qjackctl? Si es así, ¿en qué archivos están los ajustes de configuración y cómo se configuran?
Faheem Mitha

Configuración inicial realizada a través del administrador de paquetes. jackg iniciar / detener la reconfiguración a través de jack-audio-connection-kit-dbus y scripts Qjackctl.
mmv-ru

Veo. Algunos detalles en ese sentido serían extremadamente útiles. Estos detalles faltan notablemente en otras respuestas e información en la red. Prefiero no configurar las cosas a través de una GUI si es posible. ¿Sueles estar en el chat de AU? Si es así, podemos discutirlo allí.
Faheem Mitha

Qjackctl se puede configurar a través de la interfaz gráfica de usuario como muestran las capturas de pantalla. En la respuesta, muestro partes de .config / rncbc.org / QjackCtl.conf para mostrar líneas completas de script.
mmv-ru

No hay suficiente reputación para invitar a chatear. Invitame.
mmv-ru

7
  • El problema es que Hydrogen (como Ardor) lanza jackd al inicio pero no lo cierra al salir:
    pero puede ejecutar killall jackden una terminal después de la salida de Hydrogen.

  • Una forma complicada de usar Jack y el software pulseaudio al mismo tiempo es instalar "pulseaudio-module-jack" (también instalar qjackctl (gui para jackd) y pavucontrol si no está presente). Reinicie pulseaudio pulseaudio -k.
    Ahora cierre las aplicaciones de audio (Jack y pulseaudio),
    ejecute jackd usando qjackctl (haga clic en el botón de inicio) (la opción dbus debe seleccionarse en la última pestaña de configuración de qjackctl ).
    En la pestaña Pavucontrol "dispositivo de salida", haga clic en el botón verde "dispositivo predeterminado" cerca de "jack sink".
    Ahora el software de pulseaudio y el hidrógeno deberían ejecutarse al mismo tiempo.

  • Usando qjackctl, en la primera pestaña "configuración", puede cambiar el dispositivo de audio Jackd.


3

Puede ser mucho más fácil ahora. Lo que funcionó para mí hoy, para satisfacer mis necesidades realmente básicas, después de una nueva instalación de Linux Mint 18.2 (base del paquete Ubuntu 16.04) fue:

  1. Use Synaptic para instalar QSynth y QJackCtl.

  2. Copie las fuentes de sonido requeridas en una carpeta apropiada, como /usr/share/sounds/sf2/

  3. En Configuración QSynth : bajo Audio cambio pestaña Controlador de audio de PulseAudio .

  4. En QSynth Setup : en SoundFonts : Open ... y seleccione uno según sea necesario.

  5. En QJackCtl Setup> Settings> Advanced :

    Prefijo de servidor: pasuspsender - /usr/bin/jackd

  6. En QJackCtl Setup> Opciones :

    Ejecutar script después del inicio:

    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 : une la entrada del teclado a la izquierda al FLUID Synth a la derecha.

  8. En la configuración principal del sistema para sonido, seleccione el dispositivo de salida requerido.

Ahora puedo tocar el teclado mientras veo un video (por ejemplo, en YouTube usando Firefox, por ejemplo). Anteriormente solo podía hacer uno de estos a la vez sin muchos ajustes que rara vez podía seguir.

Espero que ayude a alguien, o lo aliente a intentarlo de nuevo :-).


2

La forma más fácil de enrutar todo el sistema para que se ejecute con jack:

Instalar

sudo apt-get install qjackctl pulseaudio-module-jack

Abra qjackctl. En Configuración> Opciones>

Marque Ejecutar script después del inicio y pegue esto:

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

Marque Ejecutar script después del apagado y pegue esto:

killall jackd

Ahora inicie qjack y abra su configuración de sonido. Encontrará el puerto de salida del sumidero de Audio Pulse Pulse. Selecciónelo y todo el sistema se sincronizará. Si detiene Jack server / qjack, el sonido volverá a su puerto predeterminado nuevamente.

Aquí está la vista general


0

Por supuesto, uno querrá que se ejecuten Pulseaudio y Jack si llegan al punto en que necesitan Jack, ya que la mayoría de los reproductores multimedia de navegador no conocen Jack. ..Desafortunadamente.

Seguí viendo la sugerencia de tener solo uno de ellos corriendo a la vez, lo que me parece un compromiso tan terrible. En mi opinión, es un poco trágico que estos dos servicios, es decir, jack y pulseaudio, aunque ambos funcionales por sí mismos estén tan mal administrados por kxstudio, al menos, que es lo que estoy usando.

Entonces, lo que sucede es:

  • el jack no puede iniciarse mientras pulseaudio se está ejecutando (y usando el controlador de la tarjeta de sonido que quiere usar, lo cual es lo suficientemente justo), por lo que debe iniciarse primero

  • pulseaudio necesita apuntar a jack una vez que esté en funcionamiento

Bastante simple ... ¿eh? Por ciertas razones, tuve un dolor interminable porque ...

Primero, creo que porque pulseaudio 4.0 parece tener errores y estropea el controlador alsa para que en algunas situaciones lo deje bloqueado y, por lo tanto, el jack no puede iniciarse aunque pulseaudio no se esté ejecutando. (Dice que no se pudieron establecer los parámetros de captura o smtg así)

Lo que hice al final fue

  • eliminó completamente tanto jack como pulseaudio (con find y rm -rf: D después de apt-get purge)
  • instalado pulseaudio 11 (de fuentes)
  • Jack instalado y es libs (libjack-dev)

en este orden y finalmente finalmente los ejecuté normalmente a través de qjackctl, lo que garantiza que se inicien de la manera correcta (carga el receptor de clavija en pulseaudio y lo configura por defecto).

Por cierto, vi que se recomienda Cadence en su lugar y no entiendo por qué me parece basura en comparación con qjackctl.

De todos modos, el problema es iniciar el uso de jack usando qjackctl toma un tiempo y para evitar los tiempos de espera en cada arranque, puede usar esta función de salvavidas de kde que es cargar la sesión anterior. Sin embargo, asegúrese de no tener qjackctl en el inicio automático, ya que terminará con una instancia más en cada reinicio, independientemente de la configuración singleton = true (buggy buggy toda la noche).

Esto se debe a que ya no me sentía jugando con él, como escribir un script inteligente que asegure que pulseaudio esté apagado (o suspendido) en el conector de inicio y compruebe que se inició correctamente, luego inicie pulseaudio, cargue el módulo del conector, etc.

De lo contrario, confiar en el sistema operativo para iniciar los demonios y cargar la configuración correctamente sería el escenario normal (saludable), sin embargo, no parece estar sucediendo.

Que te diviertas..


0

Estoy ejecutando Linux Mint 19.1. Después de probar todas las diversas soluciones, las cosas todavía no me funcionarían sin problemas.

Finalmente, pude resolver todos mis problemas siguiendo los pasos / instrucciones en el video: Enlace

Básicamente, instala aplicaciones desde los repositorios de Kxstudio. y tienen un script para configurar todo perfectamente al inicio.

Mi objetivo final era poder grabar la entrada a través de mi interfaz (Scarlett solo) mientras podía ejecutar / grabar sonido desde otras aplicaciones (escritorio, navegador)

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.