Difference between revisions of "Advanced Linux Sound Architecture (日本語)"

From ArchWiki
Jump to: navigation, search
Line 16: Line 16:
 
[[tr:Gelişmiş_ses_mimarisi_(ALSA)]]
 
[[tr:Gelişmiş_ses_mimarisi_(ALSA)]]
 
[[zh-CN:Advanced Linux Sound Architecture]]
 
[[zh-CN:Advanced Linux Sound Architecture]]
[[Wikipedia: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]] のページを見て下さい。}}
 
{{Note|もうひとつのサウンド環境については、[[Open Sound System]] のページを見て下さい。}}
Line 28: Line 28:
  
 
==インストール==
 
==インストール==
 +
 
ALSA はデフォルトの Arch カーネルにモジュールセットとして含まれているので、インストールは不要です。
 
ALSA はデフォルトの Arch カーネルにモジュールセットとして含まれているので、インストールは不要です。
  
起動時に自動で [[udev]] があなたのハードウェアを調べて、オーディオカード用の適切なカーネルモジュールをロードします。したがって、サウンドはすでに鳴らせるはずです。ただ、デフォルトでは全てのチャンネルはミュートにされています。
+
起動時に自動で [[udev (日本語)|udev]] があなたのハードウェアを調べて、オーディオカード用の適切なカーネルモジュールをロードします。したがって、サウンドはすでに鳴らせるはずです。ただ、デフォルトでは全てのチャンネルはミュートにされています。
  
