使用和配置 ALSA 插件 dmix 和 dsnoop 进行立体声播放和捕获

使用和配置 ALSA 插件 dmix 和 dsnoop 进行立体声播放和捕获

我在我的电脑上安装了一个新的基于 PCI 的声卡。它有 8 个基于 S/PDIF 的 I/O 对,每对编号为 1 到 8,用于输入和输出。我尝试使用第 3-8 行作为立体声输入(麦克风),使用第 3-8 行作为立体声输出(播放):

  • 第 3 行 + 第 4 行 = 通道 1(输入和输出),
  • 第 5 行 + 第 6 行 = 通道 2(输入和输出),
  • 第 7 行 + 第 8 行 = 通道 3(输入和输出)。

所以,我创建了以下内容.asoundrc

pcm.!default {
    type plug
    slave {
       pcm "hw:1,0"
    }
}

ctl.!default {
    type hw
    card 1
}


pcm.play_out_44 {
    type dmix
    ipc_key 1201
    ipc_key_add_uid true
    slave {
        pcm "hw:1,0"
        channels 2
        rate 44100
        format S32_LE
        buffer_size 4096
        period_size 1024
    }
}

pcm.rec_in_44 {
    type dsnoop
    ipc_key 1210
    slave {
        pcm "hw:1,0"
        channels 2
        rate 44100
        buffer_size 4096
        period_size 1024
    }
}


pcm.outch1 {
    type plug
    slave {
        pcm "play_out_44"
        bindings { 
            2 2
            3 3
        }
        hint.description "PCI Card Stereo output/playback channel 1 (from output ports 3 & 4)"
    }
}

pcm.inch1 {
    type plug
    slave {
        pcm "rec_in_44"
        bindings { 
            2 2
            3 3
        }
        hint.description "PCI Card Stereo input/capture channel 1 (from input ports 3 & 4)"
    }
}

pcm.outch2 {
    type plug
    slave {
        pcm "play_out_44"
        bindings { 
            4 4
            5 5
        }
        hint.description "PCI Card Stereo output/playback channel 2 (from output ports 5 & 6)"
    }
}

pcm.inch2 {
    type plug
    slave {
        pcm "rec_in_44"
        bindings { 
            4 4
            5 5
        }
        hint.description "PCI Card Stereo input/capture channel 2 (from input ports 5 & 6)"
    }
}

pcm.outch3 {
    type plug
    slave {
        pcm "play_out_44"
        bindings { 
            6 6
            7 7
        }
        hint.description "PCI Card Stereo output/playback channel 3 (from output ports 7 & 8)"
    }
}

pcm.inch3 {
    type plug
    slave {
        pcm "rec_in_44"
        bindings { 
            6 6
            7 7
        }
        hint.description "PCI Card Stereo input/capture channel 3 (from input ports 7 & 8)"
    }
}

如上所述这里,我创建了一个新dmix类型来适合我的配置。但是当我尝试打开Audacity尝试播放和捕获时,录制设备或播放设备列表中没有 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、inch1inch2inch3、、outch1outch2outch3

如何.asoundrc在我的设备上修改或创建立体声播放和立体声捕捉?

答案1

outch我用传统的立体声声卡重现了插头的问题。我认为inch插头也有类似的问题。

问题是:这些plugs不接受字段bindingshint。我想你并不真正hint需要bindings进入dmixdsnooper(看这里

如果您想更快地调试您的设置,而不必每次都开始大胆,这就是我要做的(以及我如何诊断您的问题):

  • 为您的 pcms 提供易于 grep 的名称。我重命名了你的,所以它们总是以“xx”开头。
  • 跑步aplay -L | grep xx。那么你至少应该你的PCM。随着你的剥离 .asoundrc 我看到

   xxplay_out_44
   xxoutch1
  • 找到一些 wav 文件,例如locate *.wav | head
  • 使用上一步中发现的 pcm 之一播放 wav 文件

    > aplay -D xxoutch1  /usr/share/sounds/sound-icons/xylofon.wav 
    ALSA lib pcm.c:7448:(snd_pcm_slave_conf) Unknown field bindings

现在你有一个不错的错误消息。如果你删除bindings你会看到它抱怨该hint字段。

相关内容