alsa-utils
パッケージに含まれるalsamixer
とamixer
は、ともに端末から音量調整を行うものだが、全く使い方が異なる。
端末上で、GUIのミキサーのような感覚で使える。
基本的にキーボードでの操作となるが、後になってマウスでの操作にも対応した。
端末から
$ alsamixer
とする他、ランチャやデスクトップ環境のコマンド実行機能で
gnome-terminal -e alsamixer
のように、GUIの端末ソフトウェアの-e
オプションに付けて起動する方法もある。
AlacrittyなどのWayland対応のものから伝統的なXTermまで、-e
オプションは端末内で実行するコマンドを指定するものとして広く対応している。
複数のサウンドデバイスがある場合、-c
(--card=[/proc/asound/cards にある角括弧内の名前またはサウンドデバイスの番号]
)でデバイスを指定できる(例:alsamixer -c Generic_1
)。
initrd環境内などの特殊な環境ではError opening terminal:
のエラーが出て起動しない場合があるが、その中にscreen
のterminfoファイルがあれば起動できる(なければ稼働しているOSの/lib/terminfo/
以下などから用意する)。
$ TERM=screen alsamixer
Error opening terminal: unknown.
が出る場合、環境変数TERM
が未定義の可能性があるので、適切な内容のTERM
を定義して実行する。
<
は,
のように、Shift
キーなしで押しても機能する。また、ヘルプに載っていないキー操作もある。
左右で異なる音量が指定できる場所では、100<>100
のように、左右に分けて表示され、そうでない場合は、数字が1つだけ表示される。
“X11用16ドットビットマップフォントmilkjfを使用する” の設定で(screen
を使わずに)使用していると、
のように罫線の一部が点線の豆腐になってしまうことがある。
上のように、カーネル設定をmake menuconfig
で行っても同様になる。これを回避するには下の設定をする。
~/.mlterm/main
# DEC_SPECIAL フォントの罫線文字のグリフを動的に合成
compose_dec_special_font = true
設定後は下のようになる。
amixer
は、ミキサー設定を非対話(処理中にユーザからの操作を受けない形)で実行する。その特性上、使い方は分かりにくいが、自動化がしやすい。
引数なしで実行すると、既定のサウンドデバイスについての項目の一覧が下のように表示される。
$ amixer
Simple mixer control 'Headphone',0
Capabilities: pswitch
Playback channels: Front Left - Front Right
Mono:
Front Left: Playback [off]
Front Right: Playback [off]
Simple mixer control 'PCM',0
Capabilities: pvolume
Playback channels: Front Left - Front Right
Limits: Playback 0 - 255
Mono:
Front Left: Playback 176 [69%] [-15.80dB]
Front Right: Playback 176 [69%] [-15.80dB]
Simple mixer control 'Front',0
Capabilities: pvolume pswitch
Playback channels: Front Left - Front Right
Limits: Playback 0 - 31
Mono:
Front Left: Playback 31 [100%] [0.00dB] [on]
Front Right: Playback 31 [100%] [0.00dB] [on]
(以下略)
“Capabilities” の値は、コントロールの形式で、pvolume pswitch
のように複数あるものも存在する。
例として、“Front” の項目は、ボリュームコントロールと消音(ミュート)切り替えという形で、複数のコントロールが存在する。
項目名 | 説明 |
---|---|
pvolume |
再生/ボリューム値 |
pswitch |
再生/オン・オフの切り替え |
cvolume |
録音/ボリューム値 |
cswitch |
録音/オン・オフの切り替え |
enum |
複数の項目から選択(取り込み元の選択など) |
現在の設定値は、
Front Left: Playback 31 [100%] [0.00dB] [on]
Front Right: Playback 31 [100%] [0.00dB] [on]
のような表示の部分で、値が31
(=100%
=0.00dB
)で、ミュートされていない(on
)状態であることが分かる。
有効な値の範囲は
Limits: Playback 0 - 255
“Limits” の行に表示され、上の場合、0
から255
までの256段階が指定できる。
値をセットする書式は
$ amixer (-c [名前またはサウンドデバイスの番号]) set [コントロール] [値]
となる。値については、生の値だけでなく、パーセント表記やdB表記も使用できる。消音設定の場合は “on
(unmute
)” “off
(mute
)” が指定できる。
$ amixer set Front off - Frontをミュート
$ amixer set Front on 80% - Frontのミュートを解除して80%の音量にする
$ amixer set PCM 200 - PCMの音量を「200」にする
amixer
のマニュアルページの中にも例があるので、参考に。
cron
を使用して、指定時刻に音量を下げる例。
$ crontab -e
で設定の編集を開始し、
0 22 * * * amixer set Front 50\%
という設定を記述すると、毎日22時0分に “Front” のボリュームを(最大音量に対して)50%
にする。
%
記号はcron
の設定の記述において特別な意味を持つため、手前に\
を付ける。
もし、複数の音量を続けて変更したいのであれば
sh -c "amixer set ... ; amixer set ..."
のように記述するcron
に実行させるコマンドの部分にスクリプトの場所を指定するなどの方法がある。
PulseAudioの音量調整ツールやデスクトップ環境の音量調整機能では、出力先の音量としてALSAのハードウェアレベルでの音量も調整ができる。
その他、GKrellMプラグイン(Debian/Ubuntuではgkrellm-volume
パッケージになっていて、URLはhttp://gkrellm.luon.net/volume.php (リンク切れにつきWayback Machine内))でもALSAの音量を調整できる。場所もとらず、手軽に音量変更ができるので便利。