web-dev-qa-db-ja.com

すべての出力でPulseAudioの音量を下げるまたは上げる

ラップトップのオーディオ設定を頻繁に変更しています(組み込みのジャックポートを使用している場合もあれば、まったくない場合もあります。USBヘッドフォンを使用している場合や、ラップトップのドックのジャックポートを使用している場合もあります)。音量を下げるまたは上げるためのキーボードショートカットすべての出力に対して同時にを使用したいので、現在アクティブなオーディオ出力に関係なく機能します。これを達成する最も簡単な方法は何ですか?また、pavucontrolでは100%を超えることができることもわかります。これは実用的である場合があるため、コマンドでもこれを実行できれば、それはすばらしいことです。

Debian Testing、カーネル4.9.0-3-AMD64、pulseaudio 10.0を実行しています。

4
Ted

これを行うにはスクリプトが必要です。デフォルトのシンクを制御する this のようなスクリプトがありますが、すべてのシンクを制御するスクリプトは見たことがありません。

pacmd list-sinksを使用してすべてのシンクのリストを取得し、pacmd set-sink-volumeを使用してボリュームを設定できるため、次のようなことを行う必要があります

VOLUME='+5%'
for SINK in `pacmd list-sinks | grep 'index:' | cut -b12-`
do
  pactl set-sink-volume $SINK $VOLUME
done

ここで、$VOLUMEは、絶対(150%)または相対(+5%-5%)のほか、場合によっては他の形式でもかまいません。

ほとんどのウィンドウマネージャーは、キーを押すと、引数を指定してスクリプトまたはプログラムを起動するように構成できます。これが最良の方法ですが、WMがそうでない場合は、xbindkeysのようなツールがあります。だからあなたは好きなようにカスタマイズすることができます。

シンクのボリュームが100%を超えると、Pulseaudioがハードウェアミキサーの使用を開始し、サウンドが歪む可能性があることに注意してください。

また、Pulseaudioではpamcd set-sink-input-volumeを使用して、各アプリケーション(「オーディオストリーム」)の音量を設定できます。 pacmd list-sink-inputsを使用してそれらをリストし、同様の方法で設定できます。

これにより、シンクボリュームを固定レベルにできるため、ハードウェアミキサーを使用せずにほぼ等しくなり、シンクを切り替えると、自動的に「適切な」ボリュームになります。それが私が好む設定です。

4
dirkt