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

提供: ArchWiki
ナビゲーションに移動 検索に移動
(文字列「Category:音声/動画」を「Category:マルチメディア」に置換)
(同期)
42行目: 42行目:
 
===ALSA ユーティリティ===
 
===ALSA ユーティリティ===
   
[[公式リポジトリ]]から {{Pkg|alsa-utils}} パッケージを[[インストール]]してください、サウンドデバイスをコンソールや端末から設定するための {{ic|alsamixer}} ユーザー空間ツールが含まれています。また、[[#高品質なリサンプリング|高品質なリサンプリング]]や[[#アップ・ダウンミキシング|アップ・ダウンミキシング]]などの高度な機能を使いたい場合は {{Pkg|alsa-plugins}} パッケージをインストールしてください。
+
{{Pkg|alsa-utils}} パッケージを[[インストール]]してください、サウンドデバイスをコンソールや端末から設定するための {{ic|alsamixer}} ユーザー空間ツールが含まれています。また、[[#高品質なリサンプリング|高品質なリサンプリング]]や[[#アップ・ダウンミキシング|アップ・ダウンミキシング]]などの高度な機能を使いたい場合は {{Pkg|alsa-plugins}} パッケージをインストールしてください。
   
 
===OSS との互換性===
 
===OSS との互換性===
51行目: 51行目:
   
 
OSS アプリケーションに dmix (ソフトウェアミキシング) を扱わせたい場合は {{Pkg|alsa-oss}} パッケージをインストールして {{ic|snd-seq-oss}}, {{ic|snd-pcm-oss}}, {{ic|snd-mixer-oss}} [[カーネルモジュール]]をロードして OSS エミュレーションモジュールを有効にしてください。
 
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===
 
===ALSA と systemd===
58行目: 62行目:
   
 
{{Note|1=ALSA は設定を {{ic|/var/lib/alsa/asound.state}} に保存します。}}
 
{{Note|1=ALSA は設定を {{ic|/var/lib/alsa/asound.state}} に保存します。}}
  +
  +
=== ALSA ファームウェア ===
  +
  +
{{Pkg|alsa-firmware}} パッケージには特定のサウンドカードを使うのに必要なファームウェアが含まれています (例: Creative SB0400 Audigy2)。
   
 
==チャンネルのミュートを解除する==
 
==チャンネルのミュートを解除する==
101行目: 109行目:
 
$ speaker-test -c 8
 
$ speaker-test -c 8
   
音が出ない場合、[[#設定]] や [[Advanced Linux Sound Architecture/トラブルシューティング]] に進ん問題解決してください
+
間違ったデバイスから音が出力される場合、{{ic|-D}} 引数を使って手動デバイス指定てみてください:
  +
  +
$ speaker-test -D default:PCH -c 8
  +
  +
{{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/トラブルシューティング]]に進んで問題を解決してください。
   
 
===ノート===
 
===ノート===
111行目: 137行目:
   
 
==設定==
 
==設定==
  +
  +
システムの設定ファイルは {{ic|/etc/asound.conf}} で、ユーザー別の設定ファイルは {{ic|~/.asoundrc}} です。
   
 
===デフォルトサウンドカードの設定===
 
===デフォルトサウンドカードの設定===
201行目: 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 上流のドキュメント] を確認して設定ファイルフォーマットの変更を確認してください。
   
 
===サウンドモジュールがロードされていることを確かめる===
 
===サウンドモジュールがロードされていることを確かめる===
250行目: 278行目:
 
* {{ic|snd-NAME-OF-MODULE}} と {{ic|snd-pcm-oss}} を[[カーネルモジュール#ロード|起動時にロード]]するよう設定して下さい。
 
* {{ic|snd-NAME-OF-MODULE}} と {{ic|snd-pcm-oss}} を[[カーネルモジュール#ロード|起動時にロード]]するよう設定して下さい。
   
===SPDIF 出力===
+
===S/PDIF 出力===
   
  +
[[wikipedia:ja:S/PDIF|S/PDIF]] はコンピュータとオーディオアンプを接続するときにしばしば使われるデジタルオーディオインターフェイスです (5.1/7.1 サラウンドのホームシアターなど)。
* GNOME ボリュームコントールの、オプションタブから、IEC958 を PCM に変更して下さい。このオプションは設定から有効にすることができます。
 
  +
{{note|サウンドカードによっては以下の瀬底でアナログ出力が無効になることがあります (例: Sound Blaster Audigy 2)。}}
* 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
   
273行目: 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}}) に挿入してください:
302行目: 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
   
312行目: 356行目:
 
=====AlsaEqual の管理=====
 
=====AlsaEqual の管理=====
   
[[Arch User Repository|AUR]] から {{AUR|alsaequal-mgr}} をインストールしてください (もしくは [http://xyne.archlinux.ca/repos/ Xyneのリポジトリ] を使って下さい)
+
{{AUR|alsaequal-mgr}} パッケージをインストールしてください。
   
 
通常通りイコライザーを設定してください:
 
通常通りイコライザーを設定してください:
380行目: 424行目:
 
}
 
}
 
</nowiki>}}
 
</nowiki>}}
 
* これで動くはずです (動かない時は、フォーラムで質問して下さい)。
 
   
 
==高品質なリサンプリング==
 
==高品質なリサンプリング==
531行目: 573行目:
   
 
==参照==
 
==参照==
  +
* [http://www.alsa-project.org/ ALSA wiki]
  +
* [http://www.alsa-project.org/main/index.php/Asoundrc Asoundrc]
  +
* [http://alsa.opensrc.org/ 非公式 ALSA wiki]
 
* [http://www.mjmwired.net/kernel/Documentation/sound/alsa/ALSA-Configuration.txt 高度な ALSA モジュール設定]
 
* [http://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.alsa-project.org/main/index.php/Asoundrc Asoundrc]
 
* [http://alsa.opensrc.org/Main_Page 非公式の ALSA Wiki]
 
* [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]

2017年11月16日 (木) 00:27時点における版

関連記事

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

参照