Gea*_*phy 16
系统范围的配置文件存储在“/etc/asound.conf”中,所有符合 ALSA 的应用程序在每次启动时都会读取这个文件。了解当前声音设备的最佳位置是“/proc/asound/”。如果您没有配置文件,ALSA 应用程序将使用 /proc/asound/card0 作为默认声音设备。您可以在此处“/proc/asound/version”检查您正在运行的 ALSA 版本。
每个声音设备都有一堆与之关联的“pcm”。每个 pcm 基本上都是一个输出通道:“front”、“rear”、“surround41”、“surround51”等。您可以使用以下命令查看哪些 pcm 通道可用:
aplay -L | grep CARD
Run Code Online (Sandbox Code Playgroud)
其中一些 pcm 通道不对应于物理音频输出,而是由 ALSA 提供的软件通道。我们感兴趣的那个叫做“dmix”。“dmix”通道是由 ALSA 提供的软件混合器,用于处理多个并发输入流。
需要注意的一件事是使用多种约定来识别特定的声音设备。配置文件将使用 card0、card1 等或简单的 0、1 等。也可以通过名称来引用卡,例如 Creative、Nvidia 等。这些名称在 ALSA proc 目录中定义为软链接: 'ls -l /proc/asound'。通常,在配置文件中引用PCM通道时,格式如下:“channel-name:card-index,sub-index”。因此,例如,“dmix:2,0”指的是卡 2 上的 dmix pcm 通道,子设备 0。您可以使用以下命令查看与每个声卡关联的子设备:
aplay -l
Run Code Online (Sandbox Code Playgroud)
最后一步是配置文件本身,位于'/etc/asound.conf'。我们在这个文件中需要 2 个组件,一个“pcm”通道定义和一个“ctl”通道定义。“pcm”通道定义了我们的输出,并负责将多个声音流复用到单个硬件输出通道中。'ctl' 通道用于混音器,负责控制音量。
ALSA 使用称为“插头”的软件 pcm 通道来处理多路复用。它是从属 pcm 输出通道的软件前端。从属 pcm 输出通道本身必须能够进行混音。示例配置文件如下:
pcm.custom
{
type plug
slave
{
pcm "dmix:2,0"
}
}
ctl.custom
{
type hw
card Creative
}
pcm.!default pcm.custom
ctl.!default ctl.custom
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我将“dmix”输出通道用于系统“dmix:2,0”上的第三个声音设备。第三个索引是 2,因为它从 0(card0、card1、card2)开始。此外,“ctl”模式引用了同一张卡片,但这次使用的是软链接名称“Creative”。
我希望这对其他人有用。