Como usar o JACK e o Pulseaudio / ALSA ao mesmo tempo no mesmo dispositivo de áudio?

30

Sempre que inicio o hidrogênio, ele interrompe meu áudio em todos os outros aplicativos que usam o Pulse, por exemplo, não consigo mais reproduzir vídeos no Chrome depois de ter iniciado o Hydrogen uma vez, até reiniciar o PC ou fazer o sudo também como força-recarregada. Encontrei pessoas com problemas semelhantes, mas não há um guia real para corrigir isso, geralmente existem links para http://jackaudio.org/pulseaudio_and_jack (que foi movido para http://jackaudio.org/faq/pulseaudio_and_jack.html ) I Estou usando o Ubuntu Studio 14.04 64bit.

ALTERNATIVAMENTE, se isso é realmente impossível de conseguir, alguém pode me dizer como usar Jack em uma placa de som e Pulse em outra? Dessa forma, eu poderia conectar uma placa de som USB apenas quando precisar do JACK.

Por favor, não me faça usar janelas.

Andreas Hartmann
fonte
Após mais pesquisas, parece haver algumas maneiras de fazer isso funcionar, veja aqui: github.com/jackaudio/jackaudio.github.com/wiki/… No entanto, no meu caso, todas elas eliminam permanentemente toda a saída de áudio.
Andreas Hartmann

Respostas:

24

A partir de 16.04, as coisas se tornam muito mais simples :)

Basta instalar qjackctle pulseaudio-module-jackmódulo:

apt-get install qjackctl pulseaudio-module-jack

Em seguida, configure qjackctlpara executar o seguinte comando após a inicialização. Copie-o em "Configuração ..."> "Opções"> "Executar script após a inicialização":

pacmd set-default-sink jack_out

E é isso. O Pulseaudio reconhecerá (através do D-Bus) que o JACK foi iniciado e encaminhará automaticamente o áudio para ele. Quando o JACK for parado, o Pulseaudio voltará ao roteamento normal e começará a enviar o áudio diretamente para o cartão novamente.

Então (quase) por padrão, o Pulseaudio implementa a configuração detalhada acima por mmv-ru.

