設定をはじめる前に、あなたが持っているカードのモデル、 そのカードが使用しているチップ、そして PCI, ISA どちらのカードなのかを確認する必要があります。 FreeBSD は PCI および ISA の両方のカードに幅広く対応しています。 使用しているカードが対応しているかどうかは、 ハードウェアノート の対応オーディオデバイスの一覧を調べてください。 このハードウェアノートには、 カードに対してどのドライバを利用すればよいかについても言及されています。
サウンドデバイスを使うために、 適切なデバイスドライバを読み込まなければいけません。 これには二つの方法のどちらかでできるでしょう。 もっとも簡単な方法は kldload(8) を使ってサウンドカードのカーネルモジュールを単に読み込むことです。 次のコマンドで実現できます。
#
kldload snd_emu10k1
または /boot/loader.conf
ファイルにこのような適切な行を加えて実現することもできます。
以上は Creative SoundBlaster® Live! サウンドカードの例です。
他に利用可能な読み込み可能なサウンドモジュールは
/boot/defaults/loader.conf
に記載されています。
どのドライバを利用すればいいか確かでなければ、
snd_driver
モジュールを読み込んでみてください。
#
kldload snd_driver
snd_driver
モジュールは、
一般に使用されるカードに対応したドライバをまとめて一度に読み込むメタドライバです。
このドライバを使用すれば、速やかに正しいドライバを探し出すことができるでしょう。
/boot/loader.conf
ファイルを使用して、
すべてのサウンドドライバを読み込むこともできます。
snd_driver
メタドライバの読み込み後に、
どのドライバがサウンドカードに選択されたのかを知りたいのなら
cat /dev/sndstat
コマンドで
/dev/sndstat
ファイルを調べてください。
二つ目の方法は、 サウンドカードのドライバをカーネルへ静的に組み込むことです。 以下の節では、この方法でハードウェアを対応させる方法を説明します。 カーネル再構築の詳細は 9章FreeBSD カーネルのコンフィグレーション を参照してください。
はじめに、オーディオフレームワークドライバ sound(4) をカーネルに追加します。 カーネルコンフィグレーションファイルに以下の行を追加してください。
次に、サウンドカードに対応したドライバを追加します。 それには、どのドライバがカードに対応しているかを知る必要があります。 使用しているカードに対する正しいドライバを決定するために、 ハードウェアノート の対応オーディオデバイスの一覧を調べてください。 たとえば、Creative SoundBlaster® Live! サウンドカードは snd_emu10k1(4) ドライバが対応しています。 このカードを使用するためには、 カーネルコンフィグレーションファイルに以下の行を追加してください。
ドライバのマニュアルページを読んで、
追加すべき構文を調べてください。
対応しているすべてのサウンドドライバに関するカーネルコンフィグレーションの具体的な構文は、
/usr/src/sys/conf/NOTES
にもあります。
すべての PnP 非対応の ISA カードに当てはまるように、
PnP 非対応の ISA サウンドカードでは、
カーネルにカードが使用する資源
(IRQ, I/O ポートなど) を明示的に指定する必要があるかもしれません。
この場合は、/boot/device.hints
ファイルを使用してください。
システムの起動時に、loader(8)
はこのファイルを読み、設定情報をカーネルに渡します。
たとえば、PnP 非対応の古い Creative SoundBlaster® 16 (ISA 接続)
には snd_sb16
とともに snd_sbc(4) ドライバを使用します。
このカードを使用する場合には、
カーネルコンフィグレーションファイルに以下の行を追加すると同時に、
/boot/device.hints
ファイルに以下のエントリを追加してください。
この例では、
I/O ポートに 0x220
を、
IRQ に 5
を使用します。
/boot/device.hints
ファイルに用いるべき構文は、
sound(4) ドライバのマニュアルページ、および、
各ドライバのマニュアルページに記載されています。
初期設定は以上の通りです。 カードを使用する状況によっては、 IRQ やその他の設定を変更する必要があるかもしれません。 このカードについての詳細は、 snd_sbc(4) マニュアルページをご覧ください。
カーネルを変更して再起動するか、必要となるモジュールを読み込むと、 システムのメッセージバッファ (dmesg(8)) にサウンドカードが認識されたことが示されます。 たとえば、次のようなメッセージが出力されます。
サウンドカードの状態は、/dev/sndstat
ファイルを使用して確認することができます。
#
cat /dev/sndstat
FreeBSD Audio Driver (newpcm)
Installed devices:
pcm0: <Intel ICH3 (82801CA)> at io 0xd800, 0xdc80 irq 5 bufsz 16384
kld snd_ich (1p/2r/0v channels duplex default)この出力はシステムによって異なるでしょう。
pcm
デバイスがなければ、
今までの手順を振り返ってみてください。
カーネルコンフィグレーションファイルをもう一度見直して、
正しいデバイスドライバを選択しているかどうか確認してください。
トラブルシューティングは 「よくある問題」
を参照してください。
すべてうまくいけば、サウンドカードが機能するでしょう。 CD-ROM または DVD-ROM ドライブのオーディオ出力端子がサウンドカードと適切に接続されていれば、 cdcontrol(1) を使ってドライブ内の CD を再生できます。
%
cdcontrol -f /dev/acd0 play 1
audio/workman
のように、よりよいインタフェースを提供するさまざまなアプリケーションがあります。
MP3 オーディオファイルを聴くために
audio/mpg123
のようなアプリケーションをインストールしようと思うかもしれません。
手っ取り早くカードをテストするには、
/dev/dsp
デバイスにデータを送ってみてください。
たとえば、以下のようにします。
%
cat filename
> /dev/dsp
ここで
はどんなファイルでも構いません。
このコマンドラインを実行すると雑音が発生するはずです。
これにより、サウンドカードが実際に動作していることを確認できます。filename
デバイスノード /dev/dsp*
は、
必要とされる時に自動的に作成されます。
デバイスノードが使用されていない場合には存在せず、
ls(1) の出力に表示されません。
サウンドカードのミキサレベルは mixer(8) コマンドで変更することができます。 詳細は mixer(8) マニュアルページをご覧ください。
エラー | 解決方法 |
---|---|
sb_dspwr(XX) timed out | 使用する I/O ポートが適切に設定されていません。 |
bad irq XX | 使用する IRQ が正しく設定されていません。 サウンドカードの IRQ と設定した IRQ が同じかどうか確かめてください。 |
xxx: gus pcm not attached, out of memory | デバイスを使用するのに十分なメモリを確保できません。 |
xxx: can't open /dev/dsp! |
|
最近のグラフィックカードの中には、
HDMI や類似のインタフェースを利用するため、
グラフィックカード自身がサウンドカードを持つものがあります。
このようなサウンドデバイスには、
時として本当のサウンドカードより若い番号が付けられることがあり、
そのような場合には、
サウンドカードをデフォルトプレイバックデバイスとして利用できません。
このことが原因かどうかを確認するには、dmesg を実行して
pcm
を探してください。
以下のような出力を得るかもしれません。
ここで、グラフィックカード (NVidia
)
には、サウンドカード (Realtek ALC889
)
より若い番号が付けられています。
サウンドカードをデフォルトのプレイバックデバイスとして利用するには、
以下のように hw.snd.default_unit
をプレイバックで使用するユニット番号に変更してください。
#
sysctl hw.snd.default_unit=n
ここで、n
は使用するサウンドデバイスの番号です。
この例では 4
です。
/etc/sysctl.conf
に以下の行を入れると、
常に設定の変更が反映されるようになります。
4
特定のアプリケーションとのサウンドデバイスの共用に対応していない時、 esound または artsd のように 同時に再生することのできる音源を複数実装していることは、 多くの場合望ましいことです。
FreeBSD では、 仮想サウンドチャネル を使ってこれを実現でき、sysctl(8) で設定できます。 仮想チャネルはカーネル内でサウンドを合成することにより、 サウンドカードの再生を多重化することができます。
仮想チャネルの数を決めるのに三つの sysctl 変数を設定できます。
root
ユーザで以下のようにします。
#
sysctl dev.pcm.0.play.vchans=4
#
sysctl dev.pcm.0.rec.vchans=4
#
sysctl hw.snd.maxautovchans=4
上記の例では四つの仮想チャネルを設定しています。
これは通常利用する上で十分実用的な数です。
dev.pcm.0.play.vchans=4
と
dev.pcm.0.rec.vchans=4
は、
pcm0
が再生や録音のために持っている仮想チャネルの数で、
一度デバイスが取り付けられると設定できます。
hw.snd.maxautovchans
は、
kldload(8)
を用いて認識された新しいデバイスの仮想チャネル数です。
pcm
モジュールはハードウェアドライバとは独立して読み込むことができるので、
後でどんなにデバイスを認識しても
hw.snd.maxautovchans
は仮想チャネルを格納できます。
より詳細な情報については pcm(4)
のマニュアルページを参照してください。
デバイスを使用しているときに 仮想チャンネルの数を変更することはできません。 まず、ミュージックプレーヤやサウンドデーモンといった デバイスを使用しているすべてのプログラムを終了してください。
/dev/dsp0
を必要とするプログラムが意識しなくても、
適切な pcm
デバイスが自動的に設定されます。
本文書、および他の文書は ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ からダウンロードできます。
FreeBSD に関する質問がある場合には、
ドキュメント を読んだ上で
<questions@FreeBSD.org> まで (英語で) 連絡してください。
本文書に関する質問については、
<doc@FreeBSD.org> まで電子メールを (英語で) 送ってください。