在命令行上在 JACK 中建立连接

在命令行上在 JACK 中建立连接

我知道可以使用 Cadence 和 qjackctl 在应用程序之间路由音频,但可以在命令行上执行此操作吗?我只有几个用例,并且希望有一个简单的别名来启动音频软件 JACK 并建立连接。

答案1

当尝试查找可用命令时,Bash 的 Tab 补全功能非常有用,因此在这种情况下:

~$ 杰克Tab
jack_alias jack_multiple_metro
jack_bufsize jack_net_master
jack_capture jack_net_slave
jack_capture_gui jack_netsource
jack_connect jack-osc
jack_control jack-play
jack_cpu 插孔管道
jack_cpu_load 千斤顶架
jackd jack_rec
jackdbus jack-record
jack_disconnect jack_samplerate
jack-dl jack-scope
jack-dssi-主机 jack_server_control
jack_evmon jack_session_notify
jack_freewheel jack_showtime
jack_iodelay jack_simdtests
jack键盘 jack_simple_client
jack_latent_client jack_simple_session_client
jack_load jack_test
jack_lsp jack_thru
jack_metro jack_transport
jack_midi_dump jack传输
jack_midi_latency_test jack-udp
jack_midiseq jack_unload
jack_midisine jack_wait
jack_monitor_client jack_zombie

jack_connect听起来jack_disconnect很有希望,让我们来看看man jack_connect

姓名
       jack_connect、jack_disconnect - 用于连接和
       断开端口

概要
        jack_connect [ -s | --server 服务器名称 ] [-h | --help ] 端口 1 端口 2
        jack_disconnect [ -s | --server 服务器名称 ] [-h | --help ] 端口 1
       端口2

描述
       jack_connect 连接两个命名端口。jack_disconnect 断开连接
       两个命名端口。

我们需要知道端口名称,jack_lsp命令将提供现有的端口和连接,请查看man jack_lsp。我启动了 jackd-server,使用 pulseaudio 和 MIDI 路由到 jackd,这里是 的输出jack_lsp -c

~$ jack_lsp-c
系统:capture_1
   PulseIn:前左
系统:capture_2
   PulseIn:前-右
系统:playback_1
   PulseOut:前左
系统:播放_2
   PulseOut:前-右
PulseOut:前左
   系统:playback_1
PulseOut:前-右
   系统:播放_2
PulseIn:前左
   系统:capture_1
PulseIn:前-右
   系统:capture_2
a2j:Midi Through [14](捕获):Midi Through Port-0
a2j:Midi Through [14](播放):Midi Through Port-0

示例命令:

~$ jack_disconnect PulseOut:front-left system:playback_1
~$ jack_connect PulseOut:front-left system:playback_1

Carla通过这些命令,我​​可以成功地断开并重新连接该连接,观察在发出命令时在后台运行的连接消失和重新出现。

答案2

jack_connect 和 jack_disconnect 运行良好,但有局限性

很容易从 GUI 包 qjackctl+patchage(或 cadence+carla)中找出连接命令,
将消息/状态中的文本复制到文本文件以获取连接名称,
也可以通过粘贴到终端中一次测试一个命令

当时有限的 Linux 命令技能无法让我在 QjackCtl 中找到相当于“断开所有连接”按钮的功能,
但我找到了另一种解决方案:

http://aj-snapshot.sourceforge.net/

该命令用于断开 JACK 中的所有内容:

aj-snapshot -jx

但也有“存储”和“恢复”选项,如下alsactl所示:

aj-snapshot -rjx filename

将清除 JACK 连接并加载保存在“filename”中的所有连接

答案3

是的,您可以执行在 qjackctl GUI 中执行的所有操作,但只需从命令行即可。这包括创建新连接。通过自动化整个 JACK 工作流程来挑战自己!

(除此之外,您还可以做两者都能做的所有事情,但要使用 libjack C 库。)

这是一个 GIF 演示。它显示了我正在运行下面的示例命令,并显示 qjackctl 连接窗口。您可以看到在执行命令时绘制的线条jack_connect。完成所有连接后,jack_lsp --connections将显示每个命名端口下的新连接。

以下是示例命令。

<0.o>jack_lsp --connections

system:playback_1
system:playback_2
PulseAudio JACK Sink:front-left
PulseAudio JACK Sink:front-right
PulseAudio JACK Source:front-left
PulseAudio JACK Source:front-right
gst-launch-1.0:in_jackaudiosrc0_1

<0.o>jack_connect 'PulseAudio JACK Sink:front-right' gst-launch-1.0:in_jackaudiosrc0_1

<0.o>jack_connect 'PulseAudio JACK Sink:front-left' gst-launch-1.0:in_jackaudiosrc0_1

<0.o>jack_connect 'PulseAudio JACK Sink:front-left' system:playback_1

<0.o>jack_connect 'PulseAudio JACK Sink:front-right' system:playback_2

<0.o>jack_lsp --connections

system:playback_1
   PulseAudio JACK Sink:front-left
system:playback_2
   PulseAudio JACK Sink:front-right
PulseAudio JACK Sink:front-left
   gst-launch-1.0:in_jackaudiosrc0_1
   system:playback_1
PulseAudio JACK Sink:front-right
   gst-launch-1.0:in_jackaudiosrc0_1
   system:playback_2
PulseAudio JACK Source:front-left
PulseAudio JACK Source:front-right
gst-launch-1.0:in_jackaudiosrc0_1
   PulseAudio JACK Sink:front-right
   PulseAudio JACK Sink:front-left

您也可以删除所有连接。这是一个 GIF 演示。在演示中,我尝试连接每对命名端口,然后尝试断开每对命名端口。这将为每对无效端口创建警告或错误,因此我将标准输出和错误组合起来,并将它们重定向到空设备。您可以看到为有效连接绘制/擦除的线条。

以下是删除所有连接的示例命令。

<0.o>jack_lsp | while read a; do jack_lsp | while read b; do jack_connect "$a" "$b"; done; done > /dev/null 2>&1
<0.o>jack_lsp | while read a; do jack_lsp | while read b; do jack_disconnect "$a" "$b"; done; done > /dev/null 2>&1

相关内容