José Micó
fonte
Esta é a solução mais fácil que eu já vi até agora! Finalmente eu posso usar jack sem silenciar tudo o resto! Obrigado.
Kapcom01 09/07/19
8
pactl set-default-pia jack_out -> "Falha: Nenhum tal entidade"
Karl Morrison
1
isso funcionou para mim quando outras soluções não, muito obrigado!
malte
2
O comando correto é 'pacmd set-default-sink jack_out'. Infelizmente, não consigo corrigir a resposta porque uma edição deve ter mais de 6 caracteres! :-(
Todd Chaffee
2
@KarlMorrison, você provavelmente precisará executar pactl load-module module-jack-sink channels=2e, pactl load-module module-jack-sourceantes disso, consulte a resposta @ kim-tucker.
naktinis
17

Este vídeo do YouTube: "Jack e PulseAudio juntos como amigos - Linux" parecia ter algumas respostas:

A chave da solução parecia garantir que o pulseaudio-module-jack estivesse instalado com:

aptitude install pulseaudio-module-jack

em seguida, sudo editando o arquivo /etc/pulse/default.pa para incluir duas linhas na seção carregar manualmente os drivers de áudio:

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

então - acho - reiniciando o pulseaudio. Acabei de reiniciar o PC (preguiçoso, eu sei) e deu certo ... acionar o Ardour não matava mais o pulseaudio, eles tocavam felizes juntos.

RobinsSea
fonte
BTW, você também pode adicionar os módulos pactl load-module ...
rapidamente
9

Apenas passamos pela busca da coexistência de Jack e Pulse no Fedora. Geralmente fico feliz com o Pulseaudio, mas às vezes preciso do áudio do Jack.

Minha solução trabalhando no Fedora 23.

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

Não toque em /etc/pulse/default.pa!

Configurar qjackctl

Configurações

Existe um fragmento relevante de ~ / .config / rncbc.org / QjackCtl.conf

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

Opções nomes de coletor para pactl podem ser encontrados pelo comando:

pacmd list-sinks

Há mais um fragmento de ~ / .config / rncbc.org / QjackCtl.conf para mostrar 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"

Diversos Lá, "Ativar interface D-Bus" é importante para o próprio Qjackctl.

Como isso funciona

Agora, no PC de inicialização, trabalhe apenas com o PulseAudio. Todo o trabalho automático como sem Jack.

Após o lançamento do Qjackctl,

  1. O script de inicialização Qjackctl suspende a placa de áudio principal no Plseuaudio e permite que Jackj tenha acesso a ela "pactl suspend-sink alsa_output.pci-0000_00_1b.0.analog-stereo 1"
  2. Jack começou com o d-bus "jack_control start"
  3. O Pulse detecta automaticamente o início do jack pelo D-Bus e carrega o coletor e a fonte do jack.
  4. Qjackctl após o script de inicialização, altere o coletor padrão no Pulse para jack_out. (Acho que isso não foi feito) "pactl set-default-sink jack_out" (a princípio parece desnecessário, pois todos os clientes PA em execução mudaram para um novo coletor, mas os novos aplicativos ficaram no coletor suspenso sem esse comando)

Portanto, o sistema foi reconfigurado para usar "Pulse on top of Jack". (Aqui pulo a suspensão da entrada de hardware, porque não a uso de qualquer maneira)

Se a opção "Parar servidor de áudio JACK na extensão do aplicativo" não estiver marcada, eu posso fechar o Qjackctl e executá-lo novamente, sem atrapalhar a instalação.

Depois de parar o Jack por Qjackctl, todos voltam ao pulso simples e organizado!

  1. Jackd passa por Qjackctl sobre dbus - opção "Enable D-bus interface".
  2. jack-source e jack-sink removidos do Pulseaudio automaticamente pelo d-bus
  3. coletor padrão no áudio Pulse alternado para placa de áudio porque a saída desaparece
  4. Qjackctl após o script de desligamento ativa a placa de áudio no Pulseaudio "pactl suspend-sink alsa_output.pci-0000_00_1b.0.analog-stereo 1"

Ferramentas usadas

  1. jackd (do pacote pulseaudio-utils)
  2. jack_control (do pacote ack-audio-connection-kit-dbus)
  3. Qjackctl (do pacote pulseaudio-utils)
  4. pactl para controlar o Pulseaudio de sctipts (do pacote pulseaudio-utils)
mmv-ru
fonte
Esta resposta não é explícita sobre como a configuração é feita. É feito apenas via Qjackctl? Em caso afirmativo, em quais arquivos estão as definições de configuração e como são definidas?
Faheem Mitha 11/03/16
Configuração inicial feita via gerenciador de pacotes. jackg iniciar / parar a reconfiguração através dos scripts jack-audio-connection-kit-dbus e Qjackctl.
MMV-ru
Entendo. Alguns detalhes nesse sentido seriam extremamente úteis. Esses detalhes estão ausentes de outras respostas e informações na rede. Eu preferiria não configurar as coisas através de uma GUI, se possível. Você costuma conversar no AU? Nesse caso, podemos discuti-lo lá.
Faheem Mitha 11/03/16
O Qjackctl pode ser configurado via GUI, como mostram as capturas de tela. Na resposta, mostro partes de .config / rncbc.org / QjackCtl.conf para mostrar linhas completas de script.
mmv-ru
Não há reputação suficiente para convidar para conversar. Me convide.
MMV-ru
7
  • O problema é o hidrogênio (como o Ardour), que lança o jackd na inicialização, mas não o fecha na saída:
    mas você pode executar killall jackdum terminal após a saída do hidrogênio.

  • Uma maneira complicada de usar o software Jack e pulseaudio ao mesmo tempo é instalar o "pulseaudio-module-jack" (também instale qjackctl (gui para jackd) e pavucontrol, se não houver). Reinicie o pulseaudio pulseaudio -k.
    Agora feche os aplicativos de áudio (Jack e pulseaudio),
    execute o jackd usando qjackctl (clique no botão Iniciar) (a opção dbus deve ser selecionada na última guia das configurações de qjackctl ).
    Na aba Pavucontrol "dispositivo de saída", clique no botão verde "dispositivo padrão" próximo a "jack sink".
    Agora, o software pulseaudio e o Hydrogen devem ser executados ao mesmo tempo.

  • Usando qjackctl, na primeira guia "configurações", você pode alterar o dispositivo de áudio Jackd.

laugeo
fonte
3

Pode ser muito mais fácil agora. O que funcionou para mim hoje, para satisfazer minhas necessidades realmente básicas, após uma nova instalação do Linux Mint 18.2 (base do pacote Ubuntu 16.04) foi:

  1. Use o Synaptic para instalar o QSynth e o QJackCtl.

  2. Copie as fontes de som necessárias para uma pasta apropriada, como /usr/share/sounds/sf2/

  3. Na configuração QSynth : sob Áudio mudança guia Audio Driver para pulseaudio .

  4. No QSynth Setup : em SoundFonts : Open ... e selecione um, conforme necessário.

  5. Em QJackCtl Setup> Settings> Advanced :

    Prefixo do servidor: pasuspsender - /usr/bin/jackd

  6. Em QJackCtl Setup> Opções :

    Execute o script após a inicialização:

    pactl load-module module-jack-sink channels=2; pactl load-module module-jack-source; pacmd set-default-sink jack_out
    
  7. No QJackCtl Connect: ALSA : junte a entrada do teclado à esquerda para FLUID Synth à direita.

  8. Nas principais configurações do sistema para som, selecione o dispositivo de saída necessário.

Agora eu posso tocar o teclado enquanto assisto a um vídeo (por exemplo, no YouTube usando o Firefox, por exemplo) - anteriormente eu só podia fazer um desses de cada vez sem muitos ajustes que raramente conseguia acompanhar.

Espero que ajude alguém ou incentive-o a tentar novamente :-).

