如何配置 ALSA, 让声音缺省通过 HDMI 输出,但麦克风依然不变?

我的系统原先只使用系统自带的声卡,一切正常。但现在想将声音缺省输出到 HDMI 显示器。看了许多网上的资料,发现最简单的方法是在 ~/.asoundrc 里加入一行:

defaults.pcm.device  8

其中的 8 是我的 HDMI 设备号。这样确实所有程序的声音都输出到 HDMI 了,但录音设备也被同时修改了。如果这时运行

arecord  test.wav

来试图检测麦克风,会提示错误。因为麦克风也被修改成了缺省设备号 8. 这个时候只能添加额外的参数:

arecord  -D plughw:0,0  test.wav

来运行。显然不完美,因为不仅麻烦,而且有些录音软件可能没有相应的参数来修改设备号,只能用缺省设备。

应该让播放设备使用缺省设备号 8, 录音设备使用缺省设备号 0, 才是最终的解决办法。然后继续在网上寻找资料,改来改去,总是不成功。有时看上去似乎好了,但 alsa 设备却独占了。本来 alsa 设备不会独占,比如用 mpv 播放视频,这时可以继续运行 speaker-test , 两边的声音都同时播出。

有哪位知道怎么配置 ~/.asoundrc 文件,达到我的目的?注意我只使用纯的 alsa, 不使用更高级的 PulseAudio 一类的声音服务器。