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]'
新しいミキサー設定をポーリングする唯一の方法は new Mixer() をインスタンス化することですか、それとも既存のインスタンスの値を更新する簡単な方法はありますか?