3

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() をインスタンス化することですか、それとも既存のインスタンスの値を更新する簡単な方法はありますか?

4

1 に答える 1

1

ミキサーpolldescriptors()のドキュメントには次のように書かれています。

select.pollを使用してミキサーで変更を待機するために使用できる(ファイル記述子、イベントマスク)のタプルを返します。

于 2013-02-11T21:24:01.273 に答える