「Advanced Linux Sound Architecture」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
 
(文字列「http://www.mjmwired.net/」を「https://www.mjmwired.net/」に置換)
(2人の利用者による、間の12版が非表示)
1行目: 1行目:
 
[[Category:サウンド]]
 
[[Category:サウンド]]
[[Category:音声/動画]]
+
[[Category:マルチメディア]]
 
[[cs:Advanced Linux Sound Architecture]]
 
[[cs:Advanced Linux Sound Architecture]]
 
[[de:Alsa]]
 
[[de:Alsa]]
15行目: 15行目:
 
[[th:Advanced Linux Sound Architecture]]
 
[[th:Advanced Linux Sound Architecture]]
 
[[tr:Gelişmiş_ses_mimarisi_(ALSA)]]
 
[[tr:Gelişmiş_ses_mimarisi_(ALSA)]]
[[zh-CN:Advanced Linux Sound Architecture]]
+
[[zh-hans:Advanced Linux Sound Architecture]]
{{Related articles start (日本語)}}
+
{{Related articles start}}
  +
{{Related|Advanced Linux Sound Architecture/設定例}}
  +
{{Related|Advanced Linux Sound Architecture/トラブルシューティング}}
 
{{Related|サウンドシステム}}
 
{{Related|サウンドシステム}}
{{Related|PC スピーカーのビープ音無効化}}
+
{{Related|PC スピーカーのビープ音無効化}}
  +
{{Related|PulseAudio}}
  +
{{Related|Open Sound System}}
 
{{Related articles end}}
 
{{Related articles end}}
 
[[Wikipedia:ja:Advanced Linux Sound Architecture|Advanced Linux Sound Architecture]] ('''ALSA''') は、サウンドカードのデバイスドライバを提供する Open Sound System (OSSv3) を置き換えるために開発された Linux カーネルコンポーネントです。デバイスドライバの他に、'''ALSA''' は、カーネルドライバと直接やりとりせずに高レベルの API を使ってドライバ機能を使いたいという開発者のために、ユーザ空間のライブラリも提供しています。
 
[[Wikipedia:ja:Advanced Linux Sound Architecture|Advanced Linux Sound Architecture]] ('''ALSA''') は、サウンドカードのデバイスドライバを提供する Open Sound System (OSSv3) を置き換えるために開発された Linux カーネルコンポーネントです。デバイスドライバの他に、'''ALSA''' は、カーネルドライバと直接やりとりせずに高レベルの API を使ってドライバ機能を使いたいという開発者のために、ユーザ空間のライブラリも提供しています。
 
{{Note|もうひとつのサウンド環境については、[[Open Sound System]] のページを見て下さい。}}
 
   
 
==インストール==
 
==インストール==
28行目: 30行目:
 
ALSA はデフォルトの Arch カーネルにモジュールセットとして含まれているので、インストールは不要です。
 
ALSA はデフォルトの Arch カーネルにモジュールセットとして含まれているので、インストールは不要です。
   
起動時に自動で [[udev]] があなたのハードウェアを調べて、オーディオカード用の適切なカーネルモジュールをロードします。したがって、サウンドはすでに鳴らせるはずです。ただ、デフォルトでは全てのチャンネルはミュートにされています。
+
起動時に自動で [[udev]] があなたのハードウェアを調べて、オーディオカード用の適切なカーネルモジュールをロードします。したがって、サウンドはすでに鳴らせるはずです。ただ、デフォルトでは全てのチャンネルはミュートにされています。[[#チャンネルのミュートを解除する|チャンネルのミュートを解除]]してください
   
  +
=== ユーザー権限 ===
(仮想端末やディスプレイマネージャで)ローカルログインしたユーザーには音楽を再生したりミキサーレベルを変更する権限があります。リモートログインしたときにこれらをするには、ユーザーを {{ic|audio}} グループに[[ユーザーとグループ#グループ管理|追加する]]必要があります。{{ic|audio}} グループに含まれているユーザーは直接デバイスにアクセスできるので、アプリケーションから排他的にアウトプットしたり(ソフトウェアミキシングが破壊されます)、高速ユーザー切り替えや multiseat を破壊してしまうおそれがあります。よって、特に必要がないのならばユーザーを {{ic|audio}} グループに追加することは'''推奨されません'''[https://wiki.ubuntu.com/Audio/TheAudioGroup]。
 
   
  +
(仮想端末やディスプレイマネージャで)ローカルログインしたユーザーには音楽を再生したりミキサーレベルを変更する権限があります。
===ユーザースペースユーティリティ===
 
   
  +
リモートログインしたときにこれらをするには、ユーザーを {{ic|audio}} グループに[[ユーザーとグループ#グループ管理|追加]]する必要があります。
[[公式リポジトリ]]から {{Pkg|alsa-utils}} パッケージを[[インストール]]してください、サウンドデバイスをコンソールや端末から設定するための {{ic|alsamixer}} ユーザー空間ツールが含まれています。また、[[#高品質なリサンプリング|高品質なリサンプリング]]や[[#アップ・ダウンミキシング|アップ・ダウンミキシング]]などの高度な機能を使いたい場合は {{Pkg|alsa-plugins}} パッケージをインストールしてください。
 
   
  +
{{Note|1={{ic|audio}} グループに含まれているユーザーは直接デバイスにアクセスできるので、アプリケーションから排他的にアウトプットしたり(ソフトウェアミキシングが破壊されます)、高速ユーザー切り替えや multiseat を破壊してしまうおそれがあります。よって、特に必要がないのならばユーザーを {{ic|audio}} グループに追加することは'''推奨されません'''[https://wiki.ubuntu.com/Audio/TheAudioGroup]。}}
OSS アプリケーションに dmix (ソフトウェアミキシング) を扱わせたい場合は {{Pkg|alsa-oss}} パッケージをインストールして {{ic|snd_seq_oss}}, {{ic|snd_pcm_oss}}, {{ic|snd_mixer_oss}} [[カーネルモジュール]]をロードして OSS エミュレーションモジュールを有効にしてください。
 
  +
  +
===ALSA ユーティリティ===
  +
  +
{{Pkg|alsa-utils}} パッケージを[[インストール]]してください、サウンドデバイスをコンソールや端末から設定するための {{ic|alsamixer}} ユーザー空間ツールが含まれています。また、[[#高品質なリサンプリング|高品質なリサンプリング]]や[[#アップ・ダウンミキシング|アップ・ダウンミキシング]]などの高度な機能を使いたい場合は {{Pkg|alsa-plugins}} パッケージをインストールしてください。
  +
  +
===OSS との互換性===
  +
  +
{{Note|{{ic|/dev/dsp}} や {{ic|/dev/snd/seq}} が存在しないとアプリケーションがエラーを吐く場合は以下の設定が必要です。}}
  +
  +
ALSA には [[OSS]] のコールに介入して ALSA を使うようにさせる機能があります。このエミュレーションレイヤーは {{ic|/dev/dsp}} を開いて音声データを直接書き込むような古いアプリケーションで有用です。OSS やエミュレーションライブラリがないと、{{ic|/dev/dsp}} が見つからずにアプリケーションは音声を鳴らすことができません。
  +
  +
OSS アプリケーションに dmix (ソフトウェアミキシング) を扱わせたい場合は {{Pkg|alsa-oss}} パッケージをインストールして {{ic|snd-seq-oss}}, {{ic|snd-pcm-oss}}, {{ic|snd-mixer-oss}} [[カーネルモジュール]]をロードして OSS エミュレーションモジュールを有効にしてください。
  +
  +
=== PulseAudio との互換性 ===
  +
  +
{{AUR|apulse}} を使うことで [[PulseAudio]] にしか対応していないアプリケーションで ALSA を利用することができます。使用方法は {{ic|$ apulse ''yourapplication''}} とアプリケーションを起動するだけです。
  +
  +
===ALSA と systemd===
  +
{{pkg|alsa-utils}} パッケージには、それぞれ起動時とシャットダウン時に動くように設定された {{ic|alsa-restore.service}} と {{ic|alsa-state.service}} が含まれています。
  +
  +
自動的にインストールされ有効化されるため、特に設定は必要ありません。{{ic|systemctl}} を使うことでステータスを確認できます。
  +
  +
{{Note|1=ALSA は設定を {{ic|/var/lib/alsa/asound.state}} に保存します。}}
  +
  +
=== ALSA ファームウェア ===
  +
  +
{{Pkg|alsa-firmware}} パッケージには特定のサウンドカードを使うのに必要なファームウェアが含まれています (例: Creative SB0400 Audigy2)。
   
 
==チャンネルのミュートを解除する==
 
==チャンネルのミュートを解除する==
   
 
現在のバージョンでは ALSA をインストールしたあと全てのチャンネルは'''デフォルトでミュートされています'''。手動でチャンネルをアンミュートする必要があります。
 
現在のバージョンでは ALSA をインストールしたあと全てのチャンネルは'''デフォルトでミュートされています'''。手動でチャンネルをアンミュートする必要があります。
  +
  +
===amixer を使ってミュートを解除===
  +
  +
コマンドラインで {{ic|amixer}} を使うことでサウンドカードのマスターボリュームのミュートを解除できます:
  +
  +
$ amixer sset Master unmute
  +
  +
===alsamixer を使ってミュートを解除===
   
 
{{ic|alsamixer}} ncurses UI を使えば簡単にミュートを解除できます:
 
{{ic|alsamixer}} ncurses UI を使えば簡単にミュートを解除できます:
46行目: 83行目:
 
$ alsamixer
 
$ alsamixer
   
  +
{{ic|alsamixer}} の、チャンネルの下の {{ic|MM}} ラベルはそのチャンネルがミュートになっていることを示しています。{{ic|00}} はミュートが解除されていることを示しています。
もしくは、コマンドラインで {{ic|amixer}} を使って下さい:
 
   
  +
{{ic|←}} や {{ic|→}} キーを押して {{ic|Master}} や {{ic|PCM}} チャンネルに移動して {{ic|m}} キーを押してミュートを解除してください。{{ic|↑}} キーを押してボリュームを上げて値を {{ic|0}} dB ゲインにしてください。ゲインは左上の {{ic|項目:}} の隣に表示されます。
$ amixer sset Master unmute
 
   
  +
{{Note|ゲインを大きくしすぎると音にノイズが混じります。}}
{{ic|alsamixer}} の、チャンネルの下の {{ic|MM}} ラベルはそのチャンネルがミュートになっていることを示しています。{{ic|00}} はミュートが解除されていることを示しています。
 
   
  +
=== 5.1/7.1 サウンドのミュートの解除 ===
{{ic|←}} や {{ic|→}} キーを押して {{ic|Master}} や {{ic|PCM}} チャンネルに移動して {{ic|m}} キーを押してミュートを解除してください。{{ic|↑}} キーを押してボリュームを上げて値を {{ic|0}} dB ゲインにしてください。ゲインは左上の {{ic|項目:}} の隣に表示されます。ゲインを大きくしすぎると音にノイズが混じります。
 
   
5.1 または 7.1 サラウンドを鳴らしたいときは Front, Surround, Center, LFE (サブウーファー), Side などの他のチャンネルも同じようにミュートを解除してください(これらのチャンネル名は Intel HD Audio のものです、チャンネル名はハードウェアによって変わっているかもしれません)。ミュートを解除しただけではステレオ音源は自動でアップミキシングされません。これをするには [[#アップ・ダウンミキシング]] を見て下さい
+
5.1 または 7.1 サラウンドを鳴らしたいときは Front, Surround, Center, LFE (サブウーファー), Side などの他のチャンネルも同じようにミュートを解除してください(これらのチャンネル名は Intel HD Audio のものです、チャンネル名はハードウェアによって変わっているかもしれません)。
   
  +
{{Note|ミュートを解除しただけではステレオ音源は自動でアップミキシングされません。[[#アップ・ダウンミキシング]] を見て下さい。}}
マイクロフォンを有効にするには、Capture タブに {{ic|F4}} で切り替えてチャンネルを {{ic|Space}} で有効にしてください。
 
   
  +
=== マイクの有効化 ===
alsamixer を終了するときは {{ic|Esc}} を押して下さい。
 
   
  +
マイクロフォンを有効にするには、Capture タブに {{ic|F4}} で切り替えてチャンネルを {{ic|Space}} で有効にしてください。マイクが使えない時は [[Advanced Linux Sound Architecture/トラブルシューティング#マイクロフォン]] を見て下さい。
{{Note|
 
  +
* カードによってはアナログサウンドを聞くためにはデジタル出力をミュートする必要があります。Soundblaster Audigy LS では IEC958 チャンネルをミュートしてください。
 
  +
=== テスト ===
* マシンによっては (Thinkpad T61 など)、Speaker チャンネルのミュートを解除する必要があります。
 
* マシンによっては (Dell E6400 など)、同じく {{ic|Front}} や {{ic|Headphone}} チャンネルのミュートを解除する必要があります。
 
* 再起動するとボリューム調整が元に戻ってしまう場合、root で alsamixer を実行してみて下さい。
 
}}
 
   
 
次に、音が鳴るかテストしてみましょう:
 
次に、音が鳴るかテストしてみましょう:
75行目: 109行目:
 
$ speaker-test -c 8
 
$ speaker-test -c 8
   
音が出ない場合、[[#設定]] そし [[#トラブルシューティング]] に進ん問題解決してください
+
間違ったデバイスから音が出力される場合、{{ic|-D}} 引数を使っ手動デバイス指定てみてください:
   
  +
$ speaker-test -D default:PCH -c 8
{{pkg|alsa-utils}} パッケージには、それぞれ起動時とシャットダウン時に動くように設定された {{ic|alsa-restore.service}} と {{ic|alsa-store.service}} が含まれています。参考までに言うと、ALSA は設定を {{ic|/var/lib/alsa/asound.state}} に保存します。
 
  +
  +
{{ic|-D}} では PCM チャンネルの名前を値として指定できます。以下のコマンドで確認することができます:
  +
  +
{{hc|<nowiki>$ aplay -L | grep :CARD</nowiki>|2=
  +
default:CARD=PCH # 'default:PCH' is the PCM channel name for -D
  +
sysdefault:CARD=PCH
  +
front:CARD=PCH,DEV=0
  +
surround21:CARD=PCH,DEV=0
  +
surround40:CARD=PCH,DEV=0
  +
surround41:CARD=PCH,DEV=0
  +
surround50:CARD=PCH,DEV=0
  +
surround51:CARD=PCH,DEV=0
  +
surround71:CARD=PCH,DEV=0
  +
}}
  +
  +
音が出ない場合、[[#設定]]や [[Advanced Linux Sound Architecture/トラブルシューティング]]に進んで問題を解決してください。
  +
  +
===ノート===
  +
  +
* カードによってはアナログサウンドを聞くためにはデジタル出力をミュートする必要があります。Soundblaster Audigy LS では IEC958 チャンネルをミュートしてください。
  +
* マシンによっては (Thinkpad T61 など)、Speaker チャンネルのミュートを解除する必要があります。
  +
* マシンによっては (Dell E6400 など)、同じく {{ic|Front}} や {{ic|Headphone}} チャンネルのミュートを解除する必要があります。
  +
* 再起動するとボリューム調整が元に戻ってしまう場合、root で alsamixer を実行してみて下さい。
   
 
==設定==
 
==設定==
  +
  +
システムの設定ファイルは {{ic|/etc/asound.conf}} で、ユーザー別の設定ファイルは {{ic|~/.asoundrc}} です。
   
 
===デフォルトサウンドカードの設定===
 
===デフォルトサウンドカードの設定===
170行目: 229行目:
 
アプリケーション (mplayer など) を(再)起動すれば変更はすぐ適用されます。また、''aplay'' などのコマンドを使ってテストすることが可能です。
 
アプリケーション (mplayer など) を(再)起動すれば変更はすぐ適用されます。また、''aplay'' などのコマンドを使ってテストすることが可能です。
   
$ aplay -D default ''your_favourite_sound.wav''
+
$ aplay -D default:PCH ''your_favourite_sound.wav''
   
asound 設定に関するエラーが表示される場合は、[http://www.alsa-project.org/main/index.php/Asoundrc#The_default_plugin upstream documentation] を確認して設定ファイルフォーマットの変更を確認してください。
+
asound 設定に関するエラーが表示される場合は、[http://www.alsa-project.org/main/index.php/Asoundrc#The_default_plugin 上流のドキュメント] を確認して設定ファイルフォーマットの変更を確認してください。
   
 
===サウンドモジュールがロードされていることを確かめる===
 
===サウンドモジュールがロードされていることを確かめる===
191行目: 250行目:
   
 
出力が上と同じようになっていれば、サウンドドライバが首尾よく自動検出されています。
 
出力が上と同じようになっていれば、サウンドドライバが首尾よく自動検出されています。
{{Note|{{ic|udev>&#61;171}} から、OSS エミュレーションモジュール ({{ic|snd_seq_oss, snd_pcm_oss, snd_mixer_oss}}) はデフォルトではロードされないようになりました: 必要ならば[[kernel modules (日本語)#ロード|手動でロードしてください]]。}}
+
{{Note|{{ic|udev>&#61;171}} から、OSS エミュレーションモジュール ({{ic|snd_seq_oss, snd_pcm_oss, snd_mixer_oss}}) はデフォルトではロードされないようになりました: 必要ならば[[カーネルモジュール#ロード|手動でロードしてください]]。}}
   
 
{{ic|/dev/snd/}} ディレクトリにデバイスファイルがあるか調べてもいいかもしれません:
 
{{ic|/dev/snd/}} ディレクトリにデバイスファイルがあるか調べてもいいかもしれません:
215行目: 274行目:
   
 
* サウンドカードのモジュールを確認します: [http://www.alsa-project.org/main/index.php/Matrix:Main ALSA Soundcard Matrix] モジュールには名前の前に 'snd-' が付きます (例: {{ic|snd-via82xx}})。
 
* サウンドカードのモジュールを確認します: [http://www.alsa-project.org/main/index.php/Matrix:Main ALSA Soundcard Matrix] モジュールには名前の前に 'snd-' が付きます (例: {{ic|snd-via82xx}})。
* [[Kernel modules (日本語)#ロード|モジュールをロードします]]。
+
* [[カーネルモジュール#ロード|モジュールをロードします]]。
 
* {{ic|/dev/snd}} の中のデバイスファイルを確認したり(上述)、{{ic|alsamixer}} や {{ic|amixer}} に変化がないか調べて下さい。
 
* {{ic|/dev/snd}} の中のデバイスファイルを確認したり(上述)、{{ic|alsamixer}} や {{ic|amixer}} に変化がないか調べて下さい。
* {{ic|snd-NAME-OF-MODULE}} と {{ic|snd-pcm-oss}} を[[Kernel modules (日本語)#ロード|起動時にロード]]するよう設定して下さい。
+
* {{ic|snd-NAME-OF-MODULE}} と {{ic|snd-pcm-oss}} を[[カーネルモジュール#ロード|起動時にロード]]するよう設定して下さい。
   
===SPDIF 出力===
+
===S/PDIF 出力===
   
  +
[[wikipedia:ja:S/PDIF|S/PDIF]] はコンピュータとオーディオアンプを接続するときにしばしば使われるデジタルオーディオインターフェイスです (5.1/7.1 サラウンドのホームシアターなど)。
(from gralves from the Gentoo forums)
 
  +
{{note|サウンドカードによっては以下の瀬底でアナログ出力が無効になることがあります (例: Sound Blaster Audigy 2)。}}
* GNOME ボリュームコントールの、オプションタブから、IEC958 を PCM に変更して下さい。このオプションは設定から有効にすることができます。
 
  +
使用している[[シェル]]にあわせて、シェルの設定ファイルに以下の行を追加してください:
* GNOME ボリュームコントロールをインストールしていない場合、
 
** {{ic|/var/lib/alsa/asound.state}} を編集してください。このファイルには alsasound のミキサーの設定が保存されています。
 
** 次の文を探して下さい: 'IEC958 Playback Switch'。その近くに {{ic|value:false}} と書かれた行があるはずです。それを {{ic|value:true}} に変えて下さい。
 
** 次の行を探して下さい: 'IEC958 Playback AC97-SPSA'。これの値を 0 に変えてください。
 
** ALSA を再起動します。
 
 
2014年2月2日現在、上の方法は使うことができないようです。下を見て下さい。
 
 
ログイン時に SPDIF 出力を自動的に有効にする他の方法:
 
 
* 次の行を {{ic|~/.xinitrc}} に追加してください:
 
 
amixer -c 0 cset name='IEC958 Playback Switch' on
 
amixer -c 0 cset name='IEC958 Playback Switch' on
   
あなたのカードのデジタル出力の名前を見るにのコマンドを実行してください:
+
カードのデジタル出力の名前は以下のコマンドで確認できます:
 
$ amixer scontrols
 
$ amixer scontrols
   
243行目: 292行目:
 
====AlsaEqual を使う (UI あり)====
 
====AlsaEqual を使う (UI あり)====
   
[[Arch User Repository (日本語)|AUR]] から {{AUR|alsaequal}} をインストールしてください。
+
{{AUR|alsaequal}} パッケージをインストールしてください。
 
{{Note|システムが x86_64 で 32bit の flashplugin を使っていると flash で音が鳴らなくなります。alsaequal を無効にするか alsaequal を 32bit でビルドして下さい。}}
 
   
 
パッケージをインストールした後、以下を ALSA 設定ファイル ({{ic|~/.asoundrc}} か {{ic|/etc/asound.conf}}) に挿入してください:
 
パッケージをインストールした後、以下を ALSA 設定ファイル ({{ic|~/.asoundrc}} か {{ic|/etc/asound.conf}}) に挿入してください:
272行目: 319行目:
 
}
 
}
   
  +
x86_64 環境で {{Pkg|lib32-flashplugin}} を使用している場合、上記の設定では flash で音が鳴りません。以下の設定で flash の音を有効にできますが、{{ic|pcm "hw:0,0"}} の行でサウンドカードを手動で指定する必要があります (利用可能なサウンドカードとカードのデバイス番号は {{ic|aplay -l}} で確認できます):
次のコマンドを使ってイコライザーを変更することができます
 
  +
  +
{{hc|/etc/asound.conf|2=
  +
pcm.dmixer {
  +
type dmix
  +
ipc_key 2048
  +
slave {
  +
pcm "hw:0,0"
  +
buffer_size 16384
  +
}
  +
}
  +
  +
ctl.equal {
  +
type equal;
  +
}
  +
  +
pcm.equalizer {
  +
type equal
  +
slave.pcm "plug:dmixer"
  +
}
  +
  +
pcm.!default {
  +
type plug
  +
slave.pcm equalizer
  +
}
  +
}}
  +
  +
次のコマンドを使ってイコライザーを変更することができます:
 
$ alsamixer -D equal
 
$ alsamixer -D equal
   
 
設定ファイルはユーザーごとに違うので注意してください。{{ic|~/.alsaequal.bin}} に保存されます。
 
設定ファイルはユーザーごとに違うので注意してください。{{ic|~/.alsaequal.bin}} に保存されます。
AlsaEqual を異なるユーザーの [[Music Player Daemon (日本語)|mpd]] などのソフトウェアで使いたいときは、次を実行することで設定できます:
+
AlsaEqual を異なるユーザーの [[Music Player Daemon|mpd]] などのソフトウェアで使いたいときは、次を実行することで設定できます:
 
# su mpd -c 'alsamixer -D equal'
 
# su mpd -c 'alsamixer -D equal'
 
もしくは、ユーザーの home にある {{ic|.alsaequal.bin}} のシンボリックリンクを作って下さい。
 
もしくは、ユーザーの home にある {{ic|.alsaequal.bin}} のシンボリックリンクを作って下さい。
282行目: 356行目:
 
=====AlsaEqual の管理=====
 
=====AlsaEqual の管理=====
   
[[Arch User Repository (日本語)|AUR]] から {{AUR|alsaequal-mgr}} をインストールしてください (もしくは [http://xyne.archlinux.ca/repos/ Xyneのリポジトリ] を使って下さい)
+
{{AUR|alsaequal-mgr}} パッケージをインストールしてください。
   
 
通常通りイコライザーを設定してください:
 
通常通りイコライザーを設定してください:
295行目: 369行目:
 
ゲームや映画、音楽のジャンル別、VoIP アプリなどそれぞれに合わせてイコライザーの状態を作成し、必要なときにリロードできます。
 
ゲームや映画、音楽のジャンル別、VoIP アプリなどそれぞれに合わせてイコライザーの状態を作成し、必要なときにリロードできます。
   
オプションの詳細は [http://xyne.archlinux.ca/projects/alsaequal-mgr/ project page] を見て下さい。
+
オプションの詳細は [https://xyne.archlinux.ca/projects/alsaequal-mgr/ project page] を見て下さい。
   
 
====mbeq を使う====
 
====mbeq を使う====
350行目: 424行目:
 
}
 
}
 
</nowiki>}}
 
</nowiki>}}
 
* これで動くはずです (動かない時は、フォーラムで質問して下さい)。
 
   
 
==高品質なリサンプリング==
 
==高品質なリサンプリング==
422行目: 494行目:
 
}
 
}
   
{{Note|1=これだけではダウンミキシングが動作しないかもしれません、[http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=541786] を参照してください。その場合、{{ic|pcm.!default "plug:surround51"}} か {{ic|pcm.!default "plug:surround40"}} を追加する必要があります。{{ic|vdownmix}} プラグはひとつだけ使うことができます; 7.1 チャンネルのときは、上の設定の代わりに {{ic|surround71}} を使って下さい。{{ic|vdownmix}} と {{ic|dmix}} の両方を動かす設定例が[https://bbs.archlinux.org/viewtopic.php?id=167275 ここ]にあります。}}
+
{{Note|1=これだけではダウンミキシングが動作しないかもしれません、[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=541786] を参照してください。その場合、{{ic|pcm.!default "plug:surround51"}} か {{ic|pcm.!default "plug:surround40"}} を追加する必要があります。{{ic|vdownmix}} プラグはひとつだけ使うことができます; 7.1 チャンネルのときは、上の設定の代わりに {{ic|surround71}} を使って下さい。{{ic|vdownmix}} と {{ic|dmix}} の両方を動かす設定例が[https://bbs.archlinux.org/viewtopic.php?id=167275 ここ]にあります。}}
   
 
==ミキシング==
 
==ミキシング==
443行目: 515行目:
 
S/PDIF などのデジタル音声出力をするために、ALSA パッケージは依然として dmix をデフォルトで有効にしていません。そのため、上の dmix 設定は S/PDIF デバイスで dmix を有効にするために使うことはできません。
 
S/PDIF などのデジタル音声出力をするために、ALSA パッケージは依然として dmix をデフォルトで有効にしていません。そのため、上の dmix 設定は S/PDIF デバイスで dmix を有効にするために使うことはできません。
   
一般的な問題と解決方法は [[#トラブルシューティング]] を見て下さい。
+
一般的な問題と解決方法は [[Advanced Linux Sound Architecture/トラブルシューティング]] を見て下さい。
   
 
===ハードウェアミキシング===
 
===ハードウェアミキシング===
457行目: 529行目:
   
 
{{Note|
 
{{Note|
* The low end variants of above cards, (Audigy SE, Audigy 2 NX, SoundBlaster Live! 24bit and SoundBlaster Live! 7.1) '''do not''' support hardware mixing as they use other chips.
+
* 上記のカードのローエンド版 (Audigy SE, Audigy 2 NX, SoundBlaster Live! 24bit, SoundBlaster Live! 7.1) は別のチップを使っているためハードウェアミキシングに対応していません。
  +
* オンボードの VIA8237 チップは4ストリームのハードウェアミキシングに対応していますが、マザーボードによってはそれが3ストリームになったり (4番目のストリームが音を出さない) あるいは使えないこともあります。動作したとしても、他の方法と比べて音質は劣ります。}}
* The onboard VIA8237 chip supports 4-stream hardware mixing, however, it does only 3 for some motherboards (the 4th makes no sound) or is just broken. Even if it works, the quality is not good compared to other solutions.}}
 
   
 
====フィックス====
 
====フィックス====
466行目: 538行目:
 
echo "et.x86 0 0 disable" > /proc/asound/card0/pcm0c/oss
 
echo "et.x86 0 0 disable" > /proc/asound/card0/pcm0c/oss
   
==トラブルシューィング==
+
== ヒンクニック ==
===virtualbox で音が鳴らない===
 
   
  +
=== USB サウンドカードのホットプラグ ===
virtualbox で問題が起こっているのなら、次のコマンドが役に立つかもしれません:
 
 
{{hc|$ alsactl init|2=<nowiki>
 
 
Found hardware: "ICH" "SigmaTel STAC9700,83,84" "AC97a:83847600" "0x8086" "0x0000"
 
Hardware is initialized using a generic method
 
</nowiki>}}
 
 
またオーディオソフトウェアで ALSA 出力を有効にする必要があるかもしれません。
 
 
===動的周波数スケーリングを使っていると音が飛ぶ===
 
 
ALSA ドライバとチップセットの組み合わせによっては、{{ic|ondemand}} や {{ic|conservative}} などの dynamic frequency scaling governor を一緒に使った時に全てのソースの音声が飛ぶ問題が起こることがあります。今の所、解決法は {{ic|performance}} governor に切り替えることです。
 
 
詳細は [[CPU Frequency Scaling (日本語)]] を参照してください。
 
 
===一度に複数のユーザーが使えない問題===
 
dmixer を使えるのは一度にたったひとりのユーザーだけということに気づいたかもしれませんね。これはほとんどの人にとっては問題ありませんが、[[Music Player Daemon (日本語)|mpd]] を違うユーザーで動作させている人にとっては問題になります。mpd が再生中の時、一般ユーザーは dmixer を使ってサウンドを再生できなくなってしまいます。同じユーザーで mpd を実行する以外にも解決方法は存在します。{{ic|ipc_key_add_uid 0}} を {{ic|pcm.dmixer}} に追加するとロックが無効になります。以下は {{ic|asound.conf}} のスニペットです、他の部分への変更はありません。
 
...
 
pcm.dmixer {
 
type dmix
 
ipc_key 1024
 
ipc_key_add_uid 0
 
ipc_perm 0660
 
slave {
 
...
 
 
===同時再生問題===
 
 
同時再生問題が起こっていて、([[GNOME]] によって) [[PulseAudio (日本語)|PulseAudio]] がインストールされているのなら、それは PulseAudio のデフォルトの設定がサウンドカードを"ハイジャック"するようにセットされているためです。ALSA のユーザーの中には [[PulseAudio (日本語)|PulseAudio]] は使いたくなく、全て ALSA で設定したいという人もいるかもしれません。{{ic|/etc/asound.conf}} を編集して以下の行をコメントアウトして修正することができます:
 
# Use PulseAudio by default
 
#pcm.!default {
 
# type pulse
 
# fallback "sysdefault"
 
# hint {
 
# show on
 
# description "Default ALSA Output (currently PulseAudio Sound Server)"
 
# }
 
#}
 
 
以下をコメントアウトすることでも可能です:
 
#ctl.!default {
 
# type pulse
 
# fallback "sysdefault"
 
#}
 
 
以上は [[PulseAudio (日本語)|PulseAudio]] を完全にアンインストールするよりもずっとシンプルな解決方法になります。
 
 
下は動作する {{ic|/etc/asound.conf}} のサンプルです:
 
{{bc|<nowiki>pcm.dmixer {
 
type dmix
 
ipc_key 1024
 
ipc_key_add_uid 0
 
ipc_perm 0660
 
}
 
pcm.dsp {
 
type plug
 
slave.pcm "dmix"
 
}</nowiki>
 
}}
 
 
{{note|この {{ic|/etc/asound.conf}} ファイルは全体的な [[Music Player Daemon (日本語)|MPD]] 設定をすれば問題なく使えます。複数のユーザーについては[[#一度に複数のユーザーが使えない問題|このセクション]]を見て下さい。}}
 
 
===起動時にランダムで音が出なくなる===
 
 
{{ic|speaker-test}} を実行することで音のテストができます。音が出ない場合、以下のようなエラーメッセージが表示されるはずです:
 
 
ALSA lib pcm_dmix.c:1022:(snd_pcm_dmix_open) unable to open slave
 
Playback open error: -16
 
Device or resource busy
 
 
ランダムで音が出なくなる場合、あなたのシステムに複数のサウンドカードが存在するのが理由かもしれません。起動時にサウンドカードの順番が変わっている可能性があります。この場合は、[[#デフォルトサウンドカードの設定|デフォルトのサウンドカードを設定]]してみてください。
 
 
mpd を使っていて上記の設定が動かないときは、[http://mpd.wikia.com/wiki/Configuration#ALSA_MPD_software_volume_control こちらを読んで下さい] 。
 
 
==== Timidity ====
 
 
[[Timidity (日本語)|Timidity]] が原因で音が出なくなることがあります。次を実行してみて下さい:
 
 
$ systemctl status timidity
 
 
これが失敗した場合は、{{ic|# killall -9 timidity}} を実行してください。これで問題が解決したら、起動時に timidity デーモンが実行されるのを無効にしたほうが良いでしょう。
 
 
===特定のプログラム===
 
 
XMMS や Mplayer など固有のオーディオ設定を使うプログラムには、それぞれ指定のオプションを設定してやってください。
 
 
MPlayer では、[[MPlayer (日本語)#設定|設定ファイル]]を開き以下の行を追加してください:
 
ao=alsa
 
''mpv'' でも同じ行を[[mpv#Configuration|設定ファイル]]のどれか一つに追加してください。
 
 
XMMS/Beep Media Player では、オプションからサウンドドライバを Alsa に設定してください。
 
 
XMMS では:
 
* XMMS を起動
 
** Options -> preferences
 
** Alsa プラグインを選択
 
 
ALSA 出力をサポートしていないアプリケーションでは、alsa-oss パッケージの aoss を使うことができます。aoss を使うには、プログラムを起動するときに {{ic|aoss}} を前に付けて下さい、例:
 
aoss realplay
 
 
pcm.!default{ ... } が動かない場合、次が使えるかもしれません:
 
pcm.default pcm.dmixer
 
 
===モデル設定===
 
 
Alsa は BIOS を通してサウンドカードを検知していますが、時々 Alsa が [http://www.kernel.org/doc/Documentation/sound/alsa/HD-Audio-Models.txt モデルのタイプ] を認識できなくなることがあります。サウンドカードのチップは {{ic|alsamixer}} で見ることができ (例: ALC662) モデルは {{ic|/etc/modprobe.d/modprobe.conf}} や {{ic|/etc/modprobe.d/sound.conf}} で設定することができます。例えば:
 
 
options snd-hda-intel model=MODEL
 
 
他のモデルの設定も存在します。ほとんどの場合 Alsa のデフォルトが実行します。あなたのサウンドカードに合わせた設定を見たい場合は、[http://bugtrack.alsa-project.org/main/index.php/Matrix:Main Alsa Soundcard List] からあなたのモデルを探して、Details をクリックして、"Setting up modprobe..." セクションを見て下さい。{{ic|/etc/modprobe.d/modprobe.conf}} にそれらの値を入力してください。例えば、Intel AC97 オーディオならば:
 
 
{{bc|# ALSA portion
 
alias char-major-116 snd
 
alias snd-card-0 snd-intel8x0
 
# module options should go here
 
 
# OSS/Free portion
 
alias char-major-14 soundcore
 
alias sound-slot-0 snd-card-0
 
 
# card #1
 
alias sound-service-0-0 snd-mixer-oss
 
alias sound-service-0-1 snd-seq-oss
 
alias sound-service-0-3 snd-pcm-oss
 
alias sound-service-0-8 snd-seq-oss
 
alias sound-service-0-12 snd-pcm-oss}}
 
 
===PC スピーカーが衝突する===
 
 
全てのミュートを解除していて、ドライバーが適切にインストールされていて、ボリュームもちゃんと上がっていて、それでも何も聞こえない場合、次の行を {{ic|/etc/modprobe.d/modprobe.conf}} に追加してみて下さい:
 
 
options snd-NAME-OF-MODULE ac97_quirk=0
 
 
上記の修正は {{ic|via82xx}} でも機能することが確認されています。
 
options snd-NAME-OF-MODULE ac97_quirk=1
 
上記の修正は {{ic|snd_intel8x0}} でも機能することが報告されています。
 
 
===マイクが入らない===
 
 
alsamixer で、録音のところの全てのボリュームレベルが上がっているか、そしてマイク (例: Mic, Internal Mic) の CAPTURE が有効になっているか確認してください (alsamixer で、アイテムを選択してスペースを押して下さい)。Mic Boost を使ったり Capture や Digital レベルを高くしてみて下さい。音が悪くなるかもしれませんが、''何か''聞こえたら後で元に戻すことができます。
 
 
alsamixer では pulseaudio ラッパーは "default" と表示されるので、実際のサウンドカードを選ぶためにまず F6 を押す必要があるかもしれません。また、再生セクションの Line-in を有効にしたり上げたりもしてみて下さい。
 
 
マイクをテストするには、以下のコマンドを実行してください (詳しくは arecord の man ページを見て下さい):
 
$ arecord -d 5 test-mic.wav
 
$ aplay test-mic.wav
 
 
全てが上手くいかないときは、他のデバイスを使ってマイクのテストを行い、ハードウェアに問題がないか確認してください。
 
 
コンピュータによっては、マイクロフォン (MM) のミュートをするとスピーカーにすぐには入力が行かないことがあります。入力は受信されています。
 
 
Dell のノートパソコンの多くは {{ic|/etc/modprobe.d/modprobe.conf}} のモデル名に "-dmic" を加えることを必要とします:
 
options snd-hda-intel model=dell-m6-dmic
 
 
プログラムによってはメインの入力ソフトウェアとして OSS を使おうとすることがあります。{{ic|snd_pcm_oss}}, {{ic|snd_mixer_oss}}, {{ic|snd_seq_oss}} [[kernel modules (日本語)|カーネルモジュール]]を以前有効にしている場合 (デフォルトではロードされません)、アンロードしてみて下さい。
 
 
参照:
 
* http://www.alsa-project.org/main/index.php/SoundcardTesting
 
* http://alsa.opensrc.org/Record_from_mic
 
 
=== マイクにパチパチという音が乗る ===
 
 
マイクロフォンからパチパチというノイズやポップノイズが出ていて、ALSA の設定やマイクジャックの掃除で問題が解決しない場合、次の行を {{ic|/etc/modprobe.d/modprobe.conf}} に追加してみて下さい:
 
 
options snd-hda-intel model=MODEL position_fix=3
 
 
このオプションは Alsa のノイズを修正しますが、pulseaudio に問題を発生させます。Pulse がこの設定を問題なく使えるようにするには、{{ic|/etc/pulse/default.pa}} 内で次の行を探して:
 
 
load-module module-udev-detect
 
 
以下のように変更してください:
 
 
load-module module-udev-detect tsched=0
 
 
カーネルドキュメントの DMA-Position Problem を参照してください。
 
 
* [https://www.kernel.org/doc/Documentation/sound/alsa/HD-Audio.txt HD-audio Kernel Docs]
 
 
===デフォルトのマイク・キャプチャデバイスの設定===
 
 
アプリケーションによってはキャプチャデバイスを変更するオプションがないことがあります (Pidgin, Adobe Flash)。内蔵のサウンドカード以外にマイクロフォンがある場合 (例: USB webcam や microphone) これが問題になるでしょう。デフォルトのキャプチャデバイスを変更するには、デフォルトの playback device を変えて下さい。{{ic|~/.asoundrc}} ファイルを以下のように変更します:
 
 
pcm.usb
 
{
 
type hw
 
card U0x46d0x81d
 
}
 
 
pcm.!default
 
{
 
type asym
 
playback.pcm
 
{
 
type plug
 
slave.pcm "dmix"
 
}
 
capture.pcm
 
{
 
type plug
 
slave.pcm "usb"
 
}
 
}
 
 
"U0x46d0x81d" は ALSA のキャプチャデバイスのカード名に置き換えてください。{{ic|arecord -L}} を使ってALSA によって検知されている全てのキャプチャデバイスを一覧できます。
 
 
===内蔵マイクが動作しない===
 
 
まず alsamixer で録音のボリュームレベルを全て上げてあるか確認してください。オプションを /etc/sound.conf に追加して、snd-* モジュールをリロードすると内蔵マイクの Capture という新しいボリューム設定が作られることがあります。例えば、snd-hda-inter の場合:
 
 
options snd-hda-intel enable_msi=1
 
 
それからモジュールをリロードして、Capture の録音ボリュームを上げてください。
 
 
# rmmod snd-hda-intel && modprobe snd-hda-intel
 
 
===オンボードの Intel サウンドカードで音が出ない===
 
 
ロードされた2つのモジュール、{{ic|snd_intel8x0}} と {{ic|snd_intel8x0m}} が衝突しているのかもしれません。この場合、snd_intel8x0m をブラックリストに入れてください:
 
 
{{hc|/etc/modprobe.d/modprobe.conf|blacklist snd_intel8x0m}}
 
 
{{ic|alsamixer}} や {{ic|amixer}} で "External Amplifier" を''ミュートにする''ことが問題を解決することもあります。[http://alsa.opensrc.org/Intel8x0#Dell_Inspiron_8600_.28and_probably_others.29 the ALSA wiki] を見て下さい。
 
 
また、ミキサーで "Mix" 設定をアンミュートすることによって音が鳴るかもしれません。
 
 
===オンボードの Intel サウンドカードでヘッドホンの音が出ない===
 
 
ラップトップの '''Intel Corporation 82801 I (ICH9 Family) HD Audio Controller''' では、次の行を modprobe か sound.conf に加える必要があるかもしれません:
 
 
options snd-hda-intel model=''model''
 
 
''model'' は以下の内どれかになります (この順番で動作しやすいはずです):
 
 
* dell-vostro
 
* olpc-xo-1_5
 
* laptop
 
* dell-m6
 
* laptop-hpsense
 
 
{{Note|この "options" 行はあなたのカードの "alias" 行の下(後ろ)に置く必要があるかもしれません。}}
 
 
カーネルドキュメントで利用できる全てのモデルを見ることができます。例えば [http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/Documentation/sound/alsa/HD-Audio-Models.txt ここ]、ただしあなたの使っているカーネルのバージョンとドキュメントのバージョンが正しいかを確認してください。
 
 
利用できるモデルの一覧は [http://www.mjmwired.net/kernel/Documentation/sound/alsa/HD-Audio-Models.txt ここ] にもあります。あなたの使っているチップの名前を知るには次のコマンドを実行してください (* はあなたのファイルにあわせて修正してください)。チップによっては名前が変わっておりファイルのモデル名と一致しないことがあるので注意してください。
 
 
$ grep Codec /proc/asound/card*/codec*
 
 
これを選ぶと入力デバイス (内蔵・外付マイク) が全て動作しなくなることが十分あるので注意してください、それがヘッドフォンかマイクです。バグによる影響があるときは ALSA に報告してください。
 
 
またビープの動作に問題がある場合は (pcspkr):
 
 
options snd-hda-intel model=$model enable=1 index=0
 
 
===S/PDIF ビデオカードをインストールすると音が出ない===
 
 
モジュールとその順番を調べて下さい:
 
$ cat /proc/asound/modules
 
0 snd_hda_intel
 
1 snd_ca0106
 
 
{{ic|/etc/modprobe.d/modprobe.conf}} で不要なビデオカードのオーディオコーデックを無効化します:
 
# /etc/modprobe.d/modprobe.conf
 
#
 
install snd_hda_intel /bin/false
 
 
両方のデバイスが同じモジュールを使っている場合、snd-hda-intel モジュールの *enable* パラメータを使うことができます。boolean の配列でサウンドカードを有効・無効にすることが可能です。
 
 
例:
 
options snd-hda-intel enable=1,0
 
次のコマンドでカードのリストが取得できます:
 
cat /proc/asound/cards
 
 
===サウンドの品質が悪い===
 
 
サウンドの質が悪いときは、(alsamixer で) PCM ボリュームの値をゲインが 0 になるようにしてみてください。
 
 
snd-usb-audio ドライバーがロードされている場合、{{ic|/etc/asound.conf}} ファイルで {{ic|softvol}} を有効にすることができます。最初のオーディオデバイスの設定例:
 
pcm.!default {
 
type plug
 
slave.pcm "softvol"
 
}
 
pcm.dmixer {
 
type dmix
 
ipc_key 1024
 
slave {
 
pcm "hw:0"
 
period_time 0
 
period_size 4096
 
buffer_size 131072
 
rate 50000
 
}
 
bindings {
 
0 0
 
1 1
 
}
 
}
 
pcm.dsnooper {
 
type dsnoop
 
ipc_key 1024
 
slave {
 
pcm "hw:0"
 
channels 2
 
period_time 0
 
period_size 4096
 
buffer_size 131072
 
rate 50000
 
}
 
bindings {
 
0 0
 
1 1
 
}
 
}
 
pcm.softvol {
 
type softvol
 
slave { pcm "dmixer" }
 
control {
 
name "Master"
 
card 0
 
}
 
}
 
ctl.!default {
 
type hw
 
card 0
 
}
 
ctl.softvol {
 
type hw
 
card 0
 
}
 
ctl.dmixer {
 
type hw
 
card 0
 
}
 
 
===再生を開始・停止するとポップノイズが鳴る===
 
 
モジュールにはサウンドカードが使われていない時、その電源を落とすものがあります (例えば snd_ac97_codec と snd_hda_intel)。サウンドカードの電源が入ったり落とされる時にノイズ(ポップ・クリック・スクラッチ)が出ることがあります。これはボリュームスライダーを動かしたり、ウィンドウを開閉することでも (KDE4) 起きることがあります。これが気になる時は、{{ic|modinfo snd_MY_MODULE}} でパワーオフ機能を調整・無効にするモジュールオプションを使って下さい。
 
 
例: パワーセーブモードを無効化してスピーカーからポップ音が鳴るのを止めるには、snd_hda_intel を {{ic|/etc/modprobe.d/modprobe.conf}} に追加します:
 
options snd_hda_intel power_save=0
 
もしくは:
 
options snd_hda_intel power_save=0 power_save_controller=N
 
 
また、{{ic|1=modprobe snd_hda_intel power_save=0}} で試すこともできます。
 
 
これを機能させるために 'Line' ALSA チャンネルのミュートを解除する必要もあるかもしれません。値は何でも結構です ('0' 以外なら)。
 
 
''例:'' オンボードの VIA VT1708S (snd_hda_intel モジュールを使います) では 'power_save' が 0 に設定されていてもノイズが発生します。'Line' チャンネルをアンミュートして値を '1' に設定することで問題は解決します。
 
 
参照: https://www.kernel.org/doc/Documentation/sound/alsa/powersave.txt
 
 
ノートパソコンを使っているのなら、{{ic|/etc/modprobe.d}} で省電力モードを無効にしていても、電源をバッテリーに移行した時に pm-utils によって {{ic|power_save}} が 1 に戻されてしまうことがあります。変更を行うスクリプトを無効にして pm-utils にこれを止めさせて下さい (詳しくは [[Pm-utils#Disabling_a_hook]] を参照):
 
# touch /etc/pm/power.d/intel-audio-powersave
 
 
===S/PDIF から出力できない===
 
 
モジュールをロードして alsamixer でミュートを解除してもマザーボード・サウンドカードのオプティカル・コアキシャルのデジタル出力ができない場合、root で次を実行してください:
 
# iecset audio on
 
 
再起動後にまた出力できなくなるときはこのコマンドを [[systemd (日本語)|systemd]] サービスに入れることができます。
 
 
===HDMI から出力できない===
 
 
以下で説明している方法を使って HDMI オーディオをテストすることができます。進む前に、{{ic|alsamixer}} でアウトプットが有効・アンミュートされているか確認してください。
 
 
{{Note|ATI カードと linux カーネル &gt;&#61;3.0 を使っている場合は、必要なカーネルモジュールがデフォルトでは無効になっています。[[ATI (日本語)#HDMI オーディオ]] を見て下さい。}}
 
 
HDMI ケーブルで PC をディスプレイに接続して {{ic|xrandr}} や {{ic|arandr}} などのツールを使ってディスプレイを有効にしてください。例えば:
 
 
$ xrandr # list outputs
 
$ xrandr --output DVI-D_1 --mode 1024x768 --right-of PANEL # enable output
 
 
{{ic|aplay -l}} を使ってカードとデバイス番号を取得してください。例えば:
 
 
$ aplay -l
 
**** List of PLAYBACK Hardware Devices ****
 
card 0: SB [HDA ATI SB], device 0: ALC892 Analog [ALC892 Analog]
 
Subdevices: 1/1
 
Subdevice #0: subdevice #0
 
card 0: SB [HDA ATI SB], device 1: ALC892 Digital [ALC892 Digital]
 
Subdevices: 1/1
 
Subdevice #0: subdevice #0
 
'''card 1''': Generic [HD-Audio Generic], '''device 3''': HDMI 0 [HDMI 0]
 
Subdevices: 1/1
 
Subdevice #0: subdevice #0
 
 
デバイスに音声を送って下さい。上の例に従って、カード 1 デバイス 3 に音を送ることにします:
 
 
$ aplay -D plughw:1,3 /usr/share/sounds/alsa/Front_Center.wav
 
 
aplay がエラーを出力しないのに、音が聞こえない場合、モニタや TV を"再起動"してください。HDMI インターフェイスは接続時にハンドシェイクを実行するので、埋め込まれたオーディオストリームがなかったり、オーディオデコードが無効化されていることに先に気づきます。特に、スタンドアロンのウィンドウマネージャを使っている場合、HDMI ケーブルを差し込む''最中に''なんらかの音を再生しておく必要があります。
 
 
mplay や他のアプリケーションが音声出力に特別な HDMI デバイスを使うように設定することもできます。しかしながら flashplugin はデフォルトのデバイスしか使いません。以下の方法でデフォルトのデバイスを上書きすることができます。ただし TV を HDMI ポートから切断したときは変更を戻す必要があります。
 
 
テストが成功したら、{{ic|~/.asoundrc}} ファイルを作成・編集して HDMI をデフォルトのオーディオデバイスに設定してください。
 
 
{{hc|~/.asoundrc|
 
pcm.!default {
 
type hw
 
card 0
 
device 3
 
}
 
}}
 
 
もしくは上の設定が機能しない場合:
 
{{hc|~/.asoundrc|
 
defaults.pcm.card 0
 
defaults.pcm.device 3
 
defaults.ctl.card 0
 
}}
 
 
===HDMI からマルチチャンネル PCM が出力できない (Intel) ===
 
 
Linux 3.1 現在、インテルのカード (Intel Eaglelake, IbexPeak/Ironlake,SandyBridge/CougarPoint, IvyBridge/PantherPoint) での HDMI からのマルチチャンネル PCM の出力はサポートされていません。Linux 3.2 でサポートが追加される予定です。Linux 3.1 で出力できるようにするには以下のパッチを適用する必要があります:
 
 
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=patch;h=76adaa34db407f174dd06370cb60f6029c33b465 drm: support routines for HDMI/DP ELD]
 
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=patch;h=e0dac65ed45e72fe34cc7ccc76de0ba220bd38bb drm/i915: pass ELD to HDMI/DP audio driver]
 
 
===HP TX2500===
 
 
以下の 2 行を {{ic|/etc/modprobe.d/modprobe.conf}} に加えて下さい:
 
options snd-cmipci mpu_port=0x330 fm_port=0x388
 
options snd-hda-intel index=0 model=toshiba position_fix=1
 
 
options snd-hda-intel model=hp (tx2000cto の場合)
 
 
===MP3 を再生すると音が飛ぶ===
 
 
2つ以上のスピーカーがついているコンピューターで MP3 ファイルを再生していると音が飛ぶときは、alsamixer を起動して'''使っていない'''スピーカーのチャンネルを無効にしてください。
 
 
===USB ヘッドセットや外付けの USB サウンドカードを使う===
 
 
ALSA で USB ヘッドセットを使っているのなら {{AUR|asoundconf}} (現在 [[Arch User Repository (日本語)|AUR]] から利用できます) を使ってヘッドセットへのサウンド出力を優先することができます。以下を実行する前に usb オーディオモジュールが有効になっているのを確かめて下さい ({{ic|modprobe snd_usb_audio}})。
 
 
# asoundconf is-active
 
# asoundconf list
 
# asoundconf set-default-card ''chosen soundcard''
 
 
==== USB デバイスで音割れする ====
 
 
USB デバイスで音割れが起こるときは、{{ic|snd-usb-audio}} を調整してレイテンシを下げることを試すことができます。
 
 
以下を {{ic|/etc/modprobe.d/modprobe.conf}} に加えて下さい:
 
 
options snd-usb-audio nrpacks=1
 
 
ソース: http://alsa.opensrc.org/Usb-audio#Tuning_USB_devices_for_minimal_latencies
 
 
==== USB サウンドカードのホットプラグ ====
 
   
 
USB サウンドカードが挿入されたときに、自動的に第一のアウトプットデバイスにするために、以下の udev ルールを使うことができます (例: 以下の2行を {{ic|/etc/udev/rules.d/00-local.rules}} に追加して再起動する)。
 
USB サウンドカードが挿入されたときに、自動的に第一のアウトプットデバイスにするために、以下の udev ルールを使うことができます (例: 以下の2行を {{ic|/etc/udev/rules.d/00-local.rules}} に追加して再起動する)。
924行目: 547行目:
 
KERNEL=="pcmC[D0-9cp]*", ACTION=="remove", PROGRAM="/bin/sh -c 'echo defaults.ctl.card 0 > /etc/asound.conf; echo defaults.pcm.card 0 >>/etc/asound.conf'"}}
 
KERNEL=="pcmC[D0-9cp]*", ACTION=="remove", PROGRAM="/bin/sh -c 'echo defaults.ctl.card 0 > /etc/asound.conf; echo defaults.pcm.card 0 >>/etc/asound.conf'"}}
   
  +
=== 同時出力 ===
===カーネルをアップデートした後に 'Unknown hardware' エラーが出る===
 
   
  +
ミニジャックで接続した外付けスピーカーと内蔵のスピーカーで同時に音楽を再生したい場合、{{ic|alsamixer}} や {{ic|amixer}} を使うことで ''Auto-Mute'' のミュートを解除してください:
カーネルのアップデート後に ALSA を起動すると以下のメッセージが表示されることがあります:
 
  +
$ amixer sset "Auto-Mute" unmute
Unknown hardware "foo" "bar" ...
 
Hardware is initialized using a guess method
 
/usr/bin/alsactl: set_control:nnnn:failed to obtain info for control #mm (No such file or directory)
 
   
  +
そして ''Headphones''', ''Speaker'', '''Bass Speaker'' など他の必要なアイテムのミュートを解除してください。
または:
 
  +
{{Note|(ミニジャック) ヘッドフォンコネクタで接続した場合に音が割れる場合、[[Advanced Linux Sound Architecture/トラブルシューティング#ミニジャック (ヘッドフォンコネクタ) で音が割れる]]を見て下さい。}}
Found hardware: "HDA-Intel" "VIA VT1705" "HDA:11064397,18490397,00100000" "0x1849" "0x0397"
 
Hardware is initialized using a generic method
 
/usr/bin/alsactl: set_control:1328: failed to obtain info for control #1 (No such file or directory)
 
/usr/bin/alsactl: set_control:1328: failed to obtain info for control #2 (No such file or directory)
 
/usr/bin/alsactl: set_control:1328: failed to obtain info for control #25 (No such file or directory)
 
/usr/bin/alsactl: set_control:1328: failed to obtain info for control #26 (No such file or directory)
 
   
  +
=== キーボードのボリュームコントロール ===
(root で) ALSA ミキサーの設定をもう一度保存してください:
 
# alsactl -f /var/lib/alsa/asound.state store
 
   
  +
以下のコマンドをボリュームキーにマッピングしてください: {{ic|XF86AudioRaiseVolume}}, {{ic|XF86AudioLowerVolume}}, {{ic|XF86AudioMute}}
alsamixer で ALSA の設定をもう一度する必要があるかもしれません。
 
   
  +
ボリュームを上げるには:
===HDA Analyzer===
 
  +
amixer set Master 5%+
   
  +
ボリュームを下げるには:
オーディオピン(プラグ)のマッピングが一致していないのに ALSA が問題なく動いている場合、HDA Analyzer を試してみて下さい -- HD オーディオコントロールの pyGTK2 GUI で [http://www.alsa-project.org/main/index.php/HDA_Analyzer ALSA wiki] にあります。
 
  +
amixer set Master 5%-
PIN ノードの Widget Control セクションを調整して、マイクロフォンの IN とヘッドフォンジャックの OUT を作ってみて下さい。Config Defaults の見出しを参照すると良いでしょう。
 
   
  +
==トラブルシューティング==
{{Note|
 
  +
[[Advanced Linux Sound Architecture/トラブルシューティング]]を見て下さい。
* The script is done by such way that it is incompatible with Python 3 (which is now shipped with Arch Linux) but tries to use it. The workaround is: open "run.py", find all occurences of "python" (2 occurences - one on the first line, and the second on the last line) and replace them all by "python2".
 
* The script requires root acces, but running it via su/sudo is bogus. Run it via {{ic|kdesu}} or {{ic|gksu}}.
 
}}
 
 
===ALSA と SDL===
 
 
SDL では音が鳴らずアプリケーションで ALSA を選べない場合、SDL_AUDIODRIVER 環境変数を alsa に設定してみてください。
 
# export SDL_AUDIODRIVER=alsa
 
 
===音が小さい===
 
 
スピーカーやヘッドフォンの音量を最大にしても音が小さいならば、softvol プラグインを試すことができます。以下を {{ic|/etc/asound.conf}} に加えて下さい:
 
{{bc|<nowiki>
 
pcm.!default {
 
type plug
 
slave.pcm "softvol"
 
}
 
 
pcm.softvol {
 
type softvol
 
slave {
 
pcm "dmix"
 
}
 
control {
 
name "Pre-Amp"
 
card 0
 
}
 
min_dB -5.0
 
max_dB 20.0
 
resolution 6
 
}
 
</nowiki>}}
 
{{note|You will probably have to restart the computer, as restarting the alsa daemon did not load the new configuration for me. Also, if the configuration does not work even after restarting, try changing {{ic|plug}} with {{ic|hw}} in the above configuration.}}
 
 
正しくロードされた後、alsamixer の {{ic|Pre-Amp}} セクションを見て下さい。このセクションでボリュームを調節できます。
 
{{note|
 
* Setting a high value for {{ic|Pre-Amp}} can cause sound distortion, so adjust it according to the level that suits you.
 
* Some audio codecs may need to have settings adjusted in the HDA Analyzer ([[#HDA analyzer|see above]]) in order to achieve proper volume without distortion. Checking the HP option under widget control in the Playback Switch (Node[0x14] PIN in the ALC892 codec, for instance) can sometimes improve audio quality and volume significantly.
 
}}
 
 
===サスペンドから復帰した後にポップノイズが鳴る===
 
 
休止状態から復帰したときにポップノイズが聞こえることがあるかもしれません。{{ic|/etc/pm/sleep.d/90alsa}} を編集して {{ic|aplay -d 1 /dev/zero}} と書かれた行を削除することで直せます。
 
 
=== 再起動後にミュートになる ===
 
 
再起動後、alsamixer のサウンド設定は復活しません。おそらく次のコマンドで設定を戻せます: {{ic|sudo alsactl restore}}。alsamixer の {{ic|Auto-Mute}} トグルの状態を確認してください: {{ic|Enabled}} を {{ic|Disabled}} にしてください。
 
 
=== ボリュームが小さすぎる ===
 
 
The first thing to try is run {{ic|alsamixer}} and try to increase the value of the sliders, possibly unmuting channels if necessary. Note that if you have many sliders, you may have to scroll to the right to see any missing sliders.
 
 
If all the sliders are maxed out, and the volume is still too low, you can try running the script at http://www.alsa-project.org/hda-analyzer.py to reset your codec settings:
 
 
$ wget http://www.alsa-project.org/hda-analyzer.py
 
$ sudo python2 hda-analyzer.py
 
 
(Note that the script assumes "python" refers to Python 2, but on a typical ArchLinux installation, "python" refers to Python 3. Therefore, you may need to edit the last line of the script from {{ic|os.system("python %s" % TMPDIR + '/' + FILES[0] + ' ' + ' '.join(sys.argv[1:]))}} to {{ic|os.system("python2 %s" % TMPDIR + '/' + FILES[0] + ' ' + ' '.join(sys.argv[1:]))}}.
 
 
Close the analyzer, and when prompted as to whether you want to reset the codecs, say "yes".
 
 
If the volume is *still* too low, run {{ic|alsamixer}} again: resetting the codecs may have caused new sliders to become enabled, and some of them may be set to a low value.
 
 
===alsamixer の F3 と F4 キーの問題 ===
 
In urxvt, the alsamixer quits when F2/F3/F4 key is pressed. F3/F4 is used to switch to playback/capture view. But in Xterm, F3/F4 could work normally and switch to playback/capture view. This abnormal behavior maybe caused by different escape codes sent by different term, see http://aperiodic.net/phil/archives/Geekery/term-function-keys.html for detail.
 
   
 
==設定例==
 
==設定例==
   
[[Advanced Linux Sound Architecture/Example Configurations]] を見て下さい。
+
[[Advanced Linux Sound Architecture/設定例]]を見て下さい。
   
 
==参照==
 
==参照==
* [http://www.mjmwired.net/kernel/Documentation/sound/alsa/ALSA-Configuration.txt 高度な ALSA モジュール設定]
+
* [http://www.alsa-project.org/ ALSA wiki]
* [http://alsa.opensrc.org/Main_Page 非公式の ALSA Wiki]
+
* [http://www.alsa-project.org/main/index.php/Asoundrc Asoundrc]
  +
* [http://alsa.opensrc.org/ 非公式 ALSA wiki]
* [https://bbs.archlinux.org/viewtopic.php?id=36815 HOWTO: Compile driver from svn]
 
  +
* [https://www.mjmwired.net/kernel/Documentation/sound/alsa/ALSA-Configuration.txt 高度な ALSA モジュール設定]
  +
* [https://bbs.archlinux.org/viewtopic.php?id=36815 HOWTO: compile driver from svn]
 
* [http://www.volkerschatz.com/noise/alsa.html A close look at ALSA: ALSA concept introduction]
 
* [http://www.volkerschatz.com/noise/alsa.html A close look at ALSA: ALSA concept introduction]
  +
* [http://www.sabi.co.uk/Notes/linuxSoundALSA.html Linux ALSA sound notes]

2018年2月7日 (水) 00:17時点における版

関連記事

Advanced Linux Sound Architecture (ALSA) は、サウンドカードのデバイスドライバを提供する Open Sound System (OSSv3) を置き換えるために開発された Linux カーネルコンポーネントです。デバイスドライバの他に、ALSA は、カーネルドライバと直接やりとりせずに高レベルの API を使ってドライバ機能を使いたいという開発者のために、ユーザ空間のライブラリも提供しています。

インストール

ALSA はデフォルトの Arch カーネルにモジュールセットとして含まれているので、インストールは不要です。

起動時に自動で udev があなたのハードウェアを調べて、オーディオカード用の適切なカーネルモジュールをロードします。したがって、サウンドはすでに鳴らせるはずです。ただ、デフォルトでは全てのチャンネルはミュートにされています。チャンネルのミュートを解除してください。

ユーザー権限

(仮想端末やディスプレイマネージャで)ローカルログインしたユーザーには音楽を再生したりミキサーレベルを変更する権限があります。

リモートログインしたときにこれらをするには、ユーザーを audio グループに追加する必要があります。

ノート: audio グループに含まれているユーザーは直接デバイスにアクセスできるので、アプリケーションから排他的にアウトプットしたり(ソフトウェアミキシングが破壊されます)、高速ユーザー切り替えや multiseat を破壊してしまうおそれがあります。よって、特に必要がないのならばユーザーを audio グループに追加することは推奨されません[1]

ALSA ユーティリティ

alsa-utils パッケージをインストールしてください、サウンドデバイスをコンソールや端末から設定するための alsamixer ユーザー空間ツールが含まれています。また、高品質なリサンプリングアップ・ダウンミキシングなどの高度な機能を使いたい場合は alsa-plugins パッケージをインストールしてください。

OSS との互換性

ノート: /dev/dsp/dev/snd/seq が存在しないとアプリケーションがエラーを吐く場合は以下の設定が必要です。

ALSA には OSS のコールに介入して ALSA を使うようにさせる機能があります。このエミュレーションレイヤーは /dev/dsp を開いて音声データを直接書き込むような古いアプリケーションで有用です。OSS やエミュレーションライブラリがないと、/dev/dsp が見つからずにアプリケーションは音声を鳴らすことができません。

OSS アプリケーションに dmix (ソフトウェアミキシング) を扱わせたい場合は alsa-oss パッケージをインストールして snd-seq-oss, snd-pcm-oss, snd-mixer-oss カーネルモジュールをロードして OSS エミュレーションモジュールを有効にしてください。

PulseAudio との互換性

apulseAUR を使うことで PulseAudio にしか対応していないアプリケーションで ALSA を利用することができます。使用方法は $ apulse yourapplication とアプリケーションを起動するだけです。

ALSA と systemd

alsa-utils パッケージには、それぞれ起動時とシャットダウン時に動くように設定された alsa-restore.servicealsa-state.service が含まれています。

自動的にインストールされ有効化されるため、特に設定は必要ありません。systemctl を使うことでステータスを確認できます。

ノート: ALSA は設定を /var/lib/alsa/asound.state に保存します。

ALSA ファームウェア

alsa-firmware パッケージには特定のサウンドカードを使うのに必要なファームウェアが含まれています (例: Creative SB0400 Audigy2)。

チャンネルのミュートを解除する

現在のバージョンでは ALSA をインストールしたあと全てのチャンネルはデフォルトでミュートされています。手動でチャンネルをアンミュートする必要があります。

amixer を使ってミュートを解除

コマンドラインで amixer を使うことでサウンドカードのマスターボリュームのミュートを解除できます:

$ amixer sset Master unmute

alsamixer を使ってミュートを解除

alsamixer ncurses UI を使えば簡単にミュートを解除できます:

$ alsamixer

alsamixer の、チャンネルの下の MM ラベルはそのチャンネルがミュートになっていることを示しています。00 はミュートが解除されていることを示しています。

キーを押して MasterPCM チャンネルに移動して m キーを押してミュートを解除してください。 キーを押してボリュームを上げて値を 0 dB ゲインにしてください。ゲインは左上の 項目: の隣に表示されます。

ノート: ゲインを大きくしすぎると音にノイズが混じります。

5.1/7.1 サウンドのミュートの解除

5.1 または 7.1 サラウンドを鳴らしたいときは Front, Surround, Center, LFE (サブウーファー), Side などの他のチャンネルも同じようにミュートを解除してください(これらのチャンネル名は Intel HD Audio のものです、チャンネル名はハードウェアによって変わっているかもしれません)。

ノート: ミュートを解除しただけではステレオ音源は自動でアップミキシングされません。#アップ・ダウンミキシング を見て下さい。

マイクの有効化

マイクロフォンを有効にするには、Capture タブに F4 で切り替えてチャンネルを Space で有効にしてください。マイクが使えない時は Advanced Linux Sound Architecture/トラブルシューティング#マイクロフォン を見て下さい。

テスト

次に、音が鳴るかテストしてみましょう:

$ speaker-test -c 2

-c はスピーカーによって変えて下さい。例えば 7.1 では -c 8 を使います:

$ speaker-test -c 8

間違ったデバイスから音が出力される場合、-D 引数を使って手動でデバイスを指定してみてください:

$ speaker-test -D default:PCH -c 8

-D では PCM チャンネルの名前を値として指定できます。以下のコマンドで確認することができます:

$ aplay -L | grep :CARD
default:CARD=PCH  # 'default:PCH' is the PCM channel name for -D
sysdefault:CARD=PCH
front:CARD=PCH,DEV=0
surround21:CARD=PCH,DEV=0
surround40:CARD=PCH,DEV=0
surround41:CARD=PCH,DEV=0
surround50:CARD=PCH,DEV=0
surround51:CARD=PCH,DEV=0
surround71:CARD=PCH,DEV=0

音が出ない場合、#設定Advanced Linux Sound Architecture/トラブルシューティングに進んで問題を解決してください。

ノート

  • カードによってはアナログサウンドを聞くためにはデジタル出力をミュートする必要があります。Soundblaster Audigy LS では IEC958 チャンネルをミュートしてください。
  • マシンによっては (Thinkpad T61 など)、Speaker チャンネルのミュートを解除する必要があります。
  • マシンによっては (Dell E6400 など)、同じく FrontHeadphone チャンネルのミュートを解除する必要があります。
  • 再起動するとボリューム調整が元に戻ってしまう場合、root で alsamixer を実行してみて下さい。

設定

システムの設定ファイルは /etc/asound.conf で、ユーザー別の設定ファイルは ~/.asoundrc です。

デフォルトサウンドカードの設定

起動毎にサウンドカードの順番が変わってしまうときは、/etc/modprobe.d 内の .conf で終わるファイル (例: /etc/modprobe.d/alsa-base.conf) に順番を明記することができます。 例えば、mia サウンドカードを #0 にしたい場合は:

/etc/modprobe.d/alsa-base.conf
options snd slots=snd_mia,snd_hda_intel
options snd_mia index=0
options snd_hda_intel index=1

$ cat /proc/asound/modules を使ってロードされているサウンドモジュールとその順番を取得してください。$ lsmod | grep snd を使ってデバイス・モジュールのリストを取得してください。この設定では snd_mia を使うサウンドカードと snd_hda_intel を使うサウンドカード (例: オンボード) を一枚づつ挿していると仮定しています。

index を -2 にすることで ALSA にカードを優先的に使わせないようにすることも可能です。Linux Mint や Ubuntu などのディストリビューションでは以下の設定を使うことで USB やその他の"一般的でない"ドライバに index 0 を与えないようにしています:

/etc/modprobe.d/alsa-base.conf
options bt87x index=-2
options cx88_alsa index=-2
options saa7134-alsa index=-2
options snd-atiixp-modem index=-2
options snd-intel8x0m index=-2
options snd-via82xx-modem index=-2
options snd-usb-audio index=-2
options snd-usb-caiaq index=-2
options snd-usb-ua101 index=-2
options snd-usb-us122l index=-2
options snd-usb-usx2y index=-2
options snd-pcsp index=-2
options snd-usb-audio index=-2

変更を反映させるには再起動する必要があります。

環境変数を使ってデフォルト PCM を選択する

設定ファイルで、以下を追加してください:

 pcm.!default {
   type plug
   slave.pcm {
     @func getenv
     vars [ ALSAPCM ]
     default "hw:Audigy2"
   }
 }

default の行はあなたのカードの名前に置き換える必要があります (ここでは Audigy2 を例にしています)。aplay -l で名前を取得することができ surround51 のように PCM を使うことも可能です。ただしマイクロフォンを使う必要がある場合は full-duplex PCM をデフォルトにすると良いでしょう。

これで環境変数 ALSAPCM を変更することでサウンドカードを選択できるようになります。カードを選択できない全てのプログラムで問題なく使えます。 例えば、mix51to20 という名前の downmix PCM を書いたときは mplayerALSAPCM=mix51to20 mplayer example_6_channel.wav で使うことができます。

他の方法

まずデフォルトに設定したいカード・デバイスの id を aplay -l で見つける必要があります:

$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Intel [HDA Intel], device 0: CONEXANT Analog [CONEXANT Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: Intel [HDA Intel], device 1: Conexant Digital [Conexant Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: JamLab [JamLab], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: Audio [Altec Lansing XT1 - USB Audio], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

例えば、このリストの最後のエントリはカード ID 2 でデバイス ID 0 です。このカードをデフォルトにするには、システム全体のファイル /etc/asound.conf かユーザー定義ファイル ~/.asoundrc のどちらかを使ってください。ファイルが存在しないときは作成する必要があります。そして以下のオプションを適切なカード・デバイス id を使って挿入して下さい。

pcm.!default {
	type hw
	card 2
}

ctl.!default {
	type hw           
	card 2
}
ノート: Asus U32U シリーズではカードの pcm と ctl の両方を 1 に設定する必要があります。

'pcm' オプションは音声の再生で使われるカード・デバイスに影響を与え、'ctl' オプションは alsamixer などのコントロールユーティリティで使われるカードに影響を与えます。

アプリケーション (mplayer など) を(再)起動すれば変更はすぐ適用されます。また、aplay などのコマンドを使ってテストすることが可能です。

$ aplay -D default:PCH your_favourite_sound.wav

asound 設定に関するエラーが表示される場合は、上流のドキュメント を確認して設定ファイルフォーマットの変更を確認してください。

サウンドモジュールがロードされていることを確かめる

udev が正しくサウンドカードを検知しているかチェックするには次のコマンドを実行してください:

$ lsmod | grep '^snd' | column -t
snd_hda_codec_hdmi     22378   4
snd_hda_codec_realtek  294191  1
snd_hda_intel          21738   1
snd_hda_codec          73739   3  snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_intel
snd_hwdep              6134    1  snd_hda_codec
snd_pcm                71032   3  snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec
snd_timer              18992   1  snd_pcm
snd                    55132   9  snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm,snd_timer
snd_page_alloc         7017    2  snd_hda_intel,snd_pcm

出力が上と同じようになっていれば、サウンドドライバが首尾よく自動検出されています。

ノート: udev>=171 から、OSS エミュレーションモジュール (snd_seq_oss, snd_pcm_oss, snd_mixer_oss) はデフォルトではロードされないようになりました: 必要ならば手動でロードしてください

/dev/snd/ ディレクトリにデバイスファイルがあるか調べてもいいかもしれません:

$ ls -l /dev/snd
total 0
crw-rw----  1 root audio 116,  0 Apr  8 14:17 controlC0
crw-rw----  1 root audio 116, 32 Apr  8 14:17 controlC1
crw-rw----  1 root audio 116, 24 Apr  8 14:17 pcmC0D0c
crw-rw----  1 root audio 116, 16 Apr  8 14:17 pcmC0D0p
crw-rw----  1 root audio 116, 25 Apr  8 14:17 pcmC0D1c
crw-rw----  1 root audio 116, 56 Apr  8 14:17 pcmC1D0c
crw-rw----  1 root audio 116, 48 Apr  8 14:17 pcmC1D0p
crw-rw----  1 root audio 116,  1 Apr  8 14:17 seq
crw-rw----  1 root audio 116, 33 Apr  8 14:17 timer
ノート: IRC やフォーラムで助けを求める時は、上記のコマンドの出力を貼って下さい。

とにかく controlC0pcmC0D0p のようなデバイスがあれば、サウンドモジュールが正しくロードされていることを示しています。

そうなってないのなら、あなたのサウンドモジュールは正しく検出されていません。これを解決するには、手動でモジュールのロードを試して下さい:

  • サウンドカードのモジュールを確認します: ALSA Soundcard Matrix モジュールには名前の前に 'snd-' が付きます (例: snd-via82xx)。
  • モジュールをロードします
  • /dev/snd の中のデバイスファイルを確認したり(上述)、alsamixeramixer に変化がないか調べて下さい。
  • snd-NAME-OF-MODULEsnd-pcm-oss起動時にロードするよう設定して下さい。

S/PDIF 出力

S/PDIF はコンピュータとオーディオアンプを接続するときにしばしば使われるデジタルオーディオインターフェイスです (5.1/7.1 サラウンドのホームシアターなど)。

ノート: サウンドカードによっては以下の瀬底でアナログ出力が無効になることがあります (例: Sound Blaster Audigy 2)。

使用しているシェルにあわせて、シェルの設定ファイルに以下の行を追加してください:

amixer -c 0 cset name='IEC958 Playback Switch' on

カードのデジタル出力の名前は以下のコマンドで確認できます:

$ amixer scontrols

イコライザー

AlsaEqual を使う (UI あり)

alsaequalAUR パッケージをインストールしてください。

パッケージをインストールした後、以下を ALSA 設定ファイル (~/.asoundrc/etc/asound.conf) に挿入してください:

ctl.equal {
 type equal;
}

pcm.plugequal {
  type equal;
  # Modify the line below if you do not
  # want to use sound card 0.
  #slave.pcm "plughw:0,0";
  #by default we want to play from more sources at time:
  slave.pcm "plug:dmix";
}
#pcm.equal {
  # If you do not want the equalizer to be your
  # default soundcard comment the following
  # line and uncomment the above line. (You can
  # choose it as the output device by addressing
  # it with specific apps,eg mpg123 -a equal 06.Back_In_Black.mp3)
pcm.!default {
  type plug;
  slave.pcm plugequal;
}

x86_64 環境で lib32-flashplugin を使用している場合、上記の設定では flash で音が鳴りません。以下の設定で flash の音を有効にできますが、pcm "hw:0,0" の行でサウンドカードを手動で指定する必要があります (利用可能なサウンドカードとカードのデバイス番号は aplay -l で確認できます):

/etc/asound.conf
pcm.dmixer {
    type dmix
    ipc_key 2048
    slave {
        pcm "hw:0,0"
        buffer_size 16384
    }
}

ctl.equal {
    type equal;
}

pcm.equalizer {
    type equal
    slave.pcm "plug:dmixer"
}

pcm.!default {
    type plug
    slave.pcm equalizer
}

次のコマンドを使ってイコライザーを変更することができます:

$ alsamixer -D equal

設定ファイルはユーザーごとに違うので注意してください。~/.alsaequal.bin に保存されます。 AlsaEqual を異なるユーザーの mpd などのソフトウェアで使いたいときは、次を実行することで設定できます:

# su mpd -c 'alsamixer -D equal'

もしくは、ユーザーの home にある .alsaequal.bin のシンボリックリンクを作って下さい。

AlsaEqual の管理

alsaequal-mgrAUR パッケージをインストールしてください。

通常通りイコライザーを設定してください:

$ alsamixer -D equal

状態に満足したら、名前を付けて保存してください (例: "foo"):

$ alsaequal-mgr save foo

イコライザーの状態 "foo" は次のコマンドで戻すことができます:

$ alsaequal-mgr load foo

ゲームや映画、音楽のジャンル別、VoIP アプリなどそれぞれに合わせてイコライザーの状態を作成し、必要なときにリロードできます。

オプションの詳細は project page を見て下さい。

mbeq を使う

ノート: この方法では ladspa プラグインを使う必要があります。サウンドを再生する際に CPU の使用量が多めです。さらに、ステレオサウンドを念頭に置いて作成されています (例: ヘッドフォン)。

alsa-plugins, ladspa, swh-plugins パッケージをインストールしてください。

まだ ~/.asoundrc/etc/asound.conf ファイルを作成していない場合は、どちらかを作成して以下を挿入して下さい:

/etc/asound.conf
pcm.eq {
  type ladspa

  # The output from the EQ can either go direct to a hardware device
  # (if you have a hardware mixer, e.g. SBLive/Audigy) or it can go
  # to the software mixer shown here.
  #slave.pcm "plughw:0,0"
  slave.pcm "plug:dmix"

  # Sometimes you may need to specify the path to the plugins,
  # especially if you have just installed them.  Once you have logged
  # out/restarted this should not be necessary, but if you get errors
  # about being unable to find plugins, try uncommenting this.
  #path "/usr/lib/ladspa"

  plugins [
    {
      label mbeq
      id 1197
      input {
        #this setting is here by example, edit to your own taste
        #bands: 50hz, 100hz, 156hz, 220hz, 311hz, 440hz, 622hz, 880hz, 1250hz, 1750hz, 25000hz,
        #50000hz, 10000hz, 20000hz
        controls [ -5 -5 -5 -5 -5 -10 -20 -15 -10 -10 -10 -10 -10 -3 -2 ]
      }
    }
  ]
 }

 # Redirect the default device to go via the EQ - you may want to do
 # this last, once you are sure everything is working.  Otherwise all
 # your audio programs will break/crash if something has gone wrong.

 pcm.!default {
  type plug
  slave.pcm "eq"
 }

 # Redirect the OSS emulation through the EQ too (when programs are running through "aoss")

 pcm.dsp0 {
  type plug
  slave.pcm "eq"
 }

高品質なリサンプリング

ソフトウェアミキシングが有効になっていると、ALSA は全てを同じ周波数 (デフォルトで 48000) にリサンプリングします。dmix はサウンドの品質を落としてしまう低品質リサンプリングアルゴリズムを使っています。

alsa-pluginslibsamplerate をインストールして下さい。

デフォルトの変換器を libsamplerate に変更します:

/etc/asound.conf
defaults.pcm.rate_converter "samplerate_best"

または:

~/.asoundrc
defaults.pcm.rate_converter "samplerate_best"

samplerate_best は最高のサウンド品質を提供しますが、リアルタイムサンプリングをするには CPU サイクルが大量に必要になるので使うにはそこそこの CPU が必須です。また、dmix の設定で buffer_size を基本の 4096 から 8192 か 16384 に調整する必要もあるかもしれません。他のアルゴリズム (samplerate など) も利用できますがデフォルトのリサンプラーに比べておそらくあまり改善はないでしょう。

警告: 環境によっては、samplerate_best を有効にすると flashplayer でサウンドが出力されなくなるという問題が発生します。

アップ・ダウンミキシング

アップミキシング

音楽などのステレオ音源を 5.1 や 7.1 サウンドシステムをフルに使って再生するには、アップミキシングを使う必要があります。黎明期ではこれをするのはとても難しいものでした。ですが現在では簡単にアップミキシングができるプラグインがあります。alsa-plugins に含まれている upmix プラグインを使います。

それから以下を ALSA 設定ファイル (/etc/asound.conf~/.asoundrc) に追加してください:

pcm.upmix71 {
    type upmix
    slave.pcm "surround71"
    delay 15
    channels 8
}

上の例は 7.1 のものですが 5.1 や 4.0 にも簡単に変えられます。

設定をするとアップミキシングに使う新しい pcm が加わります。全てのサウンド音源をこの pcm に通したい時は、次のようにデフォルトとして追加してください:

pcm.!default "plug:upmix71"

このプラグインは使うにあたって特に設定を変える必要はありません。 プラグインが動作しないときは、以下のようにしてアップミキシングする PCM のための dmixer を自分で設定してください:

pcm.dmix6 {
    type asym
    playback.pcm {
        type dmix
        ipc_key 567829
        slave {
            pcm "hw:0,0"
            channels 6
        }
    }
}

そして "surround71" のかわりに "dmix6" を使って下さい。 音がスキップしたり歪むときは、buffer_size を増やす (例: 32768) か 高品質リサンプラーを使ってください。

ダウンミキシング

5.1 サウンドの映画をステレオシステムで視聴するときなど、音源をステレオにダウンミキシングしたい場合、alsa-plugins に含まれている vdownmix プラグインを使って下さい。

設定ファイルに以下を追加して下さい:

pcm.!surround51 {
    type vdownmix
    slave.pcm "default"
}
pcm.!surround40 {
    type vdownmix
    slave.pcm "default"
}
ノート: これだけではダウンミキシングが動作しないかもしれません、[2] を参照してください。その場合、pcm.!default "plug:surround51"pcm.!default "plug:surround40" を追加する必要があります。vdownmix プラグはひとつだけ使うことができます; 7.1 チャンネルのときは、上の設定の代わりに surround71 を使って下さい。vdownmixdmix の両方を動かす設定例がここにあります。

ミキシング

ミキシングを使うことで複数のアプリケーションが同時に音を出力することが可能になります。外付けのサウンドカードはほとんどの場合ハードウェアミキシングをサポートしており、可能であればデフォルトで有効にされます。内蔵のマザーボードに載っているサウンドカード (Intel HD Audio など) は基本的にハードウェアミキシングをサポートしていません。そのようなカードでは、dmix という名前の ALSA プラグインを使ってソフトウェアミキシングを利用します。この機能はハードウェアミキシングが使えない場合に自動で有効にされます。

手動で dmix を有効にする

ノート: ALSA 1.0.9rc2 以上ではアナログサウンドに dmix を設定する必要はありません。ハードウェアミキシングをサポートしていないサウンドカードのために Dmix はデフォルトで有効にされています。

ソフトウェアミキシングが動作しない場合は、あなたの home フォルダに以下の内容で .asoundrc ファイルを作成してください。

pcm.dsp {
    type plug
    slave.pcm "dmix"
}

これでソフトウェアミキシングが有効になり複数のアプリケーションがサウンドカードを使えるようになるはずです。使えない場合は、/etc/asound.conf の中身を全て上のように置き換えてみて下さい。

S/PDIF などのデジタル音声出力をするために、ALSA パッケージは依然として dmix をデフォルトで有効にしていません。そのため、上の dmix 設定は S/PDIF デバイスで dmix を有効にするために使うことはできません。

一般的な問題と解決方法は Advanced Linux Sound Architecture/トラブルシューティング を見て下さい。

ハードウェアミキシング

サポート

ハードウェアでミキシングをサポートしているオーディオチップセットを持っている場合、設定は必要ありません。ほとんど全てのオンボード・オーディオチップセットはハードウェアミキシングをサポートしていないので、ソフトウェアでミキシングする必要があります(上述)。ハードウェアミキシングをサポートしているサウンドカードは少なく、Linux でサポートされているサウンドカードは以下になります:

  • Creative SoundBlaster Live! (5.1 モデル)
  • Creative SoundBlaster Audigy (複数)
  • Creative SoundBlaster Audidy 2 (ZS モデル)
  • Creative SoundBlaster Audigy 4 (Pro モデル)
ノート:
  • 上記のカードのローエンド版 (Audigy SE, Audigy 2 NX, SoundBlaster Live! 24bit, SoundBlaster Live! 7.1) は別のチップを使っているためハードウェアミキシングに対応していません。
  • オンボードの VIA8237 チップは4ストリームのハードウェアミキシングに対応していますが、マザーボードによってはそれが3ストリームになったり (4番目のストリームが音を出さない) あるいは使えないこともあります。動作したとしても、他の方法と比べて音質は劣ります。

フィックス

64-bit Arch で Intel Corporation 82801I (ICH9 Family) HD Audio Controller (rev 02) を使っている場合、Enemy Territory でサウンドを鳴らすには以下を実行して下さい:

echo "et.x86 0 0 direct" > /proc/asound/card0/pcm0p/oss
echo "et.x86 0 0 disable" > /proc/asound/card0/pcm0c/oss

ヒントとテクニック

USB サウンドカードのホットプラグ

USB サウンドカードが挿入されたときに、自動的に第一のアウトプットデバイスにするために、以下の udev ルールを使うことができます (例: 以下の2行を /etc/udev/rules.d/00-local.rules に追加して再起動する)。

KERNEL=="pcmC[D0-9cp]*", ACTION=="add", PROGRAM="/bin/sh -c 'K=%k; K=$${K#pcmC}; K=$${K%%D*}; echo defaults.ctl.card $$K > /etc/asound.conf; echo defaults.pcm.card $$K >>/etc/asound.conf'"
KERNEL=="pcmC[D0-9cp]*", ACTION=="remove", PROGRAM="/bin/sh -c 'echo defaults.ctl.card 0 > /etc/asound.conf; echo defaults.pcm.card 0 >>/etc/asound.conf'"

同時出力

ミニジャックで接続した外付けスピーカーと内蔵のスピーカーで同時に音楽を再生したい場合、alsamixeramixer を使うことで Auto-Mute のミュートを解除してください:

$ amixer sset "Auto-Mute" unmute

そして Headphones, Speaker, Bass Speaker など他の必要なアイテムのミュートを解除してください。

ノート: (ミニジャック) ヘッドフォンコネクタで接続した場合に音が割れる場合、Advanced Linux Sound Architecture/トラブルシューティング#ミニジャック (ヘッドフォンコネクタ) で音が割れるを見て下さい。

キーボードのボリュームコントロール

以下のコマンドをボリュームキーにマッピングしてください: XF86AudioRaiseVolume, XF86AudioLowerVolume, XF86AudioMute

ボリュームを上げるには:

amixer set Master 5%+

ボリュームを下げるには:

amixer set Master 5%-

トラブルシューティング

Advanced Linux Sound Architecture/トラブルシューティングを見て下さい。

設定例

Advanced Linux Sound Architecture/設定例を見て下さい。

参照