(仮想端末やディスプレイマネージャで)ローカルログインしたユーザーには音楽を再生したりミキサーレベルを変更する権限があります。リモートログインしたときにこれらをするには、ユーザーを {{ic|audio}} グループに[[Users and Groups (日本語)#グループ管理|追加する]]必要があります。{{ic|audio}} グループに含まれているユーザーは直接デバイスにアクセスできるので、アプリケーションから排他的にアウトプットしたり(ソフトウェアミキシングが破壊されます)、高速ユーザー切り替えや multiseat を破壊することができます。よって、特に必要がないのならばユーザーを {{ic|audio}} グループに追加することは'''推奨されません'''[https://wiki.ubuntu.com/Audio/TheAudioGroup]。
+
(仮想端末やディスプレイマネージャで)ローカルログインしたユーザーには音楽を再生したりミキサーレベルを変更する権限があります。リモートログインしたときにこれらをするには、ユーザーを {{ic|audio}} グループに[[Users and Groups (日本語)#グループ管理|追加する]]必要があります。{{ic|audio}} グループに含まれているユーザーは直接デバイスにアクセスできるので、アプリケーションから排他的にアウトプットしたり(ソフトウェアミキシングが破壊されます)、高速ユーザー切り替えや multiseat を破壊してしまうおそれがあります。よって、特に必要がないのならばユーザーを {{ic|audio}} グループに追加することは'''推奨されません'''[https://wiki.ubuntu.com/Audio/TheAudioGroup]。
  
 
===ユーザースペースユーティリティ===
 
===ユーザースペースユーティリティ===
[[Official Repositories (日本語)|公式リポジトリ]]から:
+
 
* サウンドデバイスをコンソールや端末から設定するための {{ic|alsamixer}} ユーザー空間ツールが含まれている {{Pkg|alsa-utils}} パッケージを[[pacman (日本語)|インストール]]してください。
+
[[Official Repositories (日本語)|公式リポジトリ]]から {{Pkg|alsa-utils}} パッケージを[[pacman (日本語)|インストール]]してください、サウンドデバイスをコンソールや端末から設定するための {{ic|alsamixer}} ユーザー空間ツールが含まれています。また、[[#高品質なリサンプリング|高品質なリサンプリング]]や[[#アップ・ダウンミキシング|アップ・ダウンミキシング]]などの高度な機能を使いたい場合は {{Pkg|alsa-plugins}} パッケージをインストールしてください。
* OSS アプリケーションに dmix (ソフトウェアミキシング) を扱わせたい場合は {{Pkg|alsa-oss}} パッケージをインストールしてください。
+
 
{{Note|1=[[udev]] >= 171 から、デフォルトで、OSS エミュレーションモジュール ({{ic|snd_seq_oss}}, {{ic|snd_pcm_oss}}, {{ic|snd_mixer_oss}}) が自動ではロードされないようになりました。}}
+
OSS アプリケーションに dmix (ソフトウェアミキシング) を扱わせたい場合は {{Pkg|alsa-oss}} パッケージをインストールして {{ic|snd_seq_oss}}, {{ic|snd_pcm_oss}}, {{ic|snd_mixer_oss}} [[Kernel modules (日本語)|カーネルモジュール]]をロードして OSS エミュレーションモジュールを有効にしてください。
*[[#高品質なリサンプリング|高品質なリサンプリング]]や[[#アップ・ダウンミキシング|アップ・ダウンミキシング]]などの高度な機能が欲しい場合は {{Pkg|alsa-plugins}} パッケージをインストールしてください。
+
  
 
==チャンネルのミュートを解除する==
 
==チャンネルのミュートを解除する==
 +
 
現在のバージョンでは ALSA をインストールしたあと全てのチャンネルは'''デフォルトでミュートされています'''。手動でチャンネルをアンミュートする必要があります。
 
現在のバージョンでは ALSA をインストールしたあと全てのチャンネルは'''デフォルトでミュートされています'''。手動でチャンネルをアンミュートする必要があります。
  
Line 52: Line 53:
 
  $ amixer sset Master unmute
 
  $ amixer sset Master unmute
  
チャンネルの下の {{ic|MM}} ラベルはそのチャンネルがミュートになっていることを示しています。{{ic|00}} はミュートが解除されていることを示しています。
+
{{ic|alsamixer}} の、チャンネルの下の {{ic|MM}} ラベルはそのチャンネルがミュートになっていることを示しています。{{ic|00}} はミュートが解除されていることを示しています。
  
 
{{ic|←}} や {{ic|→}} キーを押して {{ic|Master}} や {{ic|PCM}} チャンネルに移動して {{ic|m}} キーを押してミュートを解除してください。{{ic|↑}} キーを押してボリュームを上げて値を {{ic|0}} dB ゲインにしてください。ゲインは左上の {{ic|項目:}} の隣に表示されます。ゲインを大きくしすぎると音にノイズが混じります。
 
{{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 のものです、チャンネル名はハードウェアによって変わっているかもしれません)。ミュートを解除しただけではステレオ音源は自動でアップミキシングされません。これをするには [[#アップ・ダウンミキシング]] を見て下さい。
 +
 +
マイクロフォンを有効にするには、Capture タブに {{ic|F4}} で切り替えてチャンネルを {{ic|Space}} で有効にしてください。
  
 
alsamixer を終了するときは {{ic|Esc}} を押して下さい。
 
alsamixer を終了するときは {{ic|Esc}} を押して下さい。
Line 69: Line 72:
 
  $ speaker-test -c 2
 
  $ speaker-test -c 2
  
-c はスピーカーによって変えて下さい。例えば 7.1 では -c 8 を使います:
+
{{ic|-c}} はスピーカーによって変えて下さい。例えば 7.1 では {{ic|-c 8}} を使います:
  
 
  $ speaker-test -c 8
 
  $ speaker-test -c 8
Line 78: Line 81:
  
 
==設定==
 
==設定==
 +
 
===virtualbox で音が鳴らない===
 
===virtualbox で音が鳴らない===
 +
 
virtualbox で問題が起こっているのなら、次のコマンドが役に立つかもしれません:
 
virtualbox で問題が起こっているのなら、次のコマンドが役に立つかもしれません:
  
Line 85: Line 90:
 
Found hardware: "ICH" "SigmaTel STAC9700,83,84" "AC97a:83847600" "0x8086" "0x0000"
 
Found hardware: "ICH" "SigmaTel STAC9700,83,84" "AC97a:83847600" "0x8086" "0x0000"
 
Hardware is initialized using a generic method
 
Hardware is initialized using a generic method
</nowiki>
+
</nowiki>}}
}}
+
  
 
またオーディオソフトウェアで ALSA 出力を有効にする必要があるかもしれません。
 
またオーディオソフトウェアで ALSA 出力を有効にする必要があるかもしれません。
Line 101: Line 105:
 
</nowiki>}}
 
</nowiki>}}
  
snd_mia と snd_hda_intel がそれぞれのカードで使われるモジュールです。この設定では mia サウンドカードと snd_hda_intel を使うサウンドカード (例: オンボード) を一枚づつ挿していると仮定しています。
+
{{ic|<nowiki>$ cat /proc/asound/modules</nowiki>}} を使ってロードされているサウンドモジュールとその順番を取得してください。{{ic|<nowiki>$ lsmod | grep snd</nowiki>}} を使ってデバイス・モジュールのリストを取得してください。この設定では {{ic|snd_mia}} を使うサウンドカードと {{ic|snd_hda_intel}} を使うサウンドカード (例: オンボード) を一枚づつ挿していると仮定しています。
  
index を -2 にすることで ALSA にカードを優先的に使わせないようにすることも可能です。Linux Mint や Ubuntu などのディストリビューションでは以下の設定を使うことで USB やその他の"一般的でない"ドライバに index 0 を与えないようにしています:
+
index を {{ic|-2}} にすることで ALSA にカードを優先的に使わせないようにすることも可能です。Linux Mint や Ubuntu などのディストリビューションでは以下の設定を使うことで USB やその他の"一般的でない"ドライバに index {{ic|0}} を与えないようにしています:
  
{{hc|/etc/modprobe.d/alsa-base.conf|2=<nowiki>
+
{{hc|/etc/modprobe.d/alsa-base.conf|2=
 
options bt87x index=-2
 
options bt87x index=-2
 
options cx88_alsa index=-2
 
options cx88_alsa index=-2
Line 117: Line 121:
 
options snd-usb-us122l index=-2
 
options snd-usb-us122l index=-2
 
options snd-usb-usx2y index=-2
 
options snd-usb-usx2y index=-2
# Keep snd-pcsp from being loaded as first soundcard
 
 
options snd-pcsp index=-2
 
options snd-pcsp index=-2
# Keep snd-usb-audio from beeing loaded as first soundcard
 
 
options snd-usb-audio index=-2
 
options snd-usb-audio index=-2
</nowiki>}}
+
}}
  
 
変更を反映させるには再起動する必要があります。
 
変更を反映させるには再起動する必要があります。
  
{{Out of date|{{ic|/etc/asound.conf}} does not exist on a default setup, and these instructions may not work.}}
+
==== 環境変数を使ってデフォルト PCM を選択する ====
 +
 
 +
設定ファイルで、以下を追加してください:
 +
  pcm.!default {
 +
    type plug
 +
    slave.pcm {
 +
      @func getenv
 +
      vars [ ALSAPCM ]
 +
      default "hw:Audigy2"
 +
    }
 +
  }
 +
 
 +
default の行はあなたのカードの名前に置き換える必要があります (ここでは {{ic|Audigy2}} を例にしています)。{{ic|aplay -l}} で名前を取得することができ '''surround51''' のように PCM を使うことも可能です。ただしマイクロフォンを使う必要がある場合は full-duplex PCM をデフォルトにすると良いでしょう。
 +
 
 +
これで環境変数 {{ic|ALSAPCM}} を変更することでサウンドカードを選択できるようになります。カードを選択できない全てのプログラムで問題なく使えます。
 +
例えば、'''mix51to20''' という名前の downmix PCM を書いたときは {{ic|mplayer}} を {{ic|ALSAPCM&#61;mix51to20 mplayer example_6_channel.wav}} で使うことができます。
 +
 
 +
==== 他の方法 ====
  
First you will have to find out the card and device id that you want to set as the default by running {{ic|aplay -l}}:
+
まずデフォルトに設定したいカード・デバイスの id {{ic|aplay -l}} で見つける必要があります:
  
{{hc|$ aplay -l|2=<nowiki>
+
{{hc|$ aplay -l|2=
 
**** List of PLAYBACK Hardware Devices ****
 
**** List of PLAYBACK Hardware Devices ****
 
card 0: Intel [HDA Intel], device 0: CONEXANT Analog [CONEXANT Analog]
 
card 0: Intel [HDA Intel], device 0: CONEXANT Analog [CONEXANT Analog]
Line 143: Line 162:
 
   Subdevices: 1/1
 
   Subdevices: 1/1
 
   Subdevice #0: subdevice #0
 
   Subdevice #0: subdevice #0
</nowiki>}}
+
}}
  
For example, the last entry in this list has the card ID 2 and the device ID 0. To set this card as the default, you can either use the system-wide file {{ic|/etc/asound.conf}} or the user-specific file {{ic|~/.asoundrc}}. You may have to create the file if it does not exist. Then insert the following options with the corresponding card and device id.
+
例えば、このリストの最後のエントリはカード ID 2 でデバイス ID 0 です。このカードをデフォルトにするには、システム全体のファイル {{ic|/etc/asound.conf}} かユーザー定義ファイル {{ic|~/.asoundrc}} のどちらかを使ってください。ファイルが存在しないときは作成する必要があります。そして以下のオプションを適切なカード・デバイス id を使って挿入して下さい。
{{hc|~/.asoundrc|2=<nowiki>
+
{{bc|
defaults.pcm.card 2
+
pcm.!default {
defaults.pcm.device 0
+
type hw
defaults.ctl.card 2
+
card 2
</nowiki>}}
+
}
The 'pcm' options affect which card and device will be used for audio playback while the 'ctl' option affects which card is used by control utilities like alsamixer .
+
  
The changes should take effect as soon as you (re-)start an application (mplayer etc.).
+
ctl.!default {
 +
type hw         
 +
card 2
 +
}
 +
}}
 +
'pcm' オプションは音声の再生で使われるカード・デバイスに影響を与え、'ctl' オプションは alsamixer などのコントロールユーティリティで使われるカードに影響を与えます。
 +
 
 +
アプリケーション (mplayer など) を(再)起動すれば変更はすぐ適用されます。また、aplay などのコマンドを使ってテストすることが可能です。
 +
{{bc|
 +
aplay -D default <your_favourite_sound.wav>
 +
}}
 +
 
 +
asound 設定に関するエラーが表示される場合は、[http://www.alsa-project.org/main/index.php/Asoundrc#The_default_plugin upstream documentation] を確認して設定ファイルフォーマットの変更を確認してください。
  
 
===サウンドモジュールがロードされていることを確かめる===
 
===サウンドモジュールがロードされていることを確かめる===
 +
 
udev が正しくサウンドカードを検知しているかチェックするには次のコマンドを実行してください:
 
udev が正しくサウンドカードを検知しているかチェックするには次のコマンドを実行してください:
  
Line 200: Line 231:
  
 
===SPDIF 出力===
 
===SPDIF 出力===
 +
 
(from gralves from the Gentoo forums)
 
(from gralves from the Gentoo forums)
* In GNOME Volume Control, under the Options tab, change the IEC958 to PCM.  This option can be enabled in the preferences.
+
* GNOME ボリュームコントールの、オプションタブから、IEC958 を PCM に変更して下さい。このオプションは設定から有効にすることができます。
 
* GNOME ボリュームコントロールをインストールしていない場合、
 
* GNOME ボリュームコントロールをインストールしていない場合、
 
** {{ic|/var/lib/alsa/asound.state}} を編集してください。このファイルには alsasound のミキサーの設定が保存されています。
 
** {{ic|/var/lib/alsa/asound.state}} を編集してください。このファイルには alsasound のミキサーの設定が保存されています。
Line 219: Line 251:
  
 
===イコライザー===
 
===イコライザー===
 +
 
====AlsaEqual を使う (UI あり)====
 
====AlsaEqual を使う (UI あり)====
 +
 
[[Arch User Repository (日本語)|AUR]] から {{AUR|alsaequal}} をインストールしてください。
 
[[Arch User Repository (日本語)|AUR]] から {{AUR|alsaequal}} をインストールしてください。
  
Line 252: Line 286:
 
  $ alsamixer -D equal
 
  $ alsamixer -D equal
  
Note that configuration file is different for each user (until not specified else) it is saved in {{ic|~/.alsaequal.bin}}.
+
設定ファイルはユーザーごとに違うので注意してください。{{ic|~/.alsaequal.bin}} に保存されます。
so if you want to use AlsaEqual with [[mpd]] or another software running under different user, you can configure it using
+
AlsaEqual を異なるユーザーの [[mpd]] などのソフトウェアで使いたいときは、次を実行することで設定できます:
 
  # su mpd -c 'alsamixer -D equal'
 
  # su mpd -c 'alsamixer -D equal'
or for example, you can make a symlink to your {{ic|.alsaequal.bin}} in his home...
+
もしくは、ユーザーの home にある {{ic|.alsaequal.bin}} のシンボリックリンクを作って下さい。
  
 
=====AlsaEqual の管理=====
 
=====AlsaEqual の管理=====
[http://xyne.archlinux.ca/repos/ Xyneのリポジトリ]か [https://aur.archlinux.org/packages.php?ID=62420 AUR] から [http://xyne.archlinux.ca/projects/alsaequal-mgr/ alsaequal-mgr] をインストールしてください。
 
  
Configure the equalizer as usual with
+
[http://xyne.archlinux.ca/repos/ Xyneのリポジトリ] か [https://aur.archlinux.org/packages.php?ID=62420 AUR] から [http://xyne.archlinux.ca/projects/alsaequal-mgr/ alsaequal-mgr] をインストールしてください。
$alsamixer -D equal
+
  
When you are satisfied with the state, you may give it a name ("foo" in this example) and save it:
+
通常通りイコライザーを設定してください:
  $alsaequal-mgr save foo
+
  $ alsamixer -D equal
  
The state "foo" can then be restored at a later time with
+
状態に満足したら、名前を付けて保存してください (例: "foo"):
  $alsaequal-mgr load foo
+
  $ alsaequal-mgr save foo
  
You can thus create different equalizer states for games, movies, music genres, VoIP apps, etc. and reload them as necessary.
+
イコライザーの状態 "foo" は次のコマンドで戻すことができます:
 +
$ alsaequal-mgr load foo
  
See the [http://xyne.archlinux.ca/projects/alsaequal-mgr/ project page] and the help message for more options.
+
ゲームや映画、音楽のジャンル別、VoIP アプリなどそれぞれに合わせてイコライザーの状態を作成し、必要なときにリロードできます。
 +
 
 +
オプションの詳細は [http://xyne.archlinux.ca/projects/alsaequal-mgr/ project page] を見て下さい。
  
 
====mbeq を使う====
 
====mbeq を使う====
{{Note|This method requires the use of a ladspa plugin which might use quite a bit of CPU when sound plays. In addition, this was made with stereophonic sound (e.g. headphones) in mind.}}
+
 
 +
{{Note|この方法では ladspa プラグインを使う必要があります。サウンドを再生する際に CPU の使用量が多めです。さらに、ステレオサウンドを念頭に置いて作成されています (例: ヘッドフォン)}}
  
 
{{Pkg|alsa-plugins}}, {{Pkg|ladspa}}, {{Pkg|swh-plugins}} パッケージをインストールしてください。
 
{{Pkg|alsa-plugins}}, {{Pkg|ladspa}}, {{Pkg|swh-plugins}} パッケージをインストールしてください。
  
* If you have not already created either an {{ic|~/.asoundrc}} or a {{ic|/etc/asound.conf}} file, then create either one and insert the following:
+
まだ {{ic|~/.asoundrc}} {{ic|/etc/asound.conf}} ファイルを作成していない場合は、どちらかを作成して以下を挿入して下さい:
  
 
{{hc|/etc/asound.conf|2=<nowiki>pcm.eq {
 
{{hc|/etc/asound.conf|2=<nowiki>pcm.eq {
Line 326: Line 362:
 
</nowiki>}}
 
</nowiki>}}
  
* You should be good to go (if not, ask in the forum).
+
* これで動くはずです (動かない時は、フォーラムで質問して下さい)
  
 
==高品質なリサンプリング==
 
==高品質なリサンプリング==
 +
 
ソフトウェアミキシングが有効になっていると、ALSA は全てを同じ周波数 (デフォルトで 48000) にリサンプリングします。dmix はサウンドの品質を落としてしまう低品質リサンプリングアルゴリズムを使っています。
 
ソフトウェアミキシングが有効になっていると、ALSA は全てを同じ周波数 (デフォルトで 48000) にリサンプリングします。dmix はサウンドの品質を落としてしまう低品質リサンプリングアルゴリズムを使っています。
  
Line 337: Line 374:
 
{{hc|/etc/asound.conf|defaults.pcm.rate_converter "samplerate_best"}}
 
{{hc|/etc/asound.conf|defaults.pcm.rate_converter "samplerate_best"}}
  
または
+
または:
  
 
{{hc|~/.asoundrc|defaults.pcm.rate_converter "samplerate_best"}}
 
{{hc|~/.asoundrc|defaults.pcm.rate_converter "samplerate_best"}}
  
'''samplerate_best''' offers the best sound quality, but you need a decent CPU to be able to use it as it requires a lot of CPU cycles for real-time resampling. There are other algorithms available ('''samplerate''', etc.) but they may not provide much of an improvement over the default resampler.
+
'''samplerate_best''' は最高のサウンド品質を提供しますが、リアルタイムサンプリングをするには CPU サイクルが大量に必要になるので使うにはそこそこの CPU が必要です。他のアルゴリズム ('''samplerate''', etc.) も利用できますがデフォルトのリサンプラーに比べておそらくあまり改善はないでしょう。
  
{{Warning|On some systems, enabling samplerate_best may cause an issue where you get no sound from flashplayer.}}
+
{{Warning|環境によっては、samplerate_best を有効にすると flashplayer でサウンドが出力されなくなるという問題が発生します。}}
  
 
==アップ・ダウンミキシング==
 
==アップ・ダウンミキシング==
 +
 
===アップミキシング===
 
===アップミキシング===
音楽などのステレオ音源を 5.1 や 7.1 サウンドシステムをフルに使って再生するには、アップミキシングを使う必要があります。黎明期ではこれをするのはとても難しいものでした。ですが現在では簡単にアップミキシングができるプラグインがあります。{{Pkg|alsa-plugins}} をインストールして下さい。
+
 
 +
音楽などのステレオ音源を 5.1 や 7.1 サウンドシステムをフルに使って再生するには、アップミキシングを使う必要があります。黎明期ではこれをするのはとても難しいものでした。ですが現在では簡単にアップミキシングができるプラグインがあります。{{Pkg|alsa-plugins}} に含まれている {{ic|upmix}} プラグインを使います。
  
 
それから以下を ALSA 設定ファイル ({{ic|/etc/asound.conf}} か {{ic|~/.asoundrc}}) に追加してください:
 
それから以下を ALSA 設定ファイル ({{ic|/etc/asound.conf}} か {{ic|~/.asoundrc}}) に追加してください:
Line 381: Line 420:
  
 
===ダウンミキシング===
 
===ダウンミキシング===
5.1 サウンドの映画をステレオシステムで視聴するときなど、音源をステレオにダウンミキシングしたい場合、同じパッケージに含まれている vdownmix プラグインを使って下さい。
+
5.1 サウンドの映画をステレオシステムで視聴するときなど、音源をステレオにダウンミキシングしたい場合、{{Pkg|alsa-plugins}} に含まれている {{ic|vdownmix}} プラグインを使って下さい。
  
 
設定ファイルに以下を追加して下さい:
 
設定ファイルに以下を追加して下さい:
Line 393: Line 432:
 
     slave.pcm "default"
 
     slave.pcm "default"
 
  }
 
  }
 +
 +
{{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 ここ]にあります。}}
  
 
==ミキシング==
 
==ミキシング==
 +
 
===ソフトウェアミキシング (dmix)===
 
===ソフトウェアミキシング (dmix)===
  
Line 408: Line 450:
 
これでソフトウェアミキシングが有効になり複数のアプリケーションがサウンドカードを使えるようになるはずです。
 
これでソフトウェアミキシングが有効になり複数のアプリケーションがサウンドカードを使えるようになるはずです。
  
For a digital sound output such as S/PDIF, the ALSA package still does not enable dmix by default. Thus, the dmix configuration above can be used to enable dmix for S/PDIF devices.
+
S/PDIF などのデジタル音声出力をするために、ALSA パッケージは依然として dmix をデフォルトで有効にしていません。そのため、上の dmix 設定は S/PDIF デバイスで dmix を有効にするために使うことはできません。
  
 
一般的な問題と解決方法は [[#トラブルシューティング]] を見て下さい。
 
一般的な問題と解決方法は [[#トラブルシューティング]] を見て下さい。
  
 
===ハードウェアミキシング===
 
===ハードウェアミキシング===
 +
 
====サポート====
 
====サポート====
 +
 
ハードウェアでミキシングをサポートしているオーディオチップセットを持っている場合、設定は必要ありません。ほとんど全てのオンボード・オーディオチップセットはハードウェアミキシングをサポートしていないので、ソフトウェアでミキシングする必要があります(上述)。ハードウェアミキシングをサポートしているサウンドカードは少なく、Linux でサポートされているサウンドカードは以下になります:
 
ハードウェアでミキシングをサポートしているオーディオチップセットを持っている場合、設定は必要ありません。ほとんど全てのオンボード・オーディオチップセットはハードウェアミキシングをサポートしていないので、ソフトウェアでミキシングする必要があります(上述)。ハードウェアミキシングをサポートしているサウンドカードは少なく、Linux でサポートされているサウンドカードは以下になります:
  
Line 421: Line 465:
 
* Creative SoundBlaster Audigy 4 (Pro モデル)
 
* Creative SoundBlaster Audigy 4 (Pro モデル)
  
{{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.}}
+
{{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.
{{Note|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.}}
+
* 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.}}
  
 
====フィックス====
 
====フィックス====
64-bit Arch で the Intel Corporation 82801I (ICH9 Family) HD Audio Controller (rev 02) を使っている場合、Enemy Territory でサウンドを鳴らすには以下を実行して下さい:
+
 
 +
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 direct" > /proc/asound/card0/pcm0p/oss
 
  echo "et.x86 0 0 disable" > /proc/asound/card0/pcm0c/oss
 
  echo "et.x86 0 0 disable" > /proc/asound/card0/pcm0c/oss
Line 468: Line 513:
 
以上は [[PulseAudio]] を完全にアンインストールするよりもずっとシンプルな解決方法になります。
 
以上は [[PulseAudio]] を完全にアンインストールするよりもずっとシンプルな解決方法になります。
  
Effectively, here is an example of a working {{ic|/etc/asound.conf}}:
+
下は動作する {{ic|/etc/asound.conf}} のサンプルです:
 
{{bc|<nowiki>pcm.dmixer {
 
{{bc|<nowiki>pcm.dmixer {
 
         type dmix
 
         type dmix
Line 484: Line 529:
  
 
===起動時にランダムで音が出なくなる===
 
===起動時にランダムで音が出なくなる===
 +
 +
{{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
 +
 
ランダムで音が出なくなる場合、あなたのシステムに複数のサウンドカードが存在するのが理由かもしれません。起動時にサウンドカードの順番が変わっている可能性があります。この場合は、[[#デフォルトサウンドカードの設定|デフォルトのサウンドカードを設定]]してみてください。
 
ランダムで音が出なくなる場合、あなたのシステムに複数のサウンドカードが存在するのが理由かもしれません。起動時にサウンドカードの順番が変わっている可能性があります。この場合は、[[#デフォルトサウンドカードの設定|デフォルトのサウンドカードを設定]]してみてください。
  
If you use mpd and the configuration tips above do not work for you, try [http://mpd.wikia.com/wiki/Configuration#ALSA_MPD_software_volume_control reading this] instead.
+
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 など固有のオーディオ設定を使うプログラムには、それぞれ指定のオプションを設定してやってください。
 
XMMS や Mplayer など固有のオーディオ設定を使うプログラムには、それぞれ指定のオプションを設定してやってください。
  
Line 508: Line 569:
  
 
===モデル設定===
 
===モデル設定===
 +
 
Although Alsa detects your soundcard through the BIOS at times Alsa may not be able to recognize your [http://www.kernel.org/doc/Documentation/sound/alsa/HD-Audio-Models.txt model type].  The soundcard chip can be found in {{ic|alsamixer}} (e.g. ALC662) and the model can be set in {{ic|/etc/modprobe.d/modprobe.conf}} or {{ic|/etc/modprobe.d/sound.conf}}.  For example:
 
Although Alsa detects your soundcard through the BIOS at times Alsa may not be able to recognize your [http://www.kernel.org/doc/Documentation/sound/alsa/HD-Audio-Models.txt model type].  The soundcard chip can be found in {{ic|alsamixer}} (e.g. ALC662) and the model can be set in {{ic|/etc/modprobe.d/modprobe.conf}} or {{ic|/etc/modprobe.d/sound.conf}}.  For example:
  
Line 531: Line 593:
  
 
===PC スピーカーが衝突する===
 
===PC スピーカーが衝突する===
 +
 
If you are sure nothing is muted, that your drivers are installed correctly, and that your volume is right, but you still do not hear anything, then try adding the following line to {{ic|/etc/modprobe.d/modprobe.conf}}:
 
If you are sure nothing is muted, that your drivers are installed correctly, and that your volume is right, but you still do not hear anything, then try adding the following line to {{ic|/etc/modprobe.d/modprobe.conf}}:
  
Line 540: Line 603:
  
 
===マイクが入らない===
 
===マイクが入らない===
 +
 
In alsamixer, make sure that all the volume levels are up under recording, and that CAPTURE is toggled active on the microphone (e.g. Mic, Internal Mic) and/or on Capture (in alsamixer, select these items and press space). Try making positive Mic Boost and raising Capture and Digital levels higher; this make make static or distortion, but then you can adjust them back down once you are hearing ''something'' when you record
 
In alsamixer, make sure that all the volume levels are up under recording, and that CAPTURE is toggled active on the microphone (e.g. Mic, Internal Mic) and/or on Capture (in alsamixer, select these items and press space). Try making positive Mic Boost and raising Capture and Digital levels higher; this make make static or distortion, but then you can adjust them back down once you are hearing ''something'' when you record
  
Line 545: Line 609:
  
 
To test the microphone, run these commands (see arecord's man page for further information):
 
To test the microphone, run these commands (see arecord's man page for further information):
  arecord -d 5 test-mic.wav
+
$ arecord -d 5 test-mic.wav
  aplay test-mic.wav
+
$ aplay test-mic.wav
  
 
If all fails, you may want to eliminate hardware failure by testing the microphone with a different device.
 
If all fails, you may want to eliminate hardware failure by testing the microphone with a different device.
Line 555: Line 619:
 
   options snd-hda-intel model=dell-m6-dmic
 
   options snd-hda-intel model=dell-m6-dmic
  
Some programs use try to use OSS as the main input software. Add the following lines to {{ic|/etc/modprobe.d/modprobe.conf}} to prevent OSS modules from being loaded:
+
Some programs use try to use OSS as the main input software. If you have enabled the {{ic|snd_pcm_oss}}, {{ic|snd_mixer_oss}} or {{ic|snd_seq_oss}} [[kernel modules]] previously (they are not loaded by default), try unloading them.
  
{{Note|The OSS modules are no longer autoloaded anyway.}}
+
参照:
 
+
blacklist snd_pcm_oss
+
blacklist snd_mixer_oss
+
blacklist snd_seq_oss
+
 
+
See also:
+
 
* http://www.alsa-project.org/main/index.php/SoundcardTesting
 
* http://www.alsa-project.org/main/index.php/SoundcardTesting
 
* http://alsa.opensrc.org/Record_from_mic
 
* http://alsa.opensrc.org/Record_from_mic
  
 
===デフォルトのマイク・キャプチャデバイスの設定===
 
===デフォルトのマイク・キャプチャデバイスの設定===
 +
 
アプリケーションによってはキャプチャデバイスを変更するオプションがないことがあります (Pidgin, Adobe Flash)。内蔵のサウンドカード以外にマイクロフォンがある場合 (例: USB webcam や microphone) これが問題になるでしょう。デフォルトのキャプチャデバイスを変更するには、デフォルトの playback device を変えて下さい。{{ic|~/.asoundrc}} ファイルを以下のように変更します:
 
アプリケーションによってはキャプチャデバイスを変更するオプションがないことがあります (Pidgin, Adobe Flash)。内蔵のサウンドカード以外にマイクロフォンがある場合 (例: USB webcam や microphone) これが問題になるでしょう。デフォルトのキャプチャデバイスを変更するには、デフォルトの playback device を変えて下さい。{{ic|~/.asoundrc}} ファイルを以下のように変更します:
  
Line 594: Line 653:
  
 
===内蔵マイクが動作しない===
 
===内蔵マイクが動作しない===
 +
 
まず alsamixer で録音のボリュームレベルを全て上げてあるか確認してください。オプションを /etc/sound.conf に追加して、snd-* モジュールをリロードすると内蔵マイクの Capture という新しいボリューム設定が作られることがあります。例えば、snd-hda-inter の場合:
 
まず alsamixer で録音のボリュームレベルを全て上げてあるか確認してください。オプションを /etc/sound.conf に追加して、snd-* モジュールをリロードすると内蔵マイクの Capture という新しいボリューム設定が作られることがあります。例えば、snd-hda-inter の場合:
  
Line 600: Line 660:
 
それからモジュールをリロードして、Capture の録音ボリュームを上げてください。
 
それからモジュールをリロードして、Capture の録音ボリュームを上げてください。
  
{{bc|# rmmod snd-hda-intel && modprobe snd-hda-intel}}
+
# rmmod snd-hda-intel && modprobe snd-hda-intel
  
 
===オンボードの Intel サウンドカードで音が出ない===
 
===オンボードの Intel サウンドカードで音が出ない===
 +
 
ロードされた2つのモジュール、{{ic|snd_intel8x0}} と {{ic|snd_intel8x0m}} が衝突しているのかもしれません。この場合、snd_intel8x0m をブラックリストに入れてください:
 
ロードされた2つのモジュール、{{ic|snd_intel8x0}} と {{ic|snd_intel8x0m}} が衝突しているのかもしれません。この場合、snd_intel8x0m をブラックリストに入れてください:
  
Line 612: Line 673:
  
 
===オンボードの Intel サウンドカードでヘッドホンの音が出ない===
 
===オンボードの Intel サウンドカードでヘッドホンの音が出ない===
 +
 
ラップトップの '''Intel Corporation 82801 I (ICH9 Family) HD Audio Controller''' では、次の行を modprobe か sound.conf に加える必要があるかもしれません:
 
ラップトップの '''Intel Corporation 82801 I (ICH9 Family) HD Audio Controller''' では、次の行を modprobe か sound.conf に加える必要があるかもしれません:
  
  options snd-hda-intel model=$model
+
  options snd-hda-intel model=''model''
  
$model は以下の内どれかになります (in order of possibility to work, but not merit):
+
''model'' は以下の内どれかになります (この順番で動作しやすいはずです):
  
 
* dell-vostro
 
* dell-vostro
Line 624: Line 686:
 
* laptop-hpsense
 
* laptop-hpsense
  
Note: It may be necessary to put this "options" line below (after) any "alias" lines about your card.
+
{{Note|この "options" 行はあなたのカードの "alias" 行の下(後ろ)に置く必要があるかもしれません。}}
  
You can see all the available models in the kernel documentation. For example [http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.35.y.git;a=blob;f=Documentation/sound/alsa/HD-Audio-Models.txt;h=dc25bb84b83b49665a7ed850e7bf5423d50cd3ba;hb=HEAD here], but check that it is the correct version of that document for your kernel version.
+
You can see all the available models in the kernel documentation. For example [http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/Documentation/sound/alsa/HD-Audio-Models.txt here], but check that it is the correct version of that document for your kernel version.
  
 
A list of available models is also available [http://www.mjmwired.net/kernel/Documentation/sound/alsa/HD-Audio-Models.txt here]. To know your chip name type the following command (with * being corrected to match your files). Note that some chips could have been renamed and do not directly match the available ones in the file.
 
A list of available models is also available [http://www.mjmwired.net/kernel/Documentation/sound/alsa/HD-Audio-Models.txt here]. To know your chip name type the following command (with * being corrected to match your files). Note that some chips could have been renamed and do not directly match the available ones in the file.
  
  cat /proc/asound/card*/codec* | grep Codec
+
  $ grep Codec /proc/asound/card*/codec*
  
 
Note that there is a high chance none of the input devices (all internal and external mics) will work if you choose to do this, so it is either your headphones or your mic. Please report to ALSA if you are affected by this bug.
 
Note that there is a high chance none of the input devices (all internal and external mics) will work if you choose to do this, so it is either your headphones or your mic. Please report to ALSA if you are affected by this bug.
Line 639: Line 701:
  
 
===S/PDIF ビデオカードをインストールすると音が出ない===
 
===S/PDIF ビデオカードをインストールすると音が出ない===
 +
 
モジュールとその順番を調べて下さい:
 
モジュールとその順番を調べて下さい:
 
  $ cat /proc/asound/modules
 
  $ cat /proc/asound/modules
Line 649: Line 712:
 
  install snd_hda_intel /bin/false
 
  install snd_hda_intel /bin/false
  
両方のデバイスが同じモジュールを使っている場合、BIOS でひとつを無効化できるかもしれません。
+
両方のデバイスが同じモジュールを使っている場合、snd-hda-intel モジュールの *enable* パラメータを使うことができます。boolean の配列でサウンドカードを有効・無効にすることが可能です。
 +
 
 +
例:
 +
options snd-hda-intel enable=1,0
 +
次のコマンドでカードのリストが取得できます:
 +
cat /proc/asound/cards
  
 
===サウンドの品質が悪い===
 
===サウンドの品質が悪い===
サウンドの質が悪いときは、(alsamixer で) PCM ボリュームの値をゲイン0になるようにしてみてください。
 
  
If snd-usb-audio driver has been loaded, you could try to enable {{ic|softvol}} in '''/etc/asound.conf''' file. Example configuration for the first audio device:
+
サウンドの質が悪いときは、(alsamixer で) PCM ボリュームの値をゲインが 0 になるようにしてみてください。
 +
 
 +
snd-usb-audio ドライバーがロードされている場合、{{ic|/etc/asound.conf}} ファイルで {{ic|softvol}} を有効にすることができます。最初のオーディオデバイスの設定例:
 
   pcm.!default {
 
   pcm.!default {
 
     type plug
 
     type plug
Line 712: Line 781:
  
 
===再生を開始・停止するとポップノイズが鳴る===
 
===再生を開始・停止するとポップノイズが鳴る===
 +
 
モジュールにはサウンドカードが使われていない時、その電源を落とすものがあります (例えば snd_ac97_codec と snd_hda_intel)。サウンドカードの電源が入ったり落とされる時にノイズ(ポップ・クリック・スクラッチ)が出ることがあります。これはボリュームスライダーを動かしたり、ウィンドウを開閉することでも (KDE4) 起きることがあります。これが気になる時は、{{ic|modinfo snd_MY_MODULE}} でパワーオフ機能を調整・無効にするモジュールオプションを使って下さい。
 
モジュールにはサウンドカードが使われていない時、その電源を落とすものがあります (例えば snd_ac97_codec と snd_hda_intel)。サウンドカードの電源が入ったり落とされる時にノイズ(ポップ・クリック・スクラッチ)が出ることがあります。これはボリュームスライダーを動かしたり、ウィンドウを開閉することでも (KDE4) 起きることがあります。これが気になる時は、{{ic|modinfo snd_MY_MODULE}} でパワーオフ機能を調整・無効にするモジュールオプションを使って下さい。
  
Example: to disable the power saving mode and solve cracking sound trough speakers issue, using snd_hda_intel add in {{ic|/etc/modprobe.d/modprobe.conf}}
+
: パワーセーブモードを無効化してスピーカーからポップ音が鳴るのを止めるには、snd_hda_intel を {{ic|/etc/modprobe.d/modprobe.conf}} に追加します:
 
  options snd_hda_intel power_save=0
 
  options snd_hda_intel power_save=0
or
+
もしくは:
 
  options snd_hda_intel power_save=0 power_save_controller=N
 
  options snd_hda_intel power_save=0 power_save_controller=N
  
You can also try it with {{ic|1=modprobe snd_hda_intel power_save=0}} before.
+
また、{{ic|1=modprobe snd_hda_intel power_save=0}} で試すこともできます。
  
 
You may also have to unmute the 'Line' ALSA channel for this to work. Any value will do (other than '0' or something too high).
 
You may also have to unmute the 'Line' ALSA channel for this to work. Any value will do (other than '0' or something too high).
Line 735: Line 805:
 
  # iecset audio on
 
  # iecset audio on
  
このコマンドを {{Ic|rc.local}} に加えることで再起動後も設定を永続させることができます。
+
再起動後にまた出力できなくなるときはこのコマンドを [[systemd (日本語)|systemd]] サービスに入れることができます。
  
 
===HDMI から出力できない===
 
===HDMI から出力できない===
alsamixer でアンミュートしても、マザーボードやサウンドカードの HDMI から出力が出来ない場合、以下を試して下さい。
 
  
Query for Playback Devices:
+
The procedure described below can be used to test HDMI audio. Before proceeding, make sure you have enabled and unmuted the output with {{ic|alsamixer}}.
  
  $ aplay -l
+
{{Note|If you are using an ATI card and linux kernel &gt;&#61;3.0, a necessary kernel module is disabled by default. See [[ATI#HDMI_Audio]].}}
  **** List of PLAYBACK Hardware Devices ****
+
  card 0: NVidia [HDA NVidia], device 0: ALC1200 Analog [ALC1200 Analog]
+
    Subdevices: 1/1
+
    Subdevice #0: subdevice #0
+
  card 0: NVidia [HDA NVidia], device 1: ALC1200 Digital [ALC1200 Digital]
+
    Subdevices: 1/1
+
    Subdevice #0: subdevice #0
+
  card 0: NVidia [HDA NVidia], device 3: NVIDIA HDMI [NVIDIA HDMI]
+
    Subdevices: 0/1
+
    Subdevice #0: subdevice #0
+
  
Now that we have the info for the HDMI device, try a test,  In the example below, 0 is the card number and 3 is the device number.
+
Connect your PC to the Display via HDMI cable and enable the display with a tool such as {{ic|xrandr}} or {{ic|arandr}}. For example:
  
  $ aplay -D plughw:0,3 /usr/share/sounds/alsa/Front_Center.wav
+
$ xrandr # list outputs
 +
$ xrandr --output DVI-D_1 --mode 1024x768 --right-of PANEL # enable output
  
If aplay does not output any errors, but still no sound is heared, "reboot" the receiver, monitor or tv set. Since the HDMI interface executes a handshake on connection, it might have noticed before that there was no audio stream embedded, and disabled audio decoding. In particular, if you are using a standalone window manager (don’t know about Gnome or KDE), you may need to have some sound playing ''while'' plugging in the HDMI cable.
+
Use {{ic|aplay -l}} to get the discover the card and device number. For example:
  
{{Note|If you are using an ATI card and linux 3.0, check your kernel/grub settings, you most likely need to use the ''''radeon.audio'''<nowiki>=</nowiki>'''1'''' boot parameter, or alternatively set up the option in your modprobe configuration files.}}
+
$ 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
 +
 
 +
Send sound to the device. Following the example in the previous step, you would send sound to card 1, device 3:
 +
 
 +
$ aplay -D plughw:1,3 /usr/share/sounds/alsa/Front_Center.wav
 +
 
 +
If aplay does not output any errors, but still no sound is heared, "reboot" the receiver, monitor or tv set. Since the HDMI interface executes a handshake on connection, it might have noticed before that there was no audio stream embedded, and disabled audio decoding. In particular, if you are using a standalone window manager (don’t know about Gnome or KDE), you may need to have some sound playing ''while'' plugging in the HDMI cable.
  
If the test is successful, create or edit your ~/.asoundrc file to set HDMI as the default audio device.
+
If the test is successful, create or edit your {{ic|~/.asoundrc}} file to set HDMI as the default audio device.
  
 
{{hc|~/.asoundrc|
 
{{hc|~/.asoundrc|
Line 780: Line 856:
  
 
===HDMI からマルチチャンネル PCM が出力できない (Intel) ===
 
===HDMI からマルチチャンネル PCM が出力できない (Intel) ===
 +
 
Linux 3.1 現在、インテルのカード (Intel Eaglelake, IbexPeak/Ironlake,SandyBridge/CougarPoint, IvyBridge/PantherPoint) での HDMI からのマルチチャンネル PCM の出力はサポートされていません。Linux 3.2 でサポートが追加される予定です。Linux 3.1 で出力できるようにするには以下のパッチを適用する必要があります:
 
Linux 3.1 現在、インテルのカード (Intel Eaglelake, IbexPeak/Ironlake,SandyBridge/CougarPoint, IvyBridge/PantherPoint) での HDMI からのマルチチャンネル PCM の出力はサポートされていません。Linux 3.2 でサポートが追加される予定です。Linux 3.1 で出力できるようにするには以下のパッチを適用する必要があります:
  
Line 786: Line 863:
  
 
===HP TX2500===
 
===HP TX2500===
 +
 
以下の 2 行を {{ic|/etc/modprobe.d/modprobe.conf}} に加えて下さい:
 
以下の 2 行を {{ic|/etc/modprobe.d/modprobe.conf}} に加えて下さい:
 
  options snd-cmipci mpu_port=0x330 fm_port=0x388
 
  options snd-cmipci mpu_port=0x330 fm_port=0x388
Line 793: Line 871:
  
 
===MP3 を再生すると音が飛ぶ===
 
===MP3 を再生すると音が飛ぶ===
 +
 
2つ以上のスピーカーがついているコンピューターで MP3 ファイルを再生していると音が飛ぶときは、alsamixer を起動して'''使っていない'''スピーカーのチャンネルを無効にしてください。
 
2つ以上のスピーカーがついているコンピューターで MP3 ファイルを再生していると音が飛ぶときは、alsamixer を起動して'''使っていない'''スピーカーのチャンネルを無効にしてください。
  
 
===USB ヘッドセットや外付けの USB サウンドカードを使う===
 
===USB ヘッドセットや外付けの USB サウンドカードを使う===
 +
 
ALSA で USB ヘッドセットを使っているのなら {{AUR|asoundconf}} (現在 [[Arch User Repository (日本語)|AUR]] から利用できます) を使ってヘッドセットへのサウンド出力を優先することができます。以下を実行する前に usb オーディオモジュールが有効になっているのを確かめて下さい ({{ic|modprobe snd-usb-audio}})。
 
ALSA で USB ヘッドセットを使っているのなら {{AUR|asoundconf}} (現在 [[Arch User Repository (日本語)|AUR]] から利用できます) を使ってヘッドセットへのサウンド出力を優先することができます。以下を実行する前に usb オーディオモジュールが有効になっているのを確かめて下さい ({{ic|modprobe snd-usb-audio}})。
  
Line 803: Line 883:
  
 
==== USB デバイスで音割れする ====
 
==== USB デバイスで音割れする ====
 +
 
USB デバイスで音割れが起こるときは、snd-usb-audio を調整してレイテンシを下げることを試すことができます。
 
USB デバイスで音割れが起こるときは、snd-usb-audio を調整してレイテンシを下げることを試すことができます。
  
Line 812: Line 893:
  
 
==== USB サウンドカードのホットプラグ ====
 
==== USB サウンドカードのホットプラグ ====
 +
 
In order to automatically make a USB Sound Card the primary output device, when the card is plugged in, you can use the following udev rules (e.g. add the following two lines to {{ic|/etc/udev/rules.d/00-local.rules}} and reboot).
 
In order to automatically make a USB Sound Card the primary output device, when the card is plugged in, you can use the following udev rules (e.g. add the following two lines to {{ic|/etc/udev/rules.d/00-local.rules}} and reboot).
  
Line 818: Line 900:
  
 
===カーネルをアップデートした後に 'Unknown hardware' エラーが出る===
 
===カーネルをアップデートした後に 'Unknown hardware' エラーが出る===
 +
 
カーネルのアップデート後に ALSA を起動すると以下のメッセージが表示されることがあります:
 
カーネルのアップデート後に ALSA を起動すると以下のメッセージが表示されることがあります:
 
  Unknown hardware "foo" "bar" ...
 
  Unknown hardware "foo" "bar" ...
 
  Hardware is initialized using a guess method
 
  Hardware is initialized using a guess method
  /usr/sbin/alsactl: set_control:nnnn:failed to obtain info for control #mm (No such file or directory)
+
  /usr/bin/alsactl: set_control:nnnn:failed to obtain info for control #mm (No such file or directory)
  
または
+
または:
 
  Found hardware: "HDA-Intel" "VIA VT1705" "HDA:11064397,18490397,00100000" "0x1849" "0x0397"
 
  Found hardware: "HDA-Intel" "VIA VT1705" "HDA:11064397,18490397,00100000" "0x1849" "0x0397"
 
  Hardware is initialized using a generic method
 
  Hardware is initialized using a generic method
  /usr/sbin/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 #1 (No such file or directory)
  /usr/sbin/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 #2 (No such file or directory)
  /usr/sbin/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 #25 (No such file or directory)
  /usr/sbin/alsactl: set_control:1328: failed to obtain info for control #26 (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 ミキサーの設定をもう一度保存してください:
 
(root で) ALSA ミキサーの設定をもう一度保存してください:
Line 837: Line 920:
  
 
===HDA Analyzer===
 
===HDA Analyzer===
 +
 
If the mappings to your audio pins(plugs) do not correspond but ALSA works fine, you could try HDA Analyzer -- a pyGTK2 GUI for HD-audio control can be found [http://www.alsa-project.org/main/index.php/HDA_Analyzer at the ALSA wiki].
 
If the mappings to your audio pins(plugs) do not correspond but ALSA works fine, you could try HDA Analyzer -- a pyGTK2 GUI for HD-audio control can be found [http://www.alsa-project.org/main/index.php/HDA_Analyzer at the ALSA wiki].
 
Try tweaking the Widget Control section of the PIN nodes, to make microphones IN and headphone jacks OUT. Referring to the Config Defaults heading is a good idea.
 
Try tweaking the Widget Control section of the PIN nodes, to make microphones IN and headphone jacks OUT. Referring to the Config Defaults heading is a good idea.
  
NOTE: the script is done by such way that it is incompatible with python3 (which is now shipped with ArchLinux) but tries to use it.
+
{{Note|
 +
* The script is done by such way that it is incompatible with python3 (which is now shipped with ArchLinux) 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 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".
 
+
* NOTE2: the script requires root acces, but running it via su/sudo is bogus. Run it via {{ic|kdesu}} or {{ic|gksu}}.
NOTE2: the script requires root acces, but running it via su/sudo is bogus. Run it via {{ic|kdesu}} or {{ic|gksu}}.
+
}}
  
 
===ALSA と SDL===
 
===ALSA と SDL===
 +
 
SDL では音が鳴らずアプリケーションで ALSA を選べない場合、SDL_AUDIODRIVER 環境変数を alsa に設定してみてください。
 
SDL では音が鳴らずアプリケーションで ALSA を選べない場合、SDL_AUDIODRIVER 環境変数を alsa に設定してみてください。
 
  # export SDL_AUDIODRIVER=alsa
 
  # export SDL_AUDIODRIVER=alsa
Line 876: Line 962:
 
正しくロードされた後、alsamixer の {{ic|Pre-Amp}} セクションを見て下さい。このセクションでボリュームを調節できます。
 
正しくロードされた後、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.}}
 
{{note|Setting a high value for {{ic|Pre-Amp}} can cause sound distortion, so adjust it according to the level that suits you.}}
 +
 +
{{Note|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}} と書かれた行を削除することで直せます。
 
休止状態から復帰したときにポップノイズが聞こえることがあるかもしれません。{{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}} にしてください。
  
 
==設定例==
 
==設定例==
 +
 
[[Advanced Linux Sound Architecture/Example Configurations]] を見て下さい。
 
[[Advanced Linux Sound Architecture/Example Configurations]] を見て下さい。
  

Revision as of 12:56, 21 October 2013

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

Note: もうひとつのサウンド環境については、Open Sound System のページを見て下さい。

Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary wiki Template:Article summary wiki Template:Article summary end

Contents

インストール

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

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

(仮想端末やディスプレイマネージャで)ローカルログインしたユーザーには音楽を再生したりミキサーレベルを変更する権限があります。リモートログインしたときにこれらをするには、ユーザーを audio グループに追加する必要があります。audio グループに含まれているユーザーは直接デバイスにアクセスできるので、アプリケーションから排他的にアウトプットしたり(ソフトウェアミキシングが破壊されます)、高速ユーザー切り替えや multiseat を破壊してしまうおそれがあります。よって、特に必要がないのならばユーザーを audio グループに追加することは推奨されません[1]

ユーザースペースユーティリティ

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

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

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

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

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

$ alsamixer

もしくは、コマンドラインで amixer を使って下さい:

$ amixer sset Master unmute

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

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

5.1 または 7.1 サラウンドを鳴らしたいときは Front, Surround, Center, LFE (サブウーファー), Side などの他のチャンネルも同じようにミュートを解除してください(これらのチャンネル名は Intel HD Audio のものです、チャンネル名はハードウェアによって変わっているかもしれません)。ミュートを解除しただけではステレオ音源は自動でアップミキシングされません。これをするには #アップ・ダウンミキシング を見て下さい。

マイクロフォンを有効にするには、Capture タブに F4 で切り替えてチャンネルを Space で有効にしてください。

alsamixer を終了するときは Esc を押して下さい。

Note:
  • カードによってはアナログサウンドを聞くためにはデジタル出力をミュートする必要があります。Soundblaster Audigy LS では IEC958 チャンネルをミュートしてください。
  • マシンによっては (Thinkpad T61 など)、Speaker チャンネルのミュートを解除する必要があります。
  • マシンによっては (Dell E6400 など)、同じく FrontHeadphone チャンネルのミュートを解除する必要があります。

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

$ speaker-test -c 2

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

$ speaker-test -c 8

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

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

設定

virtualbox で音が鳴らない

virtualbox で問題が起こっているのなら、次のコマンドが役に立つかもしれません:

$ alsactl init

Found hardware: "ICH" "SigmaTel STAC9700,83,84" "AC97a:83847600" "0x8086" "0x0000"
Hardware is initialized using a generic method

またオーディオソフトウェアで ALSA 出力を有効にする必要があるかもしれません。

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

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

'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

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

Note: 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
Note: IRC やフォーラムで助けを求める時は、上記のコマンドの出力を貼って下さい。

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

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

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

SPDIF 出力

(from gralves from the Gentoo forums)

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

ログイン時に SPDIF 出力を自動的に有効にする方法は他にもあります (SoundBlaster Audigy で確認):

  • 以下の行を /etc/rc.local に追加してください:
 # Use COAX-digital output
 amixer set 'IEC958 Optical' 100 unmute
 amixer set 'Audigy Analog/Digital Output Jack' on

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

 $ amixer scontrols

イコライザー

AlsaEqual を使う (UI あり)

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

Note: システムが 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 の管理

XyneのリポジトリAUR から alsaequal-mgr をインストールしてください。

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

$ alsamixer -D equal

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

$ alsaequal-mgr save foo

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

$ alsaequal-mgr load foo

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

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

mbeq を使う

Note: この方法では 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 が必要です。他のアルゴリズム (samplerate, etc.) も利用できますがデフォルトのリサンプラーに比べておそらくあまり改善はないでしょう。

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

ミキシング

ソフトウェアミキシング (dmix)

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

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

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

これでソフトウェアミキシングが有効になり複数のアプリケーションがサウンドカードを使えるようになるはずです。

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

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

ハードウェアミキシング

サポート

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

  • Creative SoundBlaster Live! (5.1 モデル)
  • Creative SoundBlaster Audigy (複数)
  • Creative SoundBlaster Audidy 2 (ZS モデル)
  • Creative SoundBlaster Audigy 4 (Pro モデル)
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.
  • 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.

フィックス

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

トラブルシューティング

動的周波数スケーリングを使っていると音が飛ぶ

Some combinations of ALSA drivers and chipsets may cause audio from all sources to skip when used in combination with a dynamic frequency scaling governor such as ondemand or conservative. Currently, the solution is to switch back to the performance governor.

Refer to the CPU Frequency Scaling for more information.

一度に複数のユーザーが使えない問題

dmixer を使えるのは一度にたったひとりのユーザーだけということに気づいたかもしれませんね。これはほとんどの人にとっては問題ありませんが、mpd を違うユーザーで動作させている人にとっては問題になります。mpd が再生中の時、一般ユーザーは dmixer を使ってサウンドを再生できなくなってしまいます。同じユーザーで mpd を実行する以外にも解決方法は存在します。ipc_key_add_uid 0pcm.dmixer に追加するとロックが無効になります。以下は asound.conf のスニペットです、他の部分への変更はありません。

...
pcm.dmixer {
 type dmix
 ipc_key 1024
 ipc_key_add_uid 0
 ipc_perm 0660
slave {
...

同時再生問題

同時再生問題が起こっていて、(GNOME によって) PulseAudio がインストールされているのなら、それは PulseAudio のデフォルトの設定がサウンドカードを"ハイジャック"するようにセットされているためです。ALSA のユーザーの中には PulseAudio は使いたくなく、全て ALSA で設定したいという人もいるかもしれません。/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 を完全にアンインストールするよりもずっとシンプルな解決方法になります。

下は動作する /etc/asound.conf のサンプルです:

pcm.dmixer {
        type dmix
        ipc_key 1024
        ipc_key_add_uid 0
        ipc_perm 0660
}
pcm.dsp {
        type plug
        slave.pcm "dmix"
}
Note: This /etc/asound.conf file was intended for and used successfully with a global MPD configuration. See this section on multiple users

起動時にランダムで音が出なくなる

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 を使っていて上記の設定が動かないときは、こちらを読んで下さい

Timidity

Timidity が原因で音が出なくなることがあります。次を実行してみて下さい:

$ systemctl status timidity

これが失敗した場合は、# killall -9 timidity を実行してください。これで問題が解決したら、起動時に timidity デーモンが実行されるのを無効にしたほうが良いでしょう。

特定のプログラム

XMMS や Mplayer など固有のオーディオ設定を使うプログラムには、それぞれ指定のオプションを設定してやってください。

mplayer では、~/.mplayer/config (もしくはユーザー共通の /etc/mplayer/mplayer.conf) を開き以下の行を追加してください:

ao=alsa

XMMS/Beep Media Player では、オプションからサウンドドライバを Alsa に設定してください。

XMMS では:

  • XMMS を起動
    • Options -> preferences
    • Alsa プラグインを選択

ALSA 出力をサポートしていないアプリケーションでは、alsa-oss パッケージの aoss を使うことができます。aoss を使うには、プログラムを起動するときに aoss を前に付けて下さい、例:

aoss realplay

pcm.!default{ ... } doesnt work for me anymore. but this does:

 pcm.default pcm.dmixer

モデル設定

Although Alsa detects your soundcard through the BIOS at times Alsa may not be able to recognize your model type. The soundcard chip can be found in alsamixer (e.g. ALC662) and the model can be set in /etc/modprobe.d/modprobe.conf or /etc/modprobe.d/sound.conf. For example:

options snd-hda-intel model=MODEL

There are other model settings too. For most cases Alsa defaults will do. If you want to look at more specific settings for your soundcard take a look at the Alsa Soundcard List find your model, then Details, then look at the "Setting up modprobe..." section. Enter these values in /etc/modprobe.d/modprobe.conf. For example, for an Intel AC97 audio:

# 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 スピーカーが衝突する

If you are sure nothing is muted, that your drivers are installed correctly, and that your volume is right, but you still do not hear anything, then try adding the following line to /etc/modprobe.d/modprobe.conf:

options snd-NAME-OF-MODULE ac97_quirk=0

The above fix has been observed to work with via82xx

options snd-NAME-OF-MODULE ac97_quirk=1

The above fix has been reported to work with snd_intel8x0

マイクが入らない

In alsamixer, make sure that all the volume levels are up under recording, and that CAPTURE is toggled active on the microphone (e.g. Mic, Internal Mic) and/or on Capture (in alsamixer, select these items and press space). Try making positive Mic Boost and raising Capture and Digital levels higher; this make make static or distortion, but then you can adjust them back down once you are hearing something when you record

As the pulseaudio wrapper is shown as "default" in alsamixer, you may have to press F6 to select your actual soundcard first. You may also need to enable and increase the volume of Line-in in the Playback section.

To test the microphone, run these commands (see arecord's man page for further information):

$ arecord -d 5 test-mic.wav
$ aplay test-mic.wav

If all fails, you may want to eliminate hardware failure by testing the microphone with a different device.

For at least some computers, muting a microphone (MM) simply means its input does not go immediately to the speakers. It still receives input.

Many Dell laptops need "-dmic" to be appended to the model name in /etc/modprobe.d/modprobe.conf:

 options snd-hda-intel model=dell-m6-dmic

Some programs use try to use OSS as the main input software. If you have enabled the snd_pcm_oss, snd_mixer_oss or snd_seq_oss kernel modules previously (they are not loaded by default), try unloading them.

参照:

デフォルトのマイク・キャプチャデバイスの設定

アプリケーションによってはキャプチャデバイスを変更するオプションがないことがあります (Pidgin, Adobe Flash)。内蔵のサウンドカード以外にマイクロフォンがある場合 (例: USB webcam や microphone) これが問題になるでしょう。デフォルトのキャプチャデバイスを変更するには、デフォルトの playback device を変えて下さい。~/.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 のキャプチャデバイスのカード名に置き換えてください。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つのモジュール、snd_intel8x0snd_intel8x0m が衝突しているのかもしれません。この場合、snd_intel8x0m をブラックリストに入れてください:

/etc/modprobe.d/modprobe.conf
blacklist snd_intel8x0m

alsamixeramixer で "External Amplifier" をミュートにすることが問題を解決することもあります。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" 行の下(後ろ)に置く必要があるかもしれません。

You can see all the available models in the kernel documentation. For example here, but check that it is the correct version of that document for your kernel version.

A list of available models is also available here. To know your chip name type the following command (with * being corrected to match your files). Note that some chips could have been renamed and do not directly match the available ones in the file.

$ grep Codec /proc/asound/card*/codec*

Note that there is a high chance none of the input devices (all internal and external mics) will work if you choose to do this, so it is either your headphones or your mic. Please report to ALSA if you are affected by this bug.

And also, if you have problems getting beeps to work (pcspkr):

options snd-hda-intel model=$model enable=1 index=0

S/PDIF ビデオカードをインストールすると音が出ない

モジュールとその順番を調べて下さい:

$ cat /proc/asound/modules
0 snd_hda_intel
1 snd_ca0106

/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 ドライバーがロードされている場合、/etc/asound.conf ファイルで 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) 起きることがあります。これが気になる時は、modinfo snd_MY_MODULE でパワーオフ機能を調整・無効にするモジュールオプションを使って下さい。

例: パワーセーブモードを無効化してスピーカーからポップ音が鳴るのを止めるには、snd_hda_intel を /etc/modprobe.d/modprobe.conf に追加します:

options snd_hda_intel power_save=0

もしくは:

options snd_hda_intel power_save=0 power_save_controller=N

また、modprobe snd_hda_intel power_save=0 で試すこともできます。

You may also have to unmute the 'Line' ALSA channel for this to work. Any value will do (other than '0' or something too high).

Example: on an onboard VIA VT1708S (using the snd_hda_intel module) these cracks occured even though 'power_save' was set to 0. Unmuting the 'Line' channel and setting a value of '1' solved the issue.

Source: https://www.kernel.org/doc/Documentation/sound/alsa/powersave.txt

If you use a laptop, pm-utils will change power_save back to 1 when you go onto battery power even if you disable power saving in /etc/modprobe.d. Disable this for pm-utils by disabling the script that makes the change (see Disabling a hook for more information):

# touch /etc/pm/power.d/intel-audio-powersave

S/PDIF から出力できない

モジュールをロードして alsamixer でミュートを解除してもマザーボード・サウンドカードのオプティカル・コアキシャルのデジタル出力ができない場合、root で次を実行してください:

# iecset audio on

再起動後にまた出力できなくなるときはこのコマンドを systemd サービスに入れることができます。

HDMI から出力できない

The procedure described below can be used to test HDMI audio. Before proceeding, make sure you have enabled and unmuted the output with alsamixer.

Note: If you are using an ATI card and linux kernel >=3.0, a necessary kernel module is disabled by default. See ATI#HDMI_Audio.

Connect your PC to the Display via HDMI cable and enable the display with a tool such as xrandr or arandr. For example:

$ xrandr # list outputs
$ xrandr --output DVI-D_1 --mode 1024x768 --right-of PANEL # enable output

Use aplay -l to get the discover the card and device number. For example:

$ 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

Send sound to the device. Following the example in the previous step, you would send sound to card 1, device 3:

$ aplay -D plughw:1,3 /usr/share/sounds/alsa/Front_Center.wav

If aplay does not output any errors, but still no sound is heared, "reboot" the receiver, monitor or tv set. Since the HDMI interface executes a handshake on connection, it might have noticed before that there was no audio stream embedded, and disabled audio decoding. In particular, if you are using a standalone window manager (don’t know about Gnome or KDE), you may need to have some sound playing while plugging in the HDMI cable.

If the test is successful, create or edit your ~/.asoundrc file to set HDMI as the default audio device.

~/.asoundrc
pcm.!default {
  type hw
  card 0
  device 3
}

Or you above config does not work try:

~/.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 で出力できるようにするには以下のパッチを適用する必要があります:

HP TX2500

以下の 2 行を /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 ヘッドセットを使っているのなら asoundconfAUR (現在 AUR から利用できます) を使ってヘッドセットへのサウンド出力を優先することができます。以下を実行する前に usb オーディオモジュールが有効になっているのを確かめて下さい (modprobe snd-usb-audio)。

# asoundconf is-active
# asoundconf list
# asoundconf set-default-card <chosen soundcard>

USB デバイスで音割れする

USB デバイスで音割れが起こるときは、snd-usb-audio を調整してレイテンシを下げることを試すことができます。

以下を /etc/modprobe.d/modprobe.conf に加えて下さい:

options snd-usb-audio nrpacks=1

ソース: http://alsa.opensrc.org/Usb-audio#Tuning_USB_devices_for_minimal_latencies

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

In order to automatically make a USB Sound Card the primary output device, when the card is plugged in, you can use the following udev rules (e.g. add the following two lines to /etc/udev/rules.d/00-local.rules and reboot).

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'"

カーネルをアップデートした後に 'Unknown hardware' エラーが出る

カーネルのアップデート後に ALSA を起動すると以下のメッセージが表示されることがあります:

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)

または:

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

alsamixer で ALSA の設定をもう一度する必要があるかもしれません。

HDA Analyzer

If the mappings to your audio pins(plugs) do not correspond but ALSA works fine, you could try HDA Analyzer -- a pyGTK2 GUI for HD-audio control can be found at the ALSA wiki. Try tweaking the Widget Control section of the PIN nodes, to make microphones IN and headphone jacks OUT. Referring to the Config Defaults heading is a good idea.

Note:
  • The script is done by such way that it is incompatible with python3 (which is now shipped with ArchLinux) 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".

  • NOTE2: the script requires root acces, but running it via su/sudo is bogus. Run it via kdesu or gksu.

ALSA と SDL

SDL では音が鳴らずアプリケーションで ALSA を選べない場合、SDL_AUDIODRIVER 環境変数を alsa に設定してみてください。

# export SDL_AUDIODRIVER=alsa

音が小さい

スピーカーやヘッドフォンの音量を最大にしても音が小さいならば、softvol プラグインを試すことができます。以下を /etc/asound.conf に加えて下さい:

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
}
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 plug with hw in the above configuration.

正しくロードされた後、alsamixer の Pre-Amp セクションを見て下さい。このセクションでボリュームを調節できます。

Note: Setting a high value for Pre-Amp can cause sound distortion, so adjust it according to the level that suits you.
Note: Some audio codecs may need to have settings adjusted in the 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.

サスペンドから復帰した後にポップノイズが鳴る

休止状態から復帰したときにポップノイズが聞こえることがあるかもしれません。/etc/pm/sleep.d/90alsa を編集して aplay -d 1 /dev/zero と書かれた行を削除することで直せます。

再起動後にミュートになる

再起動後、alsamixer のサウンド設定は復活しません。おそらく次のコマンドで設定を戻せます: sudo alsactl restore。alsamixer の Auto-Mute トグルの状態を確認してください: EnabledDisabled にしてください。

設定例

Advanced Linux Sound Architecture/Example Configurations を見て下さい。

参照