Kim Tucker
fonte
2

A maneira mais fácil de rotear todo o sistema para executar com jack:

Instalar

sudo apt-get install qjackctl pulseaudio-module-jack

Abra qjackctl. Em Configuração> Opções>

Marque Executar script após a inicialização e cole:

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

Marque Executar script após o desligamento e cole:

killall jackd

Agora inicie o qjack e abra as configurações de som. Você encontrará a porta de saída do coletor de áudio Pulse Audio. Selecione e todo o sistema será sincronizado. Se você parar o servidor Jack / qjack, o som retornará à sua porta padrão novamente.

Aqui está a visão geral

Fahad Hasan Pathik
fonte
0

É claro que alguém vai querer o pulseaudio e o jack funcionando se chegarem ao ponto em que precisam do conector, pois a maioria dos players de mídia do navegador não conhece o conector! ..infelizmente.

Eu ficava vendo a sugestão de ter apenas um deles funcionando por vez, o que me parece um compromisso tão terrível. É um pouco trágico, na minha opinião, que esses dois serviços, por exemplo, jack e pulseaudio, embora ambos funcionais sozinhos sejam tão mal gerenciados pelo kxstudio, pelo menos, que é o que estou usando.

Então, o que acontece é:

  • a tomada não pode ser iniciada enquanto o pulseaudio estiver em execução (e usando o driver da placa de som que deseja usar, o que é justo o suficiente), portanto, é necessário iniciar primeiro

  • O pulseaudio precisa ser apontado para o jack uma vez instalado e funcionando

Muito simples .. ei? Por certas razões, tive uma dor sem fim, porque ..

Primeiro eu acho que porque o pulseaudio 4.0 parece estar com erros e atrapalha o driver da alsa, de modo que, em algumas situações, o deixa bloqueado e, portanto, o jack não pode ser iniciado, mesmo que o pulseaudio não esteja em execução. (Diz que falhou ao definir parâmetros de captura ou smtg assim)

O que eu fiz no final foi

  • removido completamente o jack e o pulseaudio (com find e rm -rf: D após a limpeza do apt-get)
  • pulseaudio 11 instalado (de fontes)
  • jaque instalado e suas libs (libjack-dev)

nessa ordem e finalmente consegui que eles rodassem normalmente através do qjackctl, o que garante que eles comecem da maneira correta (carrega o coletor de jack no pulseaudio e o define como padrão).

Aliás, vi que Cadence é recomendado e não entendo por que, para mim, parece um lixo comparado ao qjackctl.

De qualquer forma, o problema de iniciar o jack usando qjackctl leva um tempo e, para evitar o tempo de espera em cada inicialização, você pode usar este recurso de salva-vidas do kde, que deve carregar a sessão anterior. Certifique-se de não ter qjackctl na inicialização automática, pois você terminará com mais uma instância a cada reinicialização, independentemente da configuração singleton = true (buggy buggy a noite toda).

Isso ocorre porque eu não me sentia mais brincando com ele, como escrever um script inteligente que garanta que o pulseaudio esteja desativado (ou suspenso) na tomada de partida e verifique se ele foi iniciado corretamente, depois inicie o pulseaudio, o módulo de tomada de carga etc.

Caso contrário, contar com o sistema operacional para iniciar os daemons e carregar a configuração corretamente seria o cenário normal (íntegro), mas isso não parece estar acontecendo.

Diverta-se..

Negru Voda
fonte
0

Estou executando o Linux Mint 19.1. Depois de tentar todas as várias soluções, as coisas ainda não funcionavam perfeitamente para mim.

Por fim, consegui resolver todos os meus problemas seguindo as etapas / instruções no vídeo: Link

Basicamente, ele instala aplicativos dos repositórios do Kxstudio. e eles têm um script para configurar tudo perfeitamente na inicialização.

Meu objetivo final era ser capaz de gravar entradas através da minha interface (Scarlett solo) enquanto era capaz de executar / gravar sons de outros aplicativos (desktop, navegador)

joe_maya
fonte