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

提供: ArchWiki
ナビゲーションに移動 検索に移動
(文字列「[[zh-CN:」を「[[zh-hans:」に置換)
(同じ利用者による、間の4版が非表示)
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|Advanced Linux Sound Architecture/トラブルシューティング}}
 
{{Related|Advanced Linux Sound Architecture/トラブルシューティング}}
 
{{Related|サウンドシステム}}
 
{{Related|サウンドシステム}}
{{Related|PC スピーカーのビープ音無効化}}
+
{{Related|PC スピーカーのビープ音無効化}}
 
{{Related|PulseAudio}}
 
{{Related|PulseAudio}}
 
{{Related|Open Sound System}}
 
{{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]] のページを見て下さい。}}
 
   
 
==インストール==
 
==インストール==
32行目: 30行目:
 
ALSA はデフォルトの Arch カーネルにモジュールセットとして含まれているので、インストールは不要です。
 
ALSA はデフォルトの Arch カーネルにモジュールセットとして含まれているので、インストールは不要です。
   
起動時に自動で [[udev]] があなたのハードウェアを調べて、オーディオカード用の適切なカーネルモジュールをロードします。したがって、サウンドはすでに鳴らせるはずです。ただ、デフォルトでは全てのチャンネルはミュートにされています。
+
起動時に自動で [[udev]] があなたのハードウェアを調べて、オーディオカード用の適切なカーネルモジュールをロードします。したがって、サウンドはすでに鳴らせるはずです。ただ、デフォルトでは全てのチャンネルはミュートにされています。[[#チャンネルのミュートを解除する|チャンネルのミュートを解除]]してください
   
  +
=== ユーザー権限 ===
(仮想端末やディスプレイマネージャで)ローカルログインしたユーザーには音楽を再生したりミキサーレベルを変更する権限があります。リモートログインしたときにこれらをするには、ユーザーを {{ic|audio}} グループに[[ユーザーとグループ#グループ管理|追加する]]必要があります。{{ic|audio}} グループに含まれているユーザーは直接デバイスにアクセスできるので、アプリケーションから排他的にアウトプットしたり(ソフトウェアミキシングが破壊されます)、高速ユーザー切り替えや multiseat を破壊してしまうおそれがあります。よって、特に必要がないのならばユーザーを {{ic|audio}} グループに追加することは'''推奨されません'''[https://wiki.ubuntu.com/Audio/TheAudioGroup]。
 
   
  +
(仮想端末やディスプレイマネージャで)ローカルログインしたユーザーには音楽を再生したりミキサーレベルを変更する権限があります。
===ユーザースペースユーティリティ===
 
  +
  +
リモートログインしたときにこれらをするには、ユーザーを {{ic|audio}} グループに[[ユーザーとグループ#グループ管理|追加]]する必要があります。
  +
  +
{{Note|1={{ic|audio}} グループに含まれているユーザーは直接デバイスにアクセスできるので、アプリケーションから排他的にアウトプットしたり(ソフトウェアミキシングが破壊されます)、高速ユーザー切り替えや multiseat を破壊してしまうおそれがあります。よって、特に必要がないのならばユーザーを {{ic|audio}} グループに追加することは'''推奨されません'''[https://wiki.ubuntu.com/Audio/TheAudioGroup]。}}
  +
  +
===ALSA ユーティリティ===
   
 
[[公式リポジトリ]]から {{Pkg|alsa-utils}} パッケージを[[インストール]]してください、サウンドデバイスをコンソールや端末から設定するための {{ic|alsamixer}} ユーザー空間ツールが含まれています。また、[[#高品質なリサンプリング|高品質なリサンプリング]]や[[#アップ・ダウンミキシング|アップ・ダウンミキシング]]などの高度な機能を使いたい場合は {{Pkg|alsa-plugins}} パッケージをインストールしてください。
 
[[公式リポジトリ]]から {{Pkg|alsa-utils}} パッケージを[[インストール]]してください、サウンドデバイスをコンソールや端末から設定するための {{ic|alsamixer}} ユーザー空間ツールが含まれています。また、[[#高品質なリサンプリング|高品質なリサンプリング]]や[[#アップ・ダウンミキシング|アップ・ダウンミキシング]]などの高度な機能を使いたい場合は {{Pkg|alsa-plugins}} パッケージをインストールしてください。
   
  +
===OSS との互換性===
OSS アプリケーションに dmix (ソフトウェアミキシング) を扱わせたい場合は {{Pkg|alsa-oss}} パッケージをインストールして {{ic|snd_seq_oss}}, {{ic|snd_pcm_oss}}, {{ic|snd_mixer_oss}} [[カーネルモジュール]]をロードして 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 エミュレーションモジュールを有効にしてください。
  +
  +
===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 をインストールしたあと全てのチャンネルは'''デフォルトでミュートされています'''。手動でチャンネルをアンミュートする必要があります。
 
現在のバージョンでは ALSA をインストールしたあと全てのチャンネルは'''デフォルトでミュートされています'''。手動でチャンネルをアンミュートする必要があります。
  +
  +
===amixer を使ってミュートを解除===
  +
  +
コマンドラインで {{ic|amixer}} を使うことでサウンドカードのマスターボリュームのミュートを解除できます:
  +
  +
$ amixer sset Master unmute
  +
  +
===alsamixer を使ってミュートを解除===
   
 
{{ic|alsamixer}} ncurses UI を使えば簡単にミュートを解除できます:
 
{{ic|alsamixer}} ncurses UI を使えば簡単にミュートを解除できます:
50行目: 75行目:
 
$ 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 を実行してみて下さい。
 
}}
 
   
 
次に、音が鳴るかテストしてみましょう:
 
次に、音が鳴るかテストしてみましょう:
81行目: 103行目:
 
音が出ない場合、[[#設定]] や [[Advanced Linux Sound Architecture/トラブルシューティング]] に進んで問題を解決してください。
 
音が出ない場合、[[#設定]] や [[Advanced Linux Sound Architecture/トラブルシューティング]] に進んで問題を解決してください。
   
  +
===ノート===
{{pkg|alsa-utils}} パッケージには、それぞれ起動時とシャットダウン時に動くように設定された {{ic|alsa-restore.service}} と {{ic|alsa-store.service}} が含まれています。参考までに言うと、ALSA は設定を {{ic|/var/lib/alsa/asound.state}} に保存します。
 
  +
  +
* カードによってはアナログサウンドを聞くためにはデジタル出力をミュートする必要があります。Soundblaster Audigy LS では IEC958 チャンネルをミュートしてください。
  +
* マシンによっては (Thinkpad T61 など)、Speaker チャンネルのミュートを解除する必要があります。
  +
* マシンによっては (Dell E6400 など)、同じく {{ic|Front}} や {{ic|Headphone}} チャンネルのミュートを解除する必要があります。
  +
* 再起動するとボリューム調整が元に戻ってしまう場合、root で alsamixer を実行してみて下さい。
   
 
==設定==
 
==設定==
225行目: 252行目:
 
===SPDIF 出力===
 
===SPDIF 出力===
   
(from gralves from the Gentoo forums)
 
 
* GNOME ボリュームコントールの、オプションタブから、IEC958 を PCM に変更して下さい。このオプションは設定から有効にすることができます。
 
* GNOME ボリュームコントールの、オプションタブから、IEC958 を PCM に変更して下さい。このオプションは設定から有効にすることができます。
 
* GNOME ボリュームコントロールをインストールしていない場合、
 
* GNOME ボリュームコントロールをインストールしていない場合、
461行目: 487行目:
   
 
{{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.}}
 
   
 
====フィックス====
 
====フィックス====
478行目: 504行目:
 
{{bc|1=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'"
 
{{bc|1=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'"}}
 
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'"}}
  +
  +
=== 同時出力 ===
  +
  +
ミニジャックで接続した外付けスピーカーと内蔵のスピーカーで同時に音楽を再生したい場合、{{ic|alsamixer}} や {{ic|amixer}} を使うことで ''Auto-Mute'' のミュートを解除してください:
  +
$ amixer sset "Auto-Mute" unmute
  +
  +
そして ''Headphones''', ''Speaker'', '''Bass Speaker'' など他の必要なアイテムのミュートを解除してください。
  +
{{Note|(ミニジャック) ヘッドフォンコネクタで接続した場合に音が割れる場合、[[Advanced Linux Sound Architecture/トラブルシューティング#ミニジャック (ヘッドフォンコネクタ) で音が割れる]]を見て下さい。}}
  +
  +
=== キーボードのボリュームコントロール ===
  +
  +
以下のコマンドをボリュームキーにマッピングしてください: {{ic|XF86AudioRaiseVolume}}, {{ic|XF86AudioLowerVolume}}, {{ic|XF86AudioMute}}
  +
  +
ボリュームを上げるには:
  +
amixer set Master 5%+
  +
  +
ボリュームを下げるには:
  +
amixer set Master 5%-
   
 
==トラブルシューティング==
 
==トラブルシューティング==
488行目: 532行目:
 
==参照==
 
==参照==
 
* [http://www.mjmwired.net/kernel/Documentation/sound/alsa/ALSA-Configuration.txt 高度な ALSA モジュール設定]
 
* [http://www.mjmwired.net/kernel/Documentation/sound/alsa/ALSA-Configuration.txt 高度な ALSA モジュール設定]
  +
* [http://www.alsa-project.org/main/index.php/Asoundrc Asoundrc]
 
* [http://alsa.opensrc.org/Main_Page 非公式の ALSA Wiki]
 
* [http://alsa.opensrc.org/Main_Page 非公式の ALSA Wiki]
 
* [https://bbs.archlinux.org/viewtopic.php?id=36815 HOWTO: Compile driver from svn]
 
* [https://bbs.archlinux.org/viewtopic.php?id=36815 HOWTO: Compile driver from svn]

2017年1月29日 (日) 00:36時点における版

関連記事

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 エミュレーションモジュールを有効にしてください。

ALSA と systemd

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

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

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

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

現在のバージョンでは 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

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

ノート

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

設定

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

起動毎にサウンドカードの順番が変わってしまうときは、/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 your_favourite_sound.wav

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

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

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起動時にロードするよう設定して下さい。

SPDIF 出力

  • GNOME ボリュームコントールの、オプションタブから、IEC958 を PCM に変更して下さい。このオプションは設定から有効にすることができます。
  • GNOME ボリュームコントロールをインストールしていない場合、
    • /var/lib/alsa/asound.state を編集してください。このファイルには alsasound のミキサーの設定が保存されています。
    • 次の文を探して下さい: 'IEC958 Playback Switch'。その近くに value:false と書かれた行があるはずです。それを value:true に変えて下さい。
    • 次の行を探して下さい: 'IEC958 Playback AC97-SPSA'。これの値を 0 に変えてください。
    • ALSA を再起動します。

2014年2月2日現在、上の方法は使うことができないようです。下を見て下さい。

ログイン時に SPDIF 出力を自動的に有効にする他の方法:

  • 次の行を ~/.xinitrc に追加してください:
amixer -c 0 cset name='IEC958 Playback Switch' on

あなたのカードのデジタル出力の名前を見るには次のコマンドを実行してください:

$ amixer scontrols

イコライザー

AlsaEqual を使う (UI あり)

AUR から alsaequalAUR をインストールしてください。

ノート: システムが x86_64 で 32bit の flashplugin を使っていると flash で音が鳴らなくなります。alsaequal を無効にするか alsaequal を 32bit でビルドして下さい。

パッケージをインストールした後、以下を 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;
}

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

$ alsamixer -D equal

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

# su mpd -c 'alsamixer -D equal'

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

AlsaEqual の管理

AUR から alsaequal-mgrAUR をインストールしてください (もしくは Xyneのリポジトリ を使って下さい)。

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

$ 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

Tips and tricks

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/設定例を見て下さい。

参照