alsamixerとamixer、GUIのミキサー

Last modified: 2021-09-27

alsa-utilsパッケージに含まれるalsamixeramixerは、ともに端末から音量調整を行うものだが、全く使い方が異なる。

alsamixer

端末上で、GUIのミキサーのような感覚で使える。

基本的にキーボードでの操作となるが、後になってマウスでの操作にも対応した。

起動

端末から

$ alsamixer

とする他、ランチャやデスクトップ環境のコマンド実行機能で

gnome-terminal -e alsamixer

のように、GUIの端末ソフトウェアの-eオプションに付けて起動する方法もある。

AlacrittyなどのWayland対応のものから伝統的なXTermまで、-eオプションは端末内で実行するコマンドを指定するものとして広く対応している。

複数のサウンドデバイスがある場合、-c(--card=[/proc/asound/cards にある角括弧内の名前またはサウンドデバイスの番号])でデバイスを指定できる(例:alsamixer -c Generic_1)。

terminfoが原因で起動に失敗する場合と対処

initrd環境内などの特殊な環境ではError opening terminal:のエラーが出て起動しない場合があるが、その中にscreenのterminfoファイルがあれば起動できる(なければ稼働しているOSの/lib/terminfo/以下などから用意する)。

$ TERM=screen alsamixer

Error opening terminal: unknown.が出る場合、環境変数TERMが未定義の可能性があるので、適切な内容のTERMを定義して実行する。

主な操作方法

<,のように、Shiftキーなしで押しても機能する。また、ヘルプに載っていないキー操作もある。

左右で異なる音量が指定できる場所では、100<>100のように、左右に分けて表示され、そうでない場合は、数字が1つだけ表示される。

mltermで罫線が点線の豆腐?になる場合

X11用16ドットビットマップフォントmilkjfを使用する” の設定で(screenを使わずに)使用していると、

keisen-alsamixer-before

のように罫線の一部が点線の豆腐になってしまうことがある。

keisen-menuconfig-before

上のように、カーネル設定をmake menuconfigで行っても同様になる。これを回避するには下の設定をする。

ファイル名:~/.mlterm/main
# DEC_SPECIAL フォントの罫線文字のグリフを動的に合成
compose_dec_special_font = true

設定後は下のようになる。

keisen-alsamixer-after

keisen-menuconfig-after

amixer

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に実行させるコマンドの部分にスクリプトの場所を指定する

などの方法がある。

GUIのミキサー

PulseAudioの音量調整ツールやデスクトップ環境の音量調整機能では、出力先の音量としてALSAのハードウェアレベルでの音量も調整ができる。

その他、GKrellMプラグイン(Debian/Ubuntuではgkrellm-volumeパッケージになっていて、URLはhttp://gkrellm.luon.net/volume.php (リンク切れにつきWayback Machine内))でもALSAの音量を調整できる。場所もとらず、手軽に音量変更ができるので便利。