ボリュームを制御して監視するための素晴らしいwm用ウィジェットを作成しようとしています。
ALSAとPulseAudioでは、スピーカーの音量を取得して設定するのは簡単ですが、実際の信号強度を得るにはどうですか?
つまり、聞こえる実際の騒音を意味します。たとえば、サウンドが再生されない場合、ノイズはゼロです。アンプ(VUモニター)で見るのと同じです。
/proc/
通常、使用中のコンテンツ(CPU使用率など)の値を含むファイルを見つけることができますが、/proc/stat
今回はそうではありません。
実際に目標は、アンプのゲインVUモニターに似たライブオーディオディスプレイ(好ましくは別々のL / Rチャンネル)を表示することです。
問題は、クールなwmをプログラムするのではなく、これを実行するために使用できる値を取得する方法です。
ベストアンサー1
私はこれが些細なことではないと思いますが、この質問はおそらくstackoverflowに移動する必要があります。
私が知る限り、最終(ALSA)[オーディオ]ミックスにアクセスできるインターフェイスがないか、sysfs
まったくありません。一部のハードウェア(たとえば)が独自のミキシングを実行してprocfs
も、ソフトウェアにそのようなものが存在するという保証はありません。emu10k1
それがどのように動作するかわからないことを認めますが。
複数のカードの可能性は言うまでもなく、同じカードに複数のオーディオ出力(デジタル(例:SPDIF)、アナログ、ヘッドフォン、スピーカーなど)、および複数のスピーカー構成の問題もあります。
最善の方法は、使用されるすべてのALSAデバイスを利用することです(おそらくhw0
pulseaudioなどのサウンドサブシステムでミキシングが発生した場合、またはサウンドサブシステムがdmix
使用されていない場合)。これは、オーディオがハードウェアに到達する前の「最後のステップ」であるためです。 。もしそうなら、これが可能かどうかはわかりません。
ユーザーがpulseaudioのようなものを使用していると仮定すると、操作ははるかに簡単になります。次のソフトウェア勉強コントロールこれは以下のように達成された。遊ぶタップはもちろん、プレファイナルミックスステージまで出力デバイス。技術的には、オーディオストリーム自体を取得し、それを周波数領域に変換することが含まれます(例:ストーブ)何らかの方法でこれを視覚化するために実際に必要なのは、pulseaudioが受信機を介して提供できるオーディオストリームへのアクセスです(pavucontrolと同様)。
あまり役に立ちませんよね?私があなたであり、これを私のデスクトップにのみ使用したい場合、そして私がパルスオーディオ(私が直接使用した)を使用していた場合、私の最初の目標は最終的な混合フローを得ることを試みることです。その人はここにいます。このスレッドpactl
justとを使ってこれを行う説得力のある方法を見つけたようですpacmd
。これはプログラムで簡単に実行できます。
オーディオストリーミングをマスターすると、残りは数学だけです:-)