每当我启动 Hydrogen 时,它会在所有其他使用 Pulse 的应用程序中破坏我的音频,例如,在启动 Hydrogen 一次后,我无法再在 Chrome 中播放视频,直到我重新启动我的电脑或执行 sudo alsa force-reload。我发现有类似问题的人,但没有解决此问题的实际指南,通常有指向http://jackaudio.org/pulseaudio_and_jack(已移至http://jackaudio.org/faq/pulseaudio_and_jack.html)的链接我我正在使用 Ubuntu Studio 14.04 64 位。
或者,如果这真的不可能实现,有人能告诉我如何在一个声卡上使用 Jack 而在另一个声卡上使用 Pulse 吗?这样我就可以只在需要 JACK 时插入 USB 声卡。
请不要让我使用窗户。
小智 50
从 16.04 开始,事情变得简单多了 :)
只需安装qjackctl和pulseaudio-module-jack模块:
apt-get install qjackctl pulseaudio-module-jack
Run Code Online (Sandbox Code Playgroud)
然后配置qjackctl启动后运行如下命令。将其复制到“设置...”>“选项”>“启动后执行脚本”:
pacmd set-default-sink jack_out
Run Code Online (Sandbox Code Playgroud)
就是这样。Pulseaudio 将识别(通过 D-Bus)JACK 启动,并自动将音频路由到它。当 JACK 停止时,Pulseaudio 将恢复正常路由并再次开始直接向卡发送音频。
所以(几乎)默认情况下,Pulseaudio 实现了上面由 mmv-ru 详述的设置。
小智 21
这个 Youtube 视频:“Jack 和 PulseAudio 一起成为朋友 - Linux”似乎有一些答案:
解决方案的关键似乎是确保安装了pulseaudio-module-jack:
aptitude install pulseaudio-module-jack
Run Code Online (Sandbox Code Playgroud)
然后 sudo 编辑 /etc/pulse/default.pa 文件以在手动加载音频驱动程序部分下包含两行:
load-module module-jack-sink
load-module module-jack-source
Run Code Online (Sandbox Code Playgroud)
然后 - 我想 - 重新启动pulseaudio。我刚刚重新启动了 PC(懒惰,我知道)并且它起作用了......启动Ardor不再杀死pulseaudio,他们一起玩得很开心。
mmv*_*-ru 11
我在 Fedora 23 上工作的解决方案。
dnf install jack-audio-connection-kit jack-audio-connection-kit-dbus qjackctl
Run Code Online (Sandbox Code Playgroud)
不要触摸 /etc/pulse/default.pa !
~/.config/rncbc.org/QjackCtl.conf 的相关片段:
[Settings]
Server=jack_control start
Driver=alsa
InDevice="hw:PCH,0"
OutDevice="hw:PCH,0"
Run Code Online (Sandbox Code Playgroud)
可以通过以下方式找到 pactl 的接收器名称:
Run Code Online (Sandbox Code Playgroud)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"
Run Code Online (Sandbox Code Playgroud)
“启用 D-Bus 接口”对于 Qjackctl 本身很重要。
现在,在启动时,PC 仅使用 PulseAudio 运行,一切都会像没有 Jack 一样自动运行。
启动 Qjackctl 后,
pactl suspend-sink alsa_output.pci-0000_00_1b.0.analog-stereo 1jack_control startpactl set-default-sink jack_out起初看起来没有必要,因为所有正在运行的PA客户端都切换到新接收器,但是如果没有此命令,新应用程序将卡在挂起的接收器上)因此系统被重新配置为使用“杰克顶部的脉冲”。(我跳过硬件输入暂停,因为我不使用它)
如果未选中“在应用程序退出时停止 JACK 音频服务器”,我可以关闭 Qjackctl 并重新运行它而不会干扰设置。
用 Qjackctl 阻止 Jack 后,一切都恢复到简单整洁的 Pulse!
pactl suspend-sink alsa_output.pci-0000_00_1b.0.analog-stereo 1LANG=C pacmd list-sinks|grep -E "index:|name:|alsa.long_card_name =|alsa.name ="或LANG=C pactl list sinks|grep -E "(Sink #|Name:|alsa.long_card_name =|alsa.name =)"检测 alsa 设备名称问题是 Hydrogen (as Ardour) 在启动时启动 jackd 但不要在退出时关闭它:
但是您可以killall jackd在 Hydrogen 退出后在终端中运行。
同时使用 Jack 和 pulseaudio 软件的一种复杂方法是安装“pulseaudio-module-jack”(如果不存在,还安装 qjackctl(jackd gui)和 pavucontrol)。重新启动脉冲音频pulseaudio -k。
现在关闭音频应用程序(Jack 和 pulseaudio),
使用 qjackctl 运行 jackd(单击开始按钮)(必须在 qjackctl 设置最后一个选项卡中选择 dbus 选项)。
在 Pavucontrol 的“输出设备”选项卡中,单击“插孔接收器”附近的绿色“默认设备”按钮
现在pulseaudio 软件和 Hydrogen 应该同时运行。
使用 qjackctl,在第一个“设置”选项卡中,您可以更改 Jackd 音频设备。
将所有系统路由到与 jack 一起运行的最简单方法:
安装
sudo apt-get install qjackctl pulseaudio-module-jack
Run Code Online (Sandbox Code Playgroud)
打开 qjackctl。在设置>选项>
检查启动后执行脚本并粘贴:
pacmd load-module module-jack-source channels=2; pacmd load-module module-jack-sink channels=2;
Run Code Online (Sandbox Code Playgroud)
检查关机后执行脚本并粘贴:
killall jackd
Run Code Online (Sandbox Code Playgroud)
现在启动 qjack 并打开您的声音设置。您会发现脉冲音频插孔接收器输出端口。选择它,所有系统将同步。如果您停止 Jack server/qjack,声音将再次回到您的默认端口。
[这里是整体视图]
2020 更新。Debian 克星。希望也适用于 Ubuntu。
不再需要使用任何脚本。
安装pulseaudio-module-jack. 它包含一个模块,负责检测千斤顶何时启动以及从/向其中提供/下沉。
您可以在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
Run Code Online (Sandbox Code Playgroud)
确保 jackdbus 已启动。如果使用 qjackctl 启动 jack,请在 Setup -> Misc 中检查 dbus 复选框。
这应该是全部。
Ubuntu 20.04,我发现它是各种答案的混合
sudo apt-get install qjackctl pulseaudio-module-jack
Run Code Online (Sandbox Code Playgroud)
Setup...--> Options-->Execute script after Startup粘贴以下内容:pactl load-module module-jack-sink channels=2; pactl load-module module-jack-source; pacmd set-default-sink jack_out
Run Code Online (Sandbox Code Playgroud)
小智 5
现在可能容易多了。今天,在全新安装 Linux Mint 18.2(Ubuntu 16.04 软件包基础)后,满足我真正基本需求的对我有用的是:
使用 Synaptic 安装 QSynth 和 QJackCtl。
将所需的声音字体复制到适当的文件夹中,例如/usr/share/sounds/sf2/
在QSynth 设置中:在“音频”选项卡下将“音频驱动程序”更改为“pulseaudio”。
在QSynth 设置中:在SoundFonts下:打开...并根据需要选择一个。
在QJackCtl 设置 > 设置 > 高级中:
服务器前缀:pasuspsender --/usr/bin/jackd
在QJackCtl 设置 > 选项中:
启动后执行脚本:
pactl load-module module-jack-sink channels=2; pactl load-module module-jack-source; pacmd set-default-sink jack_out
Run Code Online (Sandbox Code Playgroud)在QJackCtl Connect 中: ALSA:将左侧的键盘输入连接到右侧的FLUID Synth 。
在声音的主系统设置中,选择所需的输出设备。
现在我可以在观看视频时弹奏键盘(例如,使用 Firefox 在 YouTube 上) - 以前我一次只能执行其中一项操作,而无需进行大量我很少跟踪的调整。
希望对某人有所帮助,或鼓励他们再试一次:-)。
有两种方法可以回答这个问题。
\n不久前,我写了一个命令,有人报告我,在尝试了这里的所有解决方案后,他运气不好。但这个解决方案对他有用,所以我将其发布在这里,以防其他人可以得到帮助。注意:我并不是说这个解决方案是最优雅的,但它对我来说做得很好:
\n通过在退出 Jack 时正确卸载模块,可以稍微改进这个解决方案,也许使用这里提出的丑陋的 grep ,但我并没有真正发现对我有任何好处。
\n另请注意,我给出了有关如何调试此类问题的非常详细的说明。
\n安装:
\n$ sudo apt install jack2 pavucontrol qjackctl pulseaudio-module-jack. \nRun Code Online (Sandbox Code Playgroud)\n运行 qjackctl:
\n$ qjackctl\nRun Code Online (Sandbox Code Playgroud)\n\n单击Setup,然后检查输出接口是否正确(例如,如果您有 HDMI 输出,则此检查可能很重要)。就我而言,我将仅使用默认值,如果稍后遇到问题,我将返回此处。\n
然后,在高级选项卡中,我将服务器前缀替换jackd为pasuspender -- jackd. 这应该告诉pulseaudio暂时让jack管理声卡。我不确定它是否真的需要,但我想它不会造成伤害:\n
然后,在“选项”选项卡中输入Execute script after Startup以下代码:
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\nRun Code Online (Sandbox Code Playgroud)\n该命令的目标是为pulseaudio创建指向jack的新输出(sink),默认启用这个新sink(所有新打开的应用程序将写入jack),并且它还将所有现有应用程序的输出更改为确保它们指向杰克。
\n然后,为了确保在插孔关闭时pulseaudio重新启动,我还在字段中添加了Execute script after Shutdown:
pacmd suspend false\nRun Code Online (Sandbox Code Playgroud)\n\n就是这样!现在,您只需单击保存Apply并单击Start即可启动杰克:
\n如果它有效的话你应该看到类似的东西(当然没有错误):\n
所以基本上,您无法播放声音,因为同一声卡上只有一个程序可以同时播放声音。因此,当 Jack 演奏时,pulseaudio 会被阻止。现在,事实证明大多数桌面应用程序可以与pulseaudio 对话,但不能与Jack 对话。因此,当杰克打开时,您就不再有声音了。诀窍是将pulseaudio 流量路由到Jack,如下所示:
\napplication -> pulseaudio -> Jack -> sound card\nRun Code Online (Sandbox Code Playgroud)\n请注意,所有链接都必须正确配置。我们现在将了解它们是如何配置的以及如何检查它们是否配置正确。
\n因此,为了创建链接,pulseaudio -> Jack我们将加载一个模块,该模块创建一个新的pulseaudio接收器(即虚拟输出设备),名为Jack sink:这样,在该接收器中写入的任何应用程序都将被重定向到Jack上。您可以拥有多个现有的接收器,例如用于内部音频的接收器,如果您有蓝牙耳机,则也可以为其拥有一个接收器。要检查应用程序实际正在播放的接收器,请安装并运行pavucontrol(pavucontrol对于所有与声音相关的东西来说都非常有用,因为您基本上可以控制其中的所有内容)。您可以在名为类似的选项卡中看到接收器列表Input devices(抱歉,如果翻译不好),在我的例子中,我现在有 2 个接收器(杰克尚未加载):\n
如果您只有一个接收器,您可能看不到任何有趣的东西,但如果您有多个接收器,您可以在第一个选项卡中检查哪个应用程序正在哪个接收器上播放(在这里您可以看到 Firefox 正在我的蓝牙耳机上播放),并且如果需要,您可以更改它:
\n\n因此,如果您遇到一些问题,您可以:
\npulseaudio -> jack命令。如果失败,请确保您安装了,并最终通过简单地杀死它来重新启动pulseaudio 。不用担心,无需重新启动pulseaudio,它会自动重生。)。另请确保音量不为 0%,并且通道未静音:\npactl load-module module-jack-sinkpulseaudio-module-jackkillall pulseaudio
application -> pulseaudio:检查您的应用程序是否正在该接收器上写入。如果没有,您可以手动更改接收器(但启动脚本应该自动更改接收器):\n
jack -> sound card: 如果您仍然遇到问题(这部分也可能涉及到直接在 jack 上写入的软件的问题,例如zynaddsubfx),请查看Graphjack 的部分:您应该开始将所有节点打包在一起,但您可以移动它们以使它们更容易看到。然后确保您想要收听的所有应用程序都已连接system(在我的情况下zynaddsubfx没有自动连接)。注意:如果您有旧版本的 QJackctl,那么您可能有选项卡而不是这个。但它是相同的:“Jack”选项卡中的绿色输入/输出可以手动连接,紫色的输入/输出将位于“Alsa”选项卡中,红色的输入/输出位于“MIDI”选项卡中。 ..但事实上,您插入的所有外部 MIDI 设备都会出现在 Alsa 选项卡中:原因是有两种“MIDI”:传统的 Alsa Midi(端口对于系统而言是全局的)和更新的 Jack Midi(每个应用程序都可以有自己的 MIDI 输入/输出)。
zynaddsubfx它有一些奇怪的默认值,并且会显示为“Midi/red”而不是“Alsa/green”,导致无法连接到外部 midi 设备。更准确地说,如果您zynaddsubfx在没有任何选项的情况下从命令行运行或使用以下命令运行:zynaddsubfx -I alsa -O jack\nRun Code Online (Sandbox Code Playgroud)\n(这意味着从 Alsa MIDI 输入,输出到插孔)应该不是问题,您将能够连接 MIDI 设备:
\n\n但是,如果您以图形方式运行它,默认的 Jack 条目会自动运行zynaddsubfx -I jack -O jack...并且会出现这样的问题:输入zynaddsubfx将在红色/MIDI 选项卡中创建,而实际的外部 MIDI 设备在紫色/Alsa 中标签。因此,这意味着您将无法将外部 MIDI 键盘映射到zynaddsubfx:
因此,解决方案是zynaddsubfx使用不带选项的命令行运行,或者使用命令行,zynaddsubfx -I alsa -O midi一切都应该正常!
| 归档时间: |
|
| 查看次数: |
123218 次 |
| 最近记录: |