Oma*_*ara 4 arch-linux alsa audio pulseaudio deepin
我正在编写一些与声音相关的 python 程序,所以我使用了使用 PortAudio 库的 SoundDevice python 模块。我在使用 deepin 桌面的 arch linux 上。
如果我只是打开计算机并打印可用的设备,我会得到:
0 HDA Intel PCH: ALC887-VD Analog (hw:0,0), ALSA (2 in, 2 out)
1 HDA Intel PCH: ALC887-VD Digital (hw:0,1), ALSA (0 in, 2 out)
2 HDA Intel PCH: ALC887-VD Alt Analog (hw:0,2), ALSA (2 in, 0 out)
3 HDA ATI HDMI: 0 (hw:1,3), ALSA (0 in, 8 out)
4 sysdefault, ALSA (128 in, 128 out)
5 front, ALSA (0 in, 2 out)
6 surround40, ALSA (0 in, 2 out)
7 surround51, ALSA (0 in, 2 out)
8 surround71, ALSA (0 in, 2 out)
9 iec958, ALSA (0 in, 2 out)
10 spdif, ALSA (0 in, 2 out)
11 pulse, ALSA (32 in, 32 out)
12 dmixed, ALSA (0 in, 2 out)
13 dsnooped, ALSA (2 in, 0 out)
14 duplex, ALSA (2 in, 2 out)
15 dmix, ALSA (0 in, 2 out)
* 16 default, ALSA (128 in, 128 out)
Run Code Online (Sandbox Code Playgroud)
它说我正在使用 ALSA(128 进,128 出)。现在我将打开一个应用程序——比如 Chromium——并播放一些音乐然后继续浏览互联网。如果我现在打印可用设备,我会得到:
0 HDA Intel PCH: ALC887-VD Analog (hw:0,0), ALSA (2 in, 0 out)
< 1 HDA Intel PCH: ALC887-VD Digital (hw:0,1), ALSA (0 in, 2 out)
2 HDA Intel PCH: ALC887-VD Alt Analog (hw:0,2), ALSA (2 in, 0 out)
3 HDA ATI HDMI: 0 (hw:1,3), ALSA (0 in, 8 out)
4 sysdefault, ALSA (128 in, 0 out)
5 iec958, ALSA (0 in, 2 out)
6 spdif, ALSA (0 in, 2 out)
7 pulse, ALSA (32 in, 32 out)
8 dsnooped, ALSA (2 in, 0 out)
9 duplex, ALSA (2 in, 0 out)
> 10 default, ALSA (128 in, 0 out)
Run Code Online (Sandbox Code Playgroud)
它告诉我我使用 Intel 作为我的输出和 ALSA (128 in, 0) 作为我的输入。为什么没有像以前那样的 ALSA 输入和输出?
这发生在所有使用声音的应用程序中,包括 Audacity。
我目前正在使用pluse作为替代,但据说ALSA更好,所以即使同时打开多个应用程序我也想使用它。
这是编辑配置后的列表:
> 0 HDA Intel PCH: ALC887-VD Analog (hw:0,0), ALSA (2 in, 2 out)
1 HDA Intel PCH: ALC887-VD Digital (hw:0,1), ALSA (0 in, 2 out)
2 HDA Intel PCH: ALC887-VD Alt Analog (hw:0,2), ALSA (2 in, 0 out)
3 HDA ATI HDMI: 0 (hw:1,3), ALSA (0 in, 8 out)
4 sysdefault, ALSA (128 in, 128 out)
5 front, ALSA (0 in, 2 out)
6 surround40, ALSA (0 in, 2 out)
7 surround51, ALSA (0 in, 2 out)
8 surround71, ALSA (0 in, 2 out)
9 iec958, ALSA (0 in, 2 out)
10 spdif, ALSA (0 in, 2 out)
11 pulse, ALSA (32 in, 32 out)
12 dmix, ALSA (0 in, 2 out)
< 13 default, ALSA (0 in, 128 out)
Run Code Online (Sandbox Code Playgroud)
需要输出到dmix
ALSA设备而不是默认设备;允许多个流混合并输出到声卡。它在不支持硬件混音的声音设备上自动设置;如您所见,它已在您的系统上设置。
您可以在ALSA wiki上找到更多信息。
您可以使用以下配置dmix
将其配置为默认值
pcm.!default {
type plug
slave.pcm "dmix"
}
Run Code Online (Sandbox Code Playgroud)
您仍然需要配置所有应用程序以使用 ALSA。还要注意,这dmix
只是一个输出设备;如果要管理多个输入,则需要使用dsnoop
. ALSA wiki 有详细的配置示例,您可以根据自己的特定设置(特别是默认的底层硬件设备)进行调整。