コマンドラインからpactlで音量を変更する件に関して

PulseAudioをコマンドラインから操作するのにpactlというコマンドがあります。
pactl set-sink-volume 0 +5%
でサウンドボリュームを上げることが出来たのですが、パソコン前面のサウンド出力にヘッドフォンを接続するとこのコマンドではエラーが出てしまいました。
エラーは以下の通り。
シンク情報の取得に失敗しました: そのようなエンティティはありません

さてPaulseAudioについて調べてみると、どうもコマンド内の「0」の部分が他の値に切り替わったための模様。なんとか調べてこの値を変更してやると、ちゃんとボリューム操作することが出来ました。

自分は上のコマンドをキーボードショートカットに割り当てて、それでボリューム操作をしています。ただその場合だと値が変わる度にコマンドを変更するのはめんどうです。
ただパソコン前面のサウンド出力を使わなければ変わることはないとは思います。現に数カ月くらいはまったく問題なかったですし。

で、ネットでいくつか検索してみると、値については「@DEFAULT_SINK@」というのが使えるとのこと。上のエラーメッセージにも出てますがシンクというのが関連してるんでしょう。詳しくはPaulseAudio内でのシンクの扱いがどうなってるのか調べる必要があるのですが、ちょっとめんどうになりそうなので今回はお試しでそのまま使ってみます。
この値を使うと、コマンドは以下のようになります
pactl set-sink-volume @DEFAULT_SINK@ +5%
これだと値が変わっても柔軟に対応出来そうな感じがします(まだそれほど確かめてはいませんが)。

コメント