我对音频设备名称有点困惑。如果我使用命令,aplay -l
我会获取系统上所有音频设备的列表:
**** List of PLAYBACK Hardware Devices ****
card 0: NVidia [HDA NVidia], device 0: VT1708S Analog [VT1708S Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: NVidia [HDA NVidia], device 2: VT1708S Alt Analog [VT1708S Alt Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: NVidia [HDA NVidia], device 3: VT1708S Digital [VT1708S Digital]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: HDMI [HDA ATI HDMI], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 3: USB [Scarlett 2i4 USB], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
请注意,顺序为card 0
, card 1
,card 3
其中card 2
未列出。这让我很困惑。
我知道这里的每个条目都是一个设备(不是卡),所以如果我是正确的(如果我错了,请确认或纠正我)我会将我的声卡命名为“Scarlet 2i4”,例如hd:3,0
?还是hd:2,0
因为card 2
失踪了?
现在,当我打开 JACK 并想要调整音频设置时,我的名称与上面的名称不同。名字是:
hw:USB,0
hw:USB
hw:0
plughw:0
/dev/audio
/dev/dsp
JACK从哪里获取这个设备表?这是一种什么样的命名约定?我如何确定哪个设备是哪个(我希望 JACK 主要使用我的“Scarlet 2i4”)?有没有任何终端命令可以让我知道这一点?
目前我的~/.jackrc
设置是这样的:
/usr/bin/jackd -nziga-scarlet-2i4 -t2000 -dalsa -dhw:0 -r48000 -p128 -n2
答案1
每张卡都有一个编号(也称为“索引”)。通常,司机会抢用第一个免费号码,但也可以强制司机使用另一个号码。号码也有可能保持空闲状态,因为它们之前被未插电的设备使用过。
每张卡都有名称(例如“HDA NVidia”)和唯一的 ID(例如“NVidia”)。
每个 PCM 设备都有一个编号/索引(它是固定的,由驱动程序确定)、一个名称和一个 ID(通常,ID 和名称相同)。
在类似 的设备名称中hw:0,0
,第一个参数是卡(卡号或卡 ID),默认为 0。第二个参数是设备号(不能使用 ID),默认为 0。
在 ALSA 设备名称中,hw
指定硬件设备,同时plughw
添加插件以在硬件和应用程序的功能不匹配时自动转换样本格式和速率。 (杰克通常不需要这个。)
Jack 没有设备列表。该窗口是 QJackCtl 工具,通常用于启动 Jack。
和/dev/audio
设备/dev/dsp
为OSS设备;该接口在 Linux 中已过时,并且在此列表中显示它们没有意义(这些设备实际上与 相同hw:0
)。
QJackCtl 中的默认列表不显示除第一个卡之外的其他卡;您必须单击列表旁边的按钮。
答案2
来自您的 aplay -l Scarlett 接口是卡 3,设备 0 = hw:3,0
QjackCtl 使用别名而不是卡号 (hw:USB,0 = hw:3,0) 以避免卡号更改时可能出现的问题。
获取具有别名的卡列表:
cat /proc/asound/cards
QjkackCtl 曾经使用 ~/.jackdrc 设置,但现在忽略它并使用它自己的设置。我最近安装了一个 Linux 操作系统,但没有 ~./jackdrc 文件
您可能希望将 QjackCtl 保存设置到 ~/.jackdrc 以防其他应用程序在没有 QjackCtl 的情况下使用 JACK
你的~/.jackdrc中有'-dhw:0',即板载声卡0,可以将其更改为-dhw:USB,0以匹配qjackctl并使用USB设备