我对音频设备名称有点困惑。如果我使用命令,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
Run Code Online (Sandbox Code Playgroud)
请注意,顺序为card 0, card 1,card 3其中card 2未列出。这让我很困惑。
我知道这里的每个条目都是一个设备(不是卡),所以如果我是正确的(如果我错了,请确认或纠正我)我会将我的声卡命名为“Scarlet 2i4”,例如hd:3,0?还是hd:2,0因为card 2失踪了?
现在,当我打开 JACK 并想要调整音频设置时,我的名称与上面的名称不同。名字是:
hw:USB,0hw:USBhw:0plughw:0/dev/audio/dev/dspJACK从哪里获取这个设备表?这是一种什么样的命名约定?我如何确定哪个设备是哪个(我希望 JACK 主要使用我的“Scarlet 2i4”)?有没有任何终端命令可以让我知道这一点?
目前我的~/.jackrc设置是这样的:
/usr/bin/jackd -nziga-scarlet-2i4 -t2000 -dalsa -dhw:0 -r48000 -p128 -n2
Run Code Online (Sandbox Code Playgroud)
每张卡都有一个编号(也称为“索引”)。通常,司机会抢用第一个免费号码,但也可以强制司机使用另一个号码。号码也有可能保持空闲状态,因为它们之前被未插电的设备使用过。
每张卡都有名称(例如“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 中的默认列表不显示除第一个卡之外的其他卡;您必须单击列表旁边的按钮。