python的alsaaudio.mixer没有刷新混音器设置

时间:2013-02-11 19:27:48

标签: python linux alsa

我想从python控制ALSA声卡的调音台。同时,我希望能够从其他可能同时修改声卡的应用程序中获得更改。

我想最简单的方法是使用声卡的混音器界面来设置和查询调音台。 对于alsaaudio包,这应该相当容易:

import alsaaudio
mixer=alsaaudio.Mixer()
print mixer.getvolume() # prints e.g. '[100L]'
mixer.setvolume(50)
print mixer.getvolume() # prints '[50L]'

不幸的是,如果控件在“引擎盖下”发生变化,则Mixer的实例不会被更新。 考虑上面的应用程序在运行,但是现在用alsamixergui到80之类的东西来改变调音台。

print mixer.getvolume()  # prints '[50L]'
mixer2=alsaaudio.Mixer()
print mixer2.getvolume() # prints '[80L]'
print mixer.getvolume()  # prints '[50L]'

实例化一个新的Mixer()是轮询新混音器设置的唯一方法,还是有一种更简单的方法来刷新现有实例的值?

1 个答案:

答案 0 :(得分:0)

Mixer.polldescriptors() documentation说:

  

返回(文件描述符,事件掩码)的元组,可用于等待 select.poll 的混音器更改。