通过环境变量选择默认的alsa PCM(非卡)

时间:2013-06-14 09:56:48

标签: linux alsa audio

我经常使用耳机,选择是否使用耳机或 正常的声卡我用环境变量谢谢 到〜/ .asound.rc中的代码:

@args.CARD {
  type string
  default {
    @func getenv
    vars {
      0 ALSA_CARD
    }
    default {
      @func refer
      name 'defaults.pcm.card'
    }
  }
}

不幸的是,新的耳机(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"
  }
}

pcm有效,但我如何决定通过环境使用它 变量?目前,env变量只接受卡名称。 它可能是名字'defaults.pcm.card' - 但我无法修复它。

我知道我可以将pcm.HeadsetSwapped更改为pcm。!default, 但我想避免每次编辑文件 我想开始一个程序......

1 个答案:

答案 0 :(得分:3)

使用类似的内容,并将环境变量MY_DEVICE设置为hwswapped

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
}