我经常使用耳机,选择是使用耳机还是普通声卡我使用环境变量,这要归功于 ~/.asound.rc 中的以下代码:
@args.CARD {
type string
default {
@func getenv
vars {
0 ALSA_CARD
}
default {
@func refer
name 'defaults.pcm.card'
}
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,新耳机 (hw:Set) 的频道颠倒了,所以我创建了一个 pcm 来修复,将这些行添加到 ~/.asoundrc:
pcm.swapped {
type route
slave {
pcm "hw:Set"
}
ttable.0.1 1
ttable.1.0 1
}
pcm.HeadsetSwapped {
type plug
slave {
pcm "pcm.swapped"
}
}
Run Code Online (Sandbox Code Playgroud)
pcm 有效,但我如何决定通过环境变量使用它?目前 env 变量只接受卡片名称。它可能与 -- name 'defaults.pcm.card' -- 行有关,但我无法修复它。
我知道我可以将 pcm.HeadsetSwapped 更改为 pcm.!default,但我想避免每次要启动程序时都编辑文件...
使用这样的东西,并将环境变量MY_DEVICE设置为hwor swapped:
pcm.!default {
type plug
slave.pcm {
@func getenv
vars [ MY_DEVICE ]
default "hw"
}
}
pcm.swapped {
type route
slave.pcm "hw:Set"
ttable.0.1 1
ttable.1.0 1
}
Run Code Online (Sandbox Code Playgroud)