如何在同一音频设备上同时使用JACK和Pulseaudio / ALSA?

每当我启动氢气时,它会在使用Pulse的所有其他应用程序中断开我的音频,例如,在启动Hydrogen之后我无法再在Chrome中播放video,直到我重新启动PC或执行sudo alsa force-reload。 我发现有类似问题的人,但没有实际的指南来解决这个问题,通常有这样的链接: http : //jackaudio.org/pulseaudio_and_jack (已损坏)我使用的是Ubuntu Studio 14.04 64bit。

另外,如果这真的无法实现,有人可以告诉我如何在一张声卡上使用Jack而在另一张声卡上使用Pulse吗? 这样我只有在需要JACK时才能插入USB声卡。

请不要让我使用Windows。

截至16.04,事情变得简单得多:)

只需安装qjackctlpulseaudio-module-jack模块:

 apt-get install qjackctl pulseaudio-module-jack 

然后配置qjackctl以在启动后运行以下命令。 将其复制到“设置…”>“选项”>“启动后执行脚本”:

 pactl set-default-sink jack_out 

那就是。 Pulseaudio将识别(通过D-Bus)JACK启动,并自动将音频路由到它。 当JACK停止时,Pulseaudio将恢复正常路由并再次开始直接向卡发送音频。

所以(几乎)默认情况下,Pulseaudio通过mmv-ru实现上面详述的设置。

这个Youtubevideo:“Jack和PulseAudio Together as Friends – Linux”似乎有一些答案:

解决方案的关键似乎是确保使用以下方式安装pulseaudio-module-jack:

 aptitude install pulseaudio-module-jack 

然后sudo编辑/etc/pulse/default.pa文件,在手动加载音频驱动程序下包含两行:

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

然后 – 我想 – 重启pulseaudio。 我刚刚重新启动了PC(懒惰,我知道)并且它起了作用……激起Ardor不再杀死pulseaudio,他们一起愉快地玩耍。

刚刚在Fedora上讨论了Jack和Pulse的共存问题。 一般来说,我对Pulseaudio很满意,但有时需要Jack音频。

我在Fedora 23上的解决方案。

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

不要碰/etc/pulse/default.pa!

配置qjackctl

设置

有一个〜/ .config / rncbc.org / QjackCtl.conf的相关片段

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

选项 可以通过命令找到pactl的接收器名称:

 pacmd list-sinks 

还有一个〜/ .config / rncbc.org / QjackCtl.conf片段来显示完整的命令

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

杂项 在那里,“启用D-Bus接口”对Qjackctl本身很重要。

它是如何工作的

现在启动PC只能使用PulseAudio。 所有自动工作没有杰克。

Qjackctl推出后,

  1. Qjackctl启动脚本暂停Plseuaudio中的主要声卡,并允许Jackj访问它“pactl suspend-sink alsa_output.pci-0000_00_1b.0.analog-stereo 1”
  2. 杰克开始用d-bus“jack_control start”
  3. Pulse通过D-Bus和负载插孔接收器和插孔源自动检测插孔启动。
  4. 启动脚本后的Qjackctl更改默认接收脉冲到jack_out。 (我认为它没有完成)“pactl set-default-sink jack_out”(起初它看起来没必要,因为所有正在运行的PA客户端切换到新的接收器,但新的应用程序在没有此命令的情况下卡在挂起的接收器上)

因此,系统重新配置为使用“Jack on Jack”。 (在那里我跳过硬件输入暂停,因为我还没有使用它)

如果未选中“在应用程序exti上停止JACK音频服务器”,我可以关闭Qjackctl并重新运行它而不是干扰设置。

在Qjackctl停止杰克之后,所有人都回归平原整齐的脉冲!

  1. Jack在Qjackctl上通过dbus停止 – “启用D-bus接口”选项。
  2. 通过d-bus从Pulseaudio中自动删除插孔源和插孔
  3. 脉冲音频中的默认接收器切换到音频卡,因为插孔消失
  4. 关闭脚本后Qjackctl在Pulseaudio中激活音频卡“pactl suspend-sink alsa_output.pci-0000_00_1b.0.analog-stereo 1”

使用的工具

  1. jackd(来自package pulseaudio-utils)
  2. jack_control(来自包ack-audio-connection-kit-dbus)
  3. Qjackctl(来自package pulseaudio-utils)
  4. 用于控制来自sctipts的Pulseaudio的pactl(来自package pulseaudio-utils)
  • 问题是Hydrogen(as Ardor)在启动时启动了jackd但是在退出时没有关闭它:
    但是氢气出口后你可以在终端运行killall jackd

  • 同时使用Jack和pulseaudio软件的一种复杂方法是​​安装“pulseaudio-module-jack”(如果不存在,还安装qjackctl(gui for jackd)和pavucontrol)。 重启pulseaudio pulseaudio -k
    现在关闭音频应用程序(杰克和pulseaudio),
    使用qjackctl运行jackd(单击开始按钮)( 必须在qjackctl设置的最后一个选项卡中选择dbus选项 )。
    在Pavucontrol“输出设备”选项卡中,“jack sink”附近的绿色“默认设备”按钮
    现在,pulseaudio软件和Hydrogen应该同时运行。

  • 使用qjackctl,在第一个“设置”选项卡中,您可以更改Jackd音频设备。

现在可能要容易得多。 在全新安装Linux Mint 18.2(Ubuntu 16.04软件包基础版)之后,为了满足我的基本需求,今天对我有用的是:

  1. 使用Synaptic安装QSynth和QJackCtl。

  2. 将所需的声音字体复制到适当的文件夹中,例如/usr/share/sounds/sf2/

  3. QSynth设置中 :在音频选项卡下将音频驱动程序更改为pulseaudio

  4. QSynth设置中 :在SoundFonts下: 打开 …并根据需要选择一个。

  5. QJackCtl设置>设置>高级

    服务器前缀:pasuspsender – /usr/bin/jackd

  6. QJackCtl设置>选项中

    启动后执行脚本:

     pactl load-module module-jack-sink channels=2; pactl load-module module-jack-source; pacmd set-default-sink jack_out 
  7. QJackCtl Connect中:ALSA :将左侧的键盘输入连接到右侧的FLUID Synth

  8. 在Sound的主系统设置中,选择所需的输出设备。

现在我可以在观看video时播放键盘(例如,在YouTube上使用Firefox) – 以前我只能在没有很多调整的情况下执行其中的一个,我很少能够跟踪。

希望能帮助某人,或鼓励他们再试一次:-)。

当然,如果他们到达需要插孔的地步,就会想要使用pulseaudio和jack运行,因为大多数浏览器媒体播放器都不知道插孔! ..不幸。

我一直看到只有其中一个人在某个时间跑步的建议,在我看来,这似乎是一次可怕的妥协。 在我看来,这两个服务,即jack和pulseaudio,虽然它们本身都是function性很差,至少这是我正在使用的kxstudio管理,这有点悲惨。

那么会发生什么:

  • 在pulseaudio运行时,jack无法启动(并且使用它想要使用的声卡驱动程序,这是非常公平的)所以需要先启动它

  • 一旦启动和运行,pulseaudio需要指向插孔

很简单……真的吗? 出于某些原因,我无休止的悲伤因为它…

首先我认为因为pulseaudio 4.0似乎是错误的并且弄乱了alsa驱动程序,因此在某些情况下它会使其锁定,因此即使pulseaudio没有运行,插孔也无法启动。 (表示无法设置捕获参数或像这样的smtg)

我到底做了什么

  • 完全删除了jack和pulseaudio(在apt-get purge之后使用find和rm -rf:D)
  • 安装pulseaudio 11(来自)
  • 安装了jack和它的libs(libjack-dev)

按此顺序,然后我终于通过qjackctl正常运行,确保它们以正确的方式启动(在pulseaudio中加载插孔接收器,并将其设置为默认值)。

顺便说一句,我看到Cadence被推荐了,我不明白为什么对我而言,与qjackctl相比,它似乎是垃圾。

无论如何,问题是使用qjackctl启动插孔需要一段时间并且为了避免每次启动时的等待时间,您可以使用kde的这个生命保护程序function来加载前一个会话。 确保你没有在自动启动中使用qjackctl,因为你将在每次重新启动时再使用一个实例,而不管singleton = true设置(整晚都有越野车)。

这是因为我不再感到不知所措,例如编写一个智能脚本,确保pulseaudio关闭(或暂停)启动插孔并检查它是否正常启动,然后启动pulseaudio,加载插孔模块等。

否则依赖操作系统启动守护进程并正确加载配置将是正常的(健康的)情况,但它似乎没有发生。

玩得开心..