Linux でサウンド機能を使うためには、次の手順が必要となります。
以下のセクションでは、これらの手順を詳しく説明していきます。
マニュアルに従ってインストールするか、業者に依頼して インストールしてもらってください。
古いサウンドカードにはたいてい IRQ や DMA チャネルなどを設定するスイッチや ジャンパがありますから、設定をメモしておきましょう。よくわからない場合には、 工場出荷時の設定をそのまま使うのがいいでしょう。できる限り他のデバイス (イーサネットカード、SCSI ホストアダプタ、シリアル・パラレルポートなど)との 競合を避けるようにしてください。
Linux をインストールした直後であれば、おそらくコンパイル済みのカーネルを 使っていることでしょう。普通、そういうカーネルではサウンド機能を 使うことはできません。 自分で必要なドライバを組み込んでカーネルをリコンパイルしましょう。 カーネルのリコンパイルは、カーネルをバージョンアップしたり、 カーネルのサイズを最小化してメモリを節約するためにも必要となります。
カーネルを再構築する方法の詳細については、 Linux Kernel HOWTOを参照して下さい。 ここでは、サウンドカードに特有の点についてだけ説明します。
今までに一度もカーネルにサウンド機能を組み込んだことがない人は、 カーネルサウンドドライバに付属するすべての Readme ファイルを 読んで、カードに特有の情報をチェックするのがいいでしょう。 以下のような文書ファイルがカーネルサウンドドライバのディレクトリ(普通は /usr/src/linux/drivers/soundにインストールされています)にあります。
CHANGELOG - 各リリースの変更点の説明 COPYING - コピーと著作権に関する制約 Readme - 最新でもっとも重要なニュース Readme.aedsp16 - Audio Excel DSP 16 サウンドカードに関する情報 Readme.cards - 特定のカードの設定に関する注釈 Readme.linux - 独立にリリースされたサウンドドライバに関する注釈 Readme.modules - ドライバをローダブルカーネルモジュールとして作成する方法 Readme.v30 - バージョン 3.0 サウンドドライバの新しい機能 experimental.txt - 実験的な機能に関する注釈
カーネルの構築には、特に普通と変わった点はありません。 現状ではカーネル設定を行なうには3種類のやり方があります。 「make xconfig」とすると、X11 上で GUI を使って設定ができます。 「make menuconfig」とすると、テキストディスプレイ上で メニューベースの設定ができます。 ここでは「make config」で起動される伝統的なコマンドラインでの設定方法を 使用すると仮定しますが、やりかたはどの方法でもだいたい同じです。
サウンドドライバをカーネルローダブルモジュールとして作成することも 可能ですが、最初はドライバをカーネルに組み込んで作成することをおすすめします。 動作を確認してから、カーネルモジュールの方法を試してみるのがいいでしょう。
make config
を実行した時、サウンド機能を有効にするためには
次の質問に「y」と答えて下さい。
Sound card support (CONFIG_SOUND) [M/n/y/?]
カーネル設定の質問に答え終ると、サウンド設定プログラムがコンパイル、 実行され、選択項目が質問されます。これらの質問には十分気をつけて 答えて下さい。誤って入力すると、それ以降の項目が質問されない場合が あるからです。例えば、最初の質問 (PAS16) には、本当に PAS16 を使っているの でなければ「y」と答えてはいけません。本当に必要なカード以外をイネーブル してはいけません。そんなことをしても余計なメモリを使うだけだからです。 また、ドライバによっては(MPU401 など)、SCSI コントローラーと競合して ブートできなくなってしまうおそれもあります。
設定時の選択項目について簡単な説明を以下に示します。
それぞれの質問について、「y」(yes)または「n」(no)で答えて下さい。
"
疑問符「?」を入力すると、その設定項目に関する短い説明が表示されます。
また、すべての質問がなされるとは限らないと言うことにも注意して下さい。 設定プログラムは、以前の選択によっていくつかの質問をしないことがありますし、 いくつかの選択を自動的にしてしまうこともあります。
以前にサウンド機能を持ったカーネルをコンパイルしたことがある場合、 以前の設定がセーブされていることがあります。以前の設定をそのまま使う場合、 「y」と答えて下さい。別の設定を試す場合、あるいは新しいカーネルに更新した 場合には、「n」と答えて設定を続行する必要があります。
Pro Audio Spectrum 16 や Pro Adudio Studio 16、あるいは Logitech SoundMan 16 を 使っている場合にだけ「y」と答えて下さい。その他の Media Vision や Logitech 製の カードは PAS16 互換ではないので、「y」と答えてはいけません。
Creatvie Labs 製の純正 SoundBlaster カードや、100% ハードウェア互換のクローン
(例えば Thunderboard や SM Games)を使っている場合には「y」と答えて下さい。
サポートリストに載っているカードを使っている場合には、
この質問に答える前に Readme.cards
ファイルのそのカードに特有の指示に
従って下さい。リストに載っていないカードで SoundBlaster 互換だと書いてある
カードの場合は、「y」と答えてみてもいいでしょう。
GUS あるいは GUS MAX を使っている場合には「y」と答えて下さい。GUS を使って いない場合には「n」と答えて下さい。このドライバはメモリを大量に消費するから です。
この質問には気をつけて下さい。MPU401 インターフェースはほとんどのカードで
サポートされていますが、ドライバの中にはそれ自身で MPU401 をサポートしている
ものもあります。このようなカードで MPU401 オプションをイネーブルすると、
競合を起こすことがあります。また実際には MPU401 を持っていないシステムで
MPU401 をイネーブルした場合にも問題が生じることがあります。使っているカードが
サポートリストに載っている場合には、Readme.cards
ファイルのそのカードに
特有の指示に従って下さい。純正 MPU401 MIDI インターフェースカードを持っている
場合には、「y」と答えても安全です。
この質問には、常に「n」と答えて大丈夫です。6850 UART インターフェースは 滅多に使われていませんから。
Orchid SW32 や Cardinal DSP16 あるいはその他の PSS チップセット(AD1848 codec + ADSP-2115 DSP チップ + Echo ESC614 ASIC チップ)ベースのカードを 使っている場合だけ「y」と答えて下さい。
GUS に 16 bit サンプリングドーターカードをインストールしている場合には 「y」と答えて下さい。GUS MAX を使っている場合には「n」と答えて下さい。 このオプションをイネーブルすると、GUS MAX のサポートがディセーブルされます。
GUS MAX を使っているときだけ「y」と答えて下さい。
この質問に「y」と答える前に、よーく考えて下さい。
Microsoft 製の純正 Windows Sound System カードや Aztech SG 16 Pro (または
NX16 Pro)カードを使っているなら、「y」と答えても安全です。また、前に示した
リストに載っていないカードの場合には、「y」と答えてみてもいいでしょう。
VoxWare でサポートされているカードについては、Readme.cards
のそのカード
特有の説明を参照して下さい。いくつかのドライバはそれ自身で MSS をサポート
していて、このオプションをイネーブルすると競合を起こすことがあります。
Ensoniq SoundScape チップセットベースのサウンドカードを使っている場合には 「y」と答えて下さい。この種のカードは Ensoniq や Spea、それに Reveal で 作られています (Reveal はそれ以外のカードも作っています)。
AudioTriX Pro を使っていれば「y」と答えて下さい。
Mozart (OAK OTI-601) や MAD16 (OPTi 82C928 または 82C929) オーディオ インターフェースチップを使ったカードの場合には「y」と答えて下さい。 これらのチップは無名のカードによく使われています。 また MAD16 チップは Turtle Beach (Tropez) や Reveal (いくつかのモデル)、 Diamond (最近のもの) などの有名メーカー製のカードにも使われています。
Crystal CS4232 チップセットベースのカードを使っている場合には「y」と 答えて下さい。
これらのカードを使っている場合には「y」と答えて下さい。
SoundBlaster Pro または SoundBlaster 16 を使っている場合にはこのオプションを イネーブルしてください。また、SoundBlaster Pro のクローンカードを使っている 場合にもイネーブルして下さい。「n」と答えるとメモリをいくらか節約できますが、 「y」と答えるのが安全です。
SoundBlaster 16 や AWE32 を使っている場合にはイネーブルして下さい。
Audio Excel DSP16 カードを使っている場合にはイネーブルして下さい。
詳しくはReadme.aedsp16
ファイルを読んで下さい。
その後、設定プログラムは高レベルサービスについての質問をしてきます。 これらの質問には「y」と答えることをお勧めします。必要ないと確信できる オプションにだけ「n」と答えて下さい。
「n」と答えると /dev/dsp
と /dev/audio
、つまり
A/D と D/A の変換デバイスがディセーブルされてしまいます。「y」と答えて下さい。
「n」と答えると、/dev/midixx
デバイスがディセーブルされ、
/dev/sequencer
と /dev/music
を使った MIDI ポートへの
アクセスが禁止されます。このオプションは
MPU401 や General MIDI 互換デバイスのすべてに影響を与えます。
この質問には「y」と答えて下さい。
「n」と答えると/dev/sequencer
と/dev/music
が
ディセーブルされます。
Sound Galaxy NX Pro サウンドカードを使っていて、その拡張ミキサー機能を 使いたい場合に「y」と答えて下さい。
MV Jazz16 サウンドカードを使っている場合は「y」と答えて下さい。
Logitech SoundMan Games サウンドカードを使っている場合は「y」と答えて 下さい。
これらの質問の後、設定プログラムはカードに特有な設定情報を聞いてきます。
通常は I/O アドレスや IRQ、DMA 番号が質問されます。
カードによっては、初期化時に使用されるファイルが要求されます。
このファイルは DSP チップやマイクロプロセッサを持ったカードにプログラム
(マイクロコード)をダウンロードして初期化するために使われます。
このファイルは設定プログラムによって .h ファイルに書き込まれ、コンパイル
によってドライバに組み込まれる場合もあります。
これに関してもReadme.cards
ファイルのカード特有の情報を読んで下さい。
最後に、次のようなメッセージが表示されます。
The sound driver is now configured.
Save copy of this configuration to /etc/soundconf [Y/n/?]
通常は「y」と答えて、後でカーネルをコンパイルする時に同じサウンドドライバの 設定を使えるようにします。
古いサウンドドライバをアップグレードする場合には、
/usr/include/sys/soundcard.h
と
/usr/include/sys/ultrasound.h
が/usr/include/linux
ディレクトリの対応するファイルへのシンボリックリンクになっているか、
あるいはそれぞれ
#include <linux/soundcard.h>
と
#include <linux/ultrasound.h>
という行を
含んでいることを確認して下さい。
あとはカーネルをコンパイルして、新しいカーネルをインストールしてください。
初めてカーネルサウンドドライバを設定した時には、サウンドデバイスファイルを
作成する必要があります。
/usr/src/linux/drivers/sound
ディレクトリの
Readme.linux
の最後についている短いシェルスクリプトを
切り出して、root
の権限で実行するのが簡単な方法です。
訳注 Readme.linux から必要な部分をエディタなどを使って切りだし、適当な
名前でセーブします(ここでは make-sound.sh
とします)。ルートになって、
sh < make-sound.sh
とするか、chmod +x make-sound.sh
と
そのファイルを実行可能にしてから make-sound.sh
を実行すれば、
サウンド用のデバイスファイルが作成できます。
デバイスファイルがすでに存在している場合には、正しいものかどうか確認した 方がいいでしょう。間違っていたり疑わしい場合には、上記のスクリプトを実行 すれば、正しいものと置き換えてくれます。
昔の Linux パッケージのインストールスクリプトには、間違ったサウンドデバイス
ファイルを作成してしまうものもありました。デバイスファイルを作成するには
/dev/MAKEDEV
を使うこともできますが、最新のサウンドデバイスの
サポート状況を反映するためには、上記の方法を使った方がいいでしょう。
スクリプトを走らせた後で、サウンドデバイスファイルは次のようになっている はずです。
lrwxrwxrwx 1 root 11 Aug 22 00:01 audio -> /dev/audio0 crw-rw-rw- 1 root 14, 4 Aug 22 00:01 audio0 crw-rw-rw- 1 root 14, 20 Aug 22 00:01 audio1 lrwxrwxrwx 1 root 9 Aug 22 00:01 dsp -> /dev/dsp0 crw-rw-rw- 1 root 14, 3 Aug 22 00:01 dsp0 crw-rw-rw- 1 root 14, 19 Aug 22 00:01 dsp1 crw-rw-rw- 1 root 14, 2 Aug 22 00:01 midi00 crw-rw-rw- 1 root 14, 18 Aug 22 00:01 midi01 crw-rw-rw- 1 root 14, 34 Aug 22 00:01 midi02 crw-rw-rw- 1 root 14, 50 Aug 22 00:01 midi03 crw-rw-rw- 1 root 14, 0 Aug 22 00:01 mixer crw-rw-rw- 1 root 14, 16 Aug 22 00:01 mixer1 crw-rw-rw- 1 root 14, 8 Aug 22 00:01 music crw-rw-rw- 1 root 14, 17 Aug 22 00:01 patmgr0 crw-rw-rw- 1 root 14, 33 Aug 22 00:01 patmgr1 crw-rw-rw- 1 root 14, 1 Aug 22 00:01 sequencer lrwxrwxrwx 1 root 10 Aug 22 00:01 sequencer2 -> /dev/music crw-rw-rw- 1 root 14, 6 Aug 22 00:01 sndstat
デバイス名と、4番目の欄に記載されているメジャーデバイス番号、 5番目の欄に記載されているマイナーデバイス番号には特に注意して下さい。
PC スピーカーサウンドドライバを使っている場合、パッケージに付属する 文書を読んで、どういうデバイスファイルを作成すればいいか決めて下さい。
普通はカーネルを構築する際に使った設定をそのまま使って大丈夫なはずですが、
例えば LILO からカーネルコマンドラインに引数を渡してブート時にサウンド
ドライバを設定することもできます。これらの引数は Readme.linux
に定義されていますが、使う必要はほとんどないはずです。これらは
主に複数タイプのサウンドカードをサポートするカーネルを作成する目的で、
Linux ブートディスクの開発者用に用意されているものです。
この時点で、新しいカーネルでブートしてサウンドドライバをテストする 準備が整っているはずです。 いつもやっているやり方で、新しいカーネルをインストールし、 リブートして下さい(もちろん、問題が起こった時のために、古いカーネルも ブートできるように残しておいてください)。
ブート中に、次のようなメッセージが表示されることを確認して下さい (スクロールが速過ぎて読めない場合には、「dmesg」コマンドを使って後から 確認することもできます)。
訳注: Shift+PageUp で、画面を逆スクロールすることもできます。
snd2 <SoundBlaster Pro 3.2> at 0x220 irq 5 drq 1
snd1 <Yamaha OPL-3 FM> at 0x388 irq 0 drq 0
このメッセージは、サウンドカードのタイプとジャンパ設定(もしあれば)と 一致しているはずです。
ブート中、ドライバからエラーメッセージや警告メッセージが表示されることも あります。サウンドドライバの設定後初めてブートする時には、このような メッセージが出ないかどうか、注意して見ていて下さい。
次に、/dev/sndstat
デバイスファイルをチェックしてください。
これはサウンドドライバのステータスデバイスファイルで、読み出すと
サウンドカードドライバが適切に初期化されたかどうかが分かります。
次に出力例を示します。
% cat /dev/sndstat
Sound Driver:3.5.2-960330 (Tue 4 16:31:10 EDT 1996 root,
Linux fizzbin 2.0.0 #1 Mon Jun 3 16:59:37 EDT 1996 i386)
Kernel: Linux fizzbin 2.0.0 #1 Tue Jun 4 16:57:55 EDT 1996 i386
Config options: a80002
Installed drivers:
Type 1: OPL-2/OPL-3 FM
Type 2: SoundBlaster
Type 6: SoundBlaster 16bit
Type 7: SB MPU
Card config:
SoundBlaster at 0x220 irq 5 drq 1,5
OPL-2/OPL-3 FM at 0x388 irq 0 drq 0
Audio devices:
0: SoundBlaster Pro 3.2
Synth devices:
0: Yamaha OPL-3
Midi devices:
0: SoundBlaster
Timers:
0: System clock
Mixers:
0: SoundBlaster
以上で、簡単なサウンドファイルを再生する準備は整いました。 サンプルサウンドファイルをサウンドデバイスに送って、 サウンド出力機能の基本的なチェックをしてみましょう。
% cat endoftheworld >/dev/dsp
% cat crash.au >/dev/audio
(上のコマンド中の「>」を抜かさないように気をつけて下さい)。
サンプルサウンドファイルは、 ftp://tsx-11.mit.edu/pub/linux/packages/sound/snd-data-0.1.tar.Z から入手可能です。
次に、サウンド録音を試してみましょう。 カードがサウンド入力機能を持っている場合、次のようにして簡易なテストを することができます。
# マイクロフォンから4秒録音
EDT% dd bs=8k count=4 </dev/audio >sample.au
4+0 records in
4+0 records out
# 再生
% cat sample.au >/dev/audio
もちろん、このテストをするためにはサウンドカードにマイクロフォンをつなぎ、 それに向かって喋る必要があります。また、マイクロフォンを入力デバイスとして 設定し、録音レベルを設定するために、ミキサープログラムが必要になるかも しれません。
これらのテストがうまくいったら、サウンド D/A と A/D のハードウェアと ソフトウェアは正しく動作していると思っていいでしょう。 問題が生じた場合には、次のセクションを参照して下さい。
ここに書いてある通りにしたのにうまく行かなかった場合には、 以下の項目をチェックしてみてください。 以下の項目は、簡単なものから複雑なものへと順番に並べてあります。 一つの項目が失敗したら、その問題を解決してから次に進んで下さい。
サウンド機能を組み込んだカーネルを使っているかどうかは、
カーネルのタイムスタンプをチェックすることによって確認できます。
このためには uname
コマンドを使うこともできますし、
% uname -a
Linux fizzbin 2.0.0 #1 Tue Jun 4 16:57:55 EDT 1996 i386
あるいは /proc/version
ファイルを見てみることもできます。
% cat /proc/version
Linux version 2.0.0 (root@fizzbin) (gcc version 2.7.0) #1 Tue Jun 4 16:57:55 EDT 1996
タイムスタンプがカーネルをコンパイルした時間と異なっている場合には、
古いカーネルを使っていることになります。本当にリブートしましたか?
LILO を使っている場合には、再インストールしましたか(通常
/etc/lilo/install
を走らせます)?
フロッピーからブートしている場合、新しいブートフロッピーを作成して
それを使ってブートしましたか?
どんなドライバが組み込まれているかは、/proc/devices
を見ることに
よって分かります。
% cat /proc/devices
Character devices:
1 mem
4 tty
5 cua
6 lp
14 sound
15 Joystick
Block devices:
2 fd
3 hd
25 sbpcd
ここで探すのは、「sound」と名前がついているキャラクタデバイス14です。 サウンドドライバがここに表示されない場合、カーネルの設定か構築に 何か間違いがあったことになります。 もう一度カーネルのインストールをやり直して下さい。
ブートしたカーネルでサウンドカードが認識されていることを確認して下さい。 ブート時にメッセージが表示されているはずです。メッセージが画面から スクロールして見えなくなってしまった場合、
% dmesg
あるいは
% tail /var/adm/messages
とすればもう一度メッセージを見ることができます。
サウンドカードが認識されていない場合、何か不具合があることになります。 まず、本当にカードがインストールされているかどうか確認して下さい。 サウンドカードが DOS で動作する場合、ハードウェアは動作していると思って 間違いないでしょうから、カーネルの設定に問題がありそうです。 サウンドカードのタイプやパラメタの設定が間違っていたか、 そのサウンドカードが Linux のカーネルサウンドカードドライバでサポート されていないかのどちらかでしょう。
「互換」サウンドカードの中には、DOS ドライバで初期化する必要があるものも
あります。
DOS でブートして、ベンダから供給されるサウンドカードドライバをロードして
ください。それから Control-Alt-Delete
で Linux をソフトブートし、
カードの I/O アドレスや DMA、それに IRQ の設定が Linux と DOS とで
一致していることを確認して下さい。サウンドドライバソースパッケージの
Readme.cards
ファイルを読んで、使用しているタイプのカードの設定に
ついてヒントを探して下さい。
サウンドカードがこの文書に載っていない場合、Linux ドライバでサポートされて いない可能性があります。この文書の最後にある参考文献のリストをチェックすれば、 何か情報が得られるかもしれません。
/dev/audio
デバイスから dd
コマンドを使ってデータを読み出して
見て下さい。エラーなく読み出せれば OK です。
訳注: 次のようにします。
% dd if=/dev/audio
しばらく待ってエラーにならなかったら、Ctrl-C で止めます。
これがうまくいかなかった場合には、デバイスファイルに原因があると考えられます。
/dev
ディレクトリにデバイスファイルが存在して、メジャーデバイス番号と
マイナーデバイス番号が正しいこと、デバイスファイルのパーミッションが
読み出しと書き込みを許可していることを確認して下さい。
可能性としては低いのですが、ハードウェアの問題かもしれません。 DOS でテストしてみてください。
それでもまだ問題が解決しない場合には、最後に以下を試してみて下さい。
comp.os.linux
やその他の usenet ニュースグループの
一つに質問を投稿する。Esc-x doctor
とタイプする。訳注: もちろん最後は冗談です。