alsa ~/.asoundrc 中 pcm 和 ctl 的区别

V. *_* L. 5 sound alsa

我需要编写一个~/.asoundrc文件来配置一些音频设备,因为我需要能够从这些设备中选择单个通道。

因为我对 alsa 不太有经验,所以我开始寻找该主题的简介。它指出基本.asoundrc文件如下所示:

pcm.!default {
    type hw
    card 0
}

ctl.!default {
    type hw           
    card 0
}
Run Code Online (Sandbox Code Playgroud)

但我不知道这个ctl选项有什么用。我在ALSA 文档中找到的内容仍然没有向我清楚地解释:

“pcm”选项影响哪个卡和设备将用于音频播放,而“ctl”选项影响控制实用程序(如 alsamixer)使用哪个卡。

pcm和 和有什么区别ctl?他们的目的是什么?什么时候使用哪一个?


更新
我现在可以在同一设备上但通过两个不同的通道播放不同的音频流:

pcm.USB_hw{
    type hw
    format S16_LE
    rate 48000
    card 2
    device 0
    subdevice 0
    channels 2
}

pcm.USB_dmix{
    type dmix
    ipc_key 1111
    slave.pcm "USB_hw"

    hint {
        description "Direct sample mixing device"
    }
}

pcm.OUTPUT0 {
    type plug
    slave.pcm {
        type route
        slave.pcm "USB_dmix"

        ttable{
            0.0 0
            1.1 1
        }

        hint {
            description "Playback channel 0 over USB"
        }
    }
}

pcm.OUTPUT1 {
    type plug
    slave.pcm {
        type route
        slave.pcm "USB_dmix"

        ttable {
            0.0 1
            1.1 0
        }

        hint {
            description "Playback channel 1 over USB"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它工作正常,但我无法OUTPUT0访问. 此访问权限可能是在选项中配置的,但我从未使用过。 OUTPUT1alsamixerctl

问题是如何配置ctl以便这些插件将显示在alsamixer
有可能吗?