ALSA (Advanced Linux Sound Architecture) 設定

Raspberry PiでUSBマイクを利用する場合の音声入力設定と、3.5mmオーディオジャック、HDMIから音声出力するための音声出力設定はALSAにて行います。設定項目やALSA関連のコマンドがややこしいのでここで纏めます。

ALSA本家

ALSA Wiki(Arch Linux)

Advanced Linux Sound Architecture - ArchWiki.

インストールパッケージ

alsa-base/stable,now 1.0.27+1 all [installed]
  dummy package to ease purging of obsolete conffiles

alsa-utils/stable,now 1.2.4-1+rpt1 armhf [installed]
  Utilities for configuring and using ALSA

Softvol

ソフトウェアによって新しい音量コントロールを追加し、音声の音量またはその一部を制御することができる、ALSAプラグイン。サウンドカードがハードウェアによる音量制御を行えない場合やアプリケーション自体が音量制御を行えない場合でも音量を個別に制御できます。

Dsnoop

dsnoop は dmix プラグインと同等ですが、サウンドを録音するためのものです。 dsnoop プラグインを使用すると、複数のアプリケーションが同じデバイスから同時に録音できるようになります。

Dmix

複数のストリームを直接ミキシングする機能を提供。
注) ALSA 1.0.9rc2以降では、アナログ出力のためにdmixを設定する必要はありません。ハードウェアミキシングをサポートしないサウンドカードに対して、dmixはデフォルトで有効になっています。ただし、デジタル出力に対しては引き続き設定する必要があります。

Asym

asymは、dsnoopやdmixなどの半二重PCMプラグインを1つの全二重デバイスに結合するALSA PCMプラグイン。ALSAバージョン1.0.1以降から、asymはALSAに含まれています。

alsemixer : 再起動後に設定がリセット

Alsamixer settings reset after reboot - Debian User Forums

rootユーザでのログインに起因するかもしれませんが、.asoundrcのalsamixerの設定が再起動後に読み込まれない問題が発生。

1はcardナンバー:aplay -l で確認

# alsactl store 1

ALSA設定の確認

# cat /var/lib/alsa/asound.state

ALSA設定クリア

# rm -f /var/lib/alsa/asound.state
# alsactl restore
# alsactl --no-ucm restore

ucmUse Case Manager の略で、ALSA (Advanced Linux Sound Architecture) のユースケース管理システムです。

ALSA には、特定のハードウェアのための設定を管理する仕組みがあり、Use Case Manager (UCM) は、音声の異なるユースケース (例: 音楽再生、通話、録音 など) に応じた設定を適用するための仕組みです。

Yocto で Raspberry Pi 2 を使っている環境では、UCMが正しく構成されていない可能性があるため、このオプションを指定。