Sound Blaster AWE 32/64 HOWTO by Marcus Brinkmann v1.2, 11 January 1998 川岸 良治 作成日:1998年 6月15日 このドキュメントは、Takashi Iwai (岩井 隆)さん作成の AWE Sound Driver Extension を使って Linux システムに Creative Labs の Sound Blaster 32 (SB AWE 32, SB AWE 64) カードのインストールと設定をする方法について解 説します。また、SB AWE シリーズ用の特別なツールとプレーヤに関すること もカバーしています。引用するシステムは Debian GNU/Linux システムですが 他のほとんどの Linux ディストリビューションでも同じ様に動く筈です。 ______________________________________________________________________ 目次 1. はじめに 1.1 謝辞 1.2 レビジョン履歴 1.3 このドキュメントの新バージョン 1.4 フィードバック 1.5 配布のポリシー 2. 始める前に 2.1 はじめに 2.2 SB AWE カードに関する一般的な注意点 2.3 Plug and Play カードに関する一般的な注意点 2.4 ローダブル・カーネルモジュールに関する一般的な注意点 2.5 カーネル・サウンド・ドライバに関する一般的な注意点 3. SB AWE サウンドサポートのインストール方法 3.1 あなたがするべきこと 3.2 ことはじめ 3.3 カーネルのコンパイル 3.4 リブート 4. サウンドドライバのテスト 4.1 /proc/devices, /dev/sndstat 4.2 Raw オーディオデバイスの出力 4.3 OPL-2/OPL-3 シンセの出力 4.4 ウェーブテーブルシンセの出力 4.5 ミキシング 4.6 Raw オーディオデバイスのサンプリング入力 4.7 MIDI ポート 5. AWE ドライバソフトウェア 5.1 sfxload 5.2 drvmidi 6. 付録 6.1 追加情報 6.2 ソース 6.3 isapnp.conf のサンプル ______________________________________________________________________ 1. はじめに これは Sound Blaster AWE HOWTO です。Sound Blaster 32 またはその上位( 互換) 機種の中からウェーブテーブルシンセサイザを含む殆んどの詳細な情報 について書いてあります。このドキュメントは、SB 32 以上の全ての SB カー ドをカバーしています。 Sound Blaster シリーズは DOS と Windows の世界ではよく知られていますし 多くの Linux ユーザも、このサウンドカードを Linux 上で使いたいと思って います。残念ながら Creative Labs は Windows と DOS 用のドライバしか提 供していないので、Linux で SB カードをインストールして使うには、ちょっ とした知識が必要になります。このドキュメントは、Linux 環境下で SB AWE シリーズの機能を使うにはどうすればよいかについての解説を試みます。 1.1. 謝辞 このドキュメントには、AWE Driver FAQ と ISA PnP FAQ から得た情報が含ま れています。このドキュメントの作者とアドレスは ``ソース'' の項をご覧下 さい。SB AWE サポートが可能であることを作者に感謝します。 多くのきわめて重要な作業は Hannu Savolainen によって行われました。彼は Linux カーネルに付いてく るサウンドドライバを開発しました。有難う! 私は Nicola Bernardelli が AWE64 関連ソ フトをテストしたことに感謝します。彼がいなければ、検出できないエラーが 沢山残っていたことでしょう。 SGML Tools パッケージ に感謝します。この HOWTO はいくつかのフォーマットで利用できますが、全 て共通のソースファイルから生成されます。 1.2. レビジョン履歴 Version 1.0 最初のバージョン Version 1.1 スペルの間違いを修正(Curt さんに感謝!)。 isapnp のバージョンの条 件に関することを追加。 sunsite と多くのミラーサイトから利用でき るようになりました。 Version 1.2 フランス語バージョンができました!小さな修正と多くのスペルの間違 いを修正 (ispell に感謝) 1.3. このドキュメントの新バージョン 最新バージョンは、私のホームページ即ち Sound Blaster AWE HOWTO にあります。 このドキュメントの新バージョンは、たとえば などの多くの anonymous (匿名) FTP サイトにあります。 これと他の Linux HOWTO のハイパーテキストのバージョンは、 を含め、多くの WWW サイトにあります。ほ とんどの Linux CD-ROM ディストリビューションには HOWTO が入っていて多 くの場合 /usr/doc ディレクトリにあります。 Arnaud Launay さん zoro@lsol.tm.fr 有難う。このドキュメントのフランス 語バージョンができました!最新バージョンは、 http または anonymous ftp から得られます。 このドキュメントを他の言語に翻訳したら私に教えて下さい。そうすれば私は それをここで紹介します。 1.4. フィードバック 私はこの HOWTO を役立つものにするためにあなたがた読者を頼りにします。 何らかの提案、修正、コメントがあればそれを私 Marcus.Brinkmann@ruhr- uni-bochum.de あてにメールで下さい。そうすれば私は次のバージョンでそれ を取り込むようにします。 私は他の有名な Linux ディストリビューション、例えば Red Hat とか SuSE Linux のスタートアップ処理(ブートスクリプト、その他)に関する情報を特に 歓迎します。 このドキュメントを CD-ROM または書籍や出版物のかたちで発行する場合は、 一部を見本として頂ければ幸いです。私あてに郵送して下さい。また、Linux のフリードキュメントのサポートを援助するために Linux Documentation Project (LDP) に寄付することも考慮して下さい。より詳しいことは Linux HOWTO のまとめ役の Tim Bynum linux-howto@sunsite.unc.edu に連絡して下 さい。 1.5. 配布のポリシー Copyright 1997 Marcus Brinkmann. この HOWTO はフリードキュメントです。Free Software Foundation によって 発行されている GNU General Public License のライセンスのバージョン2ま たは(あなたの選択によって)それ以後のバージョンの何れかの条件に従って、 あなたはこれを再配布したり、且つ/または 変更することができます。 このドキュメントは、役に立つことを期待して配布しています。しかし、いか なる保証もありません。商品性や特定用途への適合性についての暗黙の保証す らありません。詳しくは、GNU の General Public License をご覧下さい。 GNU General Public License のコピーを入手したい方は、Free Software Foundation Free Software Foundation Ave, Cambridge, MA 02139, USA にメールを出して下さい。 2. 始める前に 2.1. はじめに このドキュメントは、あなたが Linux システムに Creative Labs 社の Sound Blaster AWE 32 または, Sound Blaster AWE 64 のインストールと設定をする ときの助けとなることを目的としています。ここでは Intel i586 プラット フォームでの Debian GNU/Linux システムを例に 挙げて説明しますが、Linux サウンドドライバによってサポートされるどんな プラットフォームでも、またほとんどの Linux ディストリビューションでも 同じ様に動く筈です。 (違いがある場合は、それが出てきた際に言及します) Linux Sound HOWTO (``追加情報'' の項、参照)を注意深く読みましょう 。私 は、私のドキュメントは Sound HOWTO の補足であると考えています。また、 私がここに書かなかったより多くの情報を発見できるでしょう。 2.2. SB AWE カードに関する一般的な注意点 SB AWE 32 サウンドカードは、raw オーディオデバイス、標準の OPL-2/OPL-3 シンセ、MPU-401 MIDI ポート、32ボイス EMU 8000 ウェーブテーブルシンセ の機能があります。(これらの説明や他の用語の説明は Linux Sound HOWTO を ご覧下さい) このドキュメントの一つの目標は、これらの全ての機能が正常に 動作するようになるためのお手伝いをすることです。 【訳注】raw デバイスというのは、入力を特に加工しないでたれ流すデバイ ス、という意味です。 【訳注終り】 SB AWE 64 は、SB AWE 32 の機能に加えて Creative Labs 自慢の WaveGuide シンセを持っています。Linux ユーザにとっての問題は、追加された 32ボイ スはソフトウェアで作成され raw オーディオデバイスを経由して出力される という点です。Creative Labs は Linuxドライバの市場を考慮していないので Wave Guide シンセのサウンドドライバは、Windows 3.1 と Windows 95 にの み対応しています。 これは、Linux ユーザの視点からは SB AWE 32 と SB AWE 64 は殆んど同じ物 であるということを意味します。ここからは、単に SB AWE と呼び違いがある 場合にのみその相違点に触れることにします。 2.3. Plug and Play カードに関する一般的な注意点 近頃の Intel プラットフォーム用カードの殆んどは ISA PnP カードです。 PnP は``Plug and Play''の略語です。これはカードが OS によって設定され る必要があり、且つブート時に初期化ルーチンを通して行なわれる必要がある ということを意味します。一般的に、これを行うためには最低でも3つの方法 があります。 1. PnP BIOS (BIOS が PnP カードを認識しそれらを設定できるという意味)。 PnP BIOS があるので SB AWE PnP の全ての機能を使うことができると考え ているなら、残念でした。BIOS が PnP カードのサポートをするように要 求しても、それは単にサウンドカードによって使われるポートとアドレス のサブセットを初期化するだけなのです。例えば、たぶん raw ウェーブ データを演奏することは出来るでしょうが、MIDI 音楽の演奏はできないで しょう。このため PnP BIOS は選択肢には入りません。 2. PnP カードをサポートする OS。現在の安定バージョンの Linux カーネル (2.0.x)は、そのような OS ではありませんから、私達は PnP デバイスを サポートするカーネルが今後リリースされるのを待たなければなりませ ん。 3. ブート時に PnP カードの初期化処理を開始する特別なプログラム。これが 私達が行う方法です。 Linux で PnP カードを初期化するために使われる最も一般的なソフトウェア は、``isapnptools'' です。 (``ソース'' の項と ``ことはじめ'' の項をご 覧下さい) 2.4. ローダブル・カーネルモジュールに関する一般的な注意点 デバイスドライバには、カーネルの中に組み込む代わりにモジュールとしてビ ルドすることができるものがあります。モジュールに関する詳しいことは Kernel HOWTO と Module HOWTO をご覧ください。(``追加情報'' の項を参照) あなたが PnP カードをお持ちなら、サウンドサポートはローダブルカーネル モジュールとしてインストールする必要があります。これは、カーネルの中に サウンドドライバを組み込むことはできないが、実行時にカーネルの中にロー ドできるモジュールとしてビルドする必要があるということです。この理由 は、ISA PnP カードが設定可能になる前にカーネルをインストールし、ISA PnP カードが設定された後でサウンドドライバをロードする必要があるからで す。 サウンドカーネルモジュールは手動で $ insmod sound または、 $ modprobe -a sound とするか、 あるいは適切な Linux システムブートスクリプトによってロードできます。 (Debian では、/etc/modules に sound を含む1行を追加すれば十分です) 別 のアプローチは、必要に応じてカーネルモジュールをインストールしたり削除 するデーモンである kerneld を立ち上げることです。 kerneld は AWE サウンドドライバモジュールには最適の解決策ではないかも しれないということに注意して下さい。というのは、カーネルの中にモジュー ルをロードするには時間がかかるということです。特にウェーブテーブル・シ ンセを使い、且つモジュールを挿入した後で毎回大きな Sound Font バンクを ロードししなければならない場合です。 kerneld は、デフォルトでは未使用 のモジュールを1分後に削除しますからサウンドモジュールを手で、あるいは ブート時に挿入するというのは、たぶん好ましいことです。サウンドモジュー ルを手で、あるいはブート時に挿入した場合、モジュールが遊んでいるときで も kerneld は、これを削除しないという点に注意して下さい。ところで、手 でサウンドモジュールを挿入することと、kerneld を使用することは同時に出 来ます。この2つの方法は衝突しません。kerneld は、もうサウンドモジュー ルには何も影響を及ぼしません。 これは特に、モジュールを削除したり再インストールした後でミキサーの設定 が割り当てられる場合に便利です。この問題の対策は ``ミキシング'' の項で 述べます。(そこではサウンドモジュールを挿入した時にミキサーを自動的に 起動する方法を解説します) しかし、kerneld がモジュールをロード し、Sound Font バンクをロードし、ミキサーを起動するには時間がかかり、 これとその他の理由によってブート時にサウンドモジュールをインストールし kerneld に削除させないということは好ましいことなのです。 2.5. カーネル・サウンド・ドライバに関する一般的な注意点 サウンドサポートは、カーネルの中に組み込んで、あるいはローダブルモ ジュールとしてインストールすることができます。PnP カードをお持ちならサ ウンドサポートをモジュールとしてインストールする必要があります。理由 は、モジュールがインストールされる前に PnP カードを isapnptools で初期 化しておく必要があるからです。 お気づきのようにカーネルを再構築する必要があります。これに関して以下に いくつかのヒントを示します。それではカーネルソースの中のサウンドサポー トについてお話しましょう。カーネルは OSS (USS) のフリーバージョン(Lite バージョン) のサウンドドライバ付で配布されます。このドライバの現在の バージョン(3.5.4) は、完全には SB AWE をサポートせず、SB 16 の機能の一 部をサポートしています。従って、raw オーディオデバイスと、もし使うので あれば OPL-2/OPL-3 シンセも動作しますが、ウェーブテーブルシンセによる MIDI の演奏はできません。 ウェーブテーブルデバイスを使いたいのであれば、 4Front Technologies から商用のサウンドドライバを買うこともで きるし(だれかそれが可能かどうか私に教えてください) あるいは岩井 隆さん の AWE 32 Sound Driver Extension でカーネルにパッチをあてます。前者は このドキュメントの範囲外で、私はあなたが後者を望んでいるものと見做しま す。 AWE32 Sound Driver Extension (``ソース'' の項をご覧下さい)は GNU コ ピーライトライセンスのもとで発表されていて、SB AWE カードの EMU 8000 ウェーブシンセを使うための多くのツールと共に公開されています。 awedrv ソフトウェアは、既に新しいカーネルソースツリー(2.1.x のどれか以 降のカーネル) には入っていますが、それらは古いのでたぶんあなたはカーネ ルツリー内のソースをアップグレードしたいと思うでしょう。 3. SB AWE サウンドサポートのインストール方法 3.1. あなたがするべきこと 以下は、Linux の下で SB AWE をサポートするための条件です: o きちんと動作する Linux システム(例えば Debian GNU/Linux ディストリ ビューション) o SB AWE 32 または互換カード(例えば SB32, SB32 PnP, SB AWE64, ...) o サウンドドライバ OSS/Free を含む Linux カーネルのソース(通常は入っ ています。/usr/src/linux/drivers/sound/Readme を確認してください) o AWE 32 Sound Driver Extension PnP カードの場合は下記のものも必要です。 o isapnptools ソフトウェアパッケージ これらのプログラムをどこから入手するかは ``ソース'' の項をご覧下さい。 Debian GNU/Linux システムの場合、これは kernel-source-, awe- drv そしてたぶん isapnptools のパッケージが必要であることを意味しま す。不可欠ではないけど他の awe-* パッケージも欲しくなるでしょう。カー ネルのコンパイルとインストールを簡単に行うために、 kernel-package を使 うことを強く推奨します。 3.2. ことはじめ あなたはカードをマザーボードに正しく取り付け、たぶんすでに DOS あるい は Windows 環境下でテスト済みであるものと見做します。 PnP カードの場合、次のステップはブート時にカードを初期化することです。 isapnptools をソースパッケージのドキュメントに従って、コンパイルしイン ストールします。 (または Debian バイナリパッケージを使うだけです) 【訳注】 Slackware 3.4.0 の場合、ディスクセット diska5 の中に pnp とい うパッケージ名で isapnptools-1.10 というバイナリパッケージが入っていま す。なお、最新バージョンは1998年5月末現在、1.15 です。 【訳注終り】 そして root 権限で次のようにします。 # pnpdump > /etc/isapnp.conf これはうまくいけば適切な PnP カード用の設定ファイルを作ってくれます が、全てのデバイスはコメントアウトされます。このファイルを注意深く編集 して可能であれば DOS あるいは Windows 環境下でのカードの DMA チャネ ル、I/O ベースアドレス、割り込み(IRQ)の設定値と比べてみて下さ い。(Win95 の場合デバイスマネージャのリソースの所でカードが使っている リソースをご覧下さい) 問題がある場合は、isapnptools のドキュメントを読 んで下さい。 注: isapnptools は SB AWE ウェーブテーブルデバイスの3つの I/O ポート の検出に失敗することがよくあります。この HOWTO の最後に示した例と比べ ながらあなたの isapnp.conf ファイルの WaveTable の entry を注意深く見 て下さい。必要に応じて I/O ベースアドレスを調整して下さい。 注: isapnp-faq によると、たまに isapnp 論理デバイスの番号をプログラム するのに失敗することがあります。以下のようなエラーメッセージが出た場 合: Error occurred executing request 'LD 2' on or around line... isapnp.conf の先頭に (VERIFYLD N) を追加してみて下さい。これを動かすに は少なくともバージョン 1.10 以上を使う必要があります。バージョン 1.10 以上を使うことができない場合、論理デバイスの番号を直接 POKE することも できます。このアプローチに関するより詳しい情報は isapnp-faq をご覧下さ い。これがうまくいかないときは私(そして isapnp の人達も興味があると私 は思います)に連絡して下さい。 注: pnpdump の古いバージョンでは、最後の行 (WAITFORKEY)が書き落とされ ている場合がありますから要注意です。 PnP カードが一つ(サウンドカード)だけの isapnp.conf のサンプルが、この ドキュメントの最後にあります。 (``isapnp.conf のサンプル''の項をご覧下 さい) Debian システムの場合、これ以上の調整は必要ありません。以下のスクリプ トコードの断片をブートスクリプトの中にインクルードしておけば /etc/init.d/boot の中の isapnp がブート時にスタートします。 ______________________________________________________________________ # Configure the isa plug and play boards before loading # modules. Need to do this before loading modules to get # a chance of configuring and starting PnP boards before # the drivers mess all this up. # if [ -x /etc/init.d/isapnp ] then /etc/init.d/isapnp start fi ______________________________________________________________________ /etc/init.d/isapnp は下記のようにします。 ______________________________________________________________________ #! /bin/sh # /etc/init.d/isapnp: configure Plug and Play boards test -x /sbin/isapnp || exit 0 /sbin/isapnp /etc/isapnp.conf exit 0 ______________________________________________________________________ 他の Linux ディストリビューションの場合は別です。私はどうすればよいか 知りません。(だれか、より具体的な情報を提供してくれませんか?) isapnp はモジュールがロードされる前にスタートしなければならないという点に注意 して下さい。(以下をご覧下さい) 【訳注】 Linux の起動時、システムの初期化と設定は Slackware の場合、 /etc/rc.d/rc.S と /etc/rc.d/rc.M スクリプトに書かれた内容に従って次の ような順序で行われます。(主なものだけを順に列記しました) 1. /etc/rc.d/rc.S # システム初期化スクリプト SysVinit (つまり Debian, RedHat, Caldera) の場合は /etc/rc.d/rc.sysinit が、これに相当します。 (/sbin/kerneld) /etc/rc.d/rc.modules (モジュール) /etc/rc.d/rc.pcmcia (PCMCIA) /etc/rc.d/rc.serial (シリアル) 2. /etc/rc.d/rc.M # マルチユーザモードスクリプト Screen blanks の設定 /etc/rc.d/rc.cdrom (CDROM) crond の起動 HOSTNAME の設定 NET subsystem の初期化 (/etc/rc.d/rc.inet1 と /etc/rc.d/rc.inet2) /etc/rc.d/rc.font (カスタム・スクリーンフォントのロード) /etc/rc.d/rc.ibcs2 (インテル・バイナリ互換仕様) /etc/rc.d/rc.keymap (カスタム・キーマップ) /etc/rc.d/rc.local (ローカル設定) トラブルを避けるために、ネットワークの設定の前 (/etc/rc.d/rc.M ではホ スト名のセットの後)に isapnp を走らせた方が良いかも知れません。ま た、sound.o をモジュールにして /etc/rc.d/rc.modules から組み込む場合、 isapnp は rc.modules の呼ばれる前に組み込む方が問題が少ないと思われる ため /etc/rc.d/rc.S の中で rc.modules が呼ばれる前に /sbin/isapnp /etc/isapnp.conf (または /usr/local/bin/isapnp /etc/isapnp.conf) 等とするのがよいでしょう。なお、RedHat系(isapnp配布元)の場合 は、rc.serialの前に rc.sysinit の中で動かすのが普通です。 参考: JF の PnP-FAQ (Linux Plug-and-Play FAQ) 【訳注終り】 3.3. カーネルのコンパイル カーネルのコンパイルをする前に、サウンドドライバに対して AWE Driver Extension を適用する必要があります。カーネルソースツリーの中に既に awedrv extension が入っている (これは /usr/src/linux/drivers/sound/lowlevel/ を確認して下さい) 場合でも awedrv ソフトウェアをアップグレードすることができます。awedrv ソース ディレクトリの中のインストール方法に従って下さい。要するにカーネルソー スにパッチをあてるインストール・スクリプトを実行する必要があるのです。 インストール・スクリプトを実行した後でカーネルソースツリーをアップグ レードした場合は注意して下さい。このインストール・スクリプトはファイル が存在するかをチェックするだけで、必要なパッチをあてることはしません。 【訳注】 このスクリプトは、ある特定のファイルが存在するかどうかを チェックして(それを手がかりに)動作するので、もしそのファイルがすでに存 在して(しまって)いると必要なファイルにパッチが当てられない、という意味 です。 【訳注終り】 カーネルソースをアップグレードした後、スクリプトを実行する前に drivers/sound/lowlevel/awe_wav.c ファイルを削除するようアドバイスしま す。 次に、サウンドサポートのためにカーネルの構築をする必要があります。あな たがカーネルの構築に関して少しだけ知っていることを期待しますが、詳しく は Sound HOWTO と Kernel HOWTO をご覧下さい。カーネルソースのディレク トリ(例えば /usr/src/linux) に移動し、次のようにします。 # make config または make menuconfig あるいは make xconfig とします。次に通常通り カーネルの設定をします。特別にあなたのシステムに合わせた、小さくて且つ 強力なカーネルをメイクするためにこの機会を使いましょう。サウンドドライ バをローダブルモジュールとしてインストールしたい (PnPカードの場合は必 須です)なら、(きっとあなたはそうするでしょうけど) "Enable loadable module support" で必ず Y と答えてください。 あるところでサウンドカードをサポートするか(したいか)どうかを質問され ます。 PnP カードではない場合は、Y または M の何れを答えても構いませ ん。 PnP カードの場合は、モジュールにするために M と答える必要がありま す。 PnP カードの場合は、サウンドカードサポートをモジュールとしてコン パイルする必要がありますが、これは、PnP カードはモジュールがロードされ る前に初期化されなければならないからです。 下記の質問には Y と答え、それ以外には全て N と答える必要があります。 ______________________________________________________________________ Sound Blaster (SB, SBPro, SB16, clones) support (CONFIG_SB) [Y/n/?] Generic OPL2/OPL3 FM synthesizer support (CONFIG_ADLIB) [Y/n/?] /dev/dsp and /dev/audio support (CONFIG_AUDIO) [Y/n/?] MIDI interface support (CONFIG_MIDI) [Y/n/?] FM synthesizer (YM3812/OPL-3) support (CONFIG_YM3812) [Y/n/?] lowlevel sound driver support [Y/n/?] AWE32 support (CONFIG_AWE32_SYNTH) [Y/n/?] ______________________________________________________________________ 最後のものだけが実際に Wave Table シンセのためのものです。それ以外は OSS/Free サウンドドライバからの SB 16 オプションです。 さらにサウンドカードの I/O ポートを設定する必要があります。ヒントとし て isapnp.conf ファイルがあるならそれを見て下さい。私の場合は下記のデ フォルト値で OK でした。カーネルコンフィグレーションスクリプトからのデ フォルト値はだめなので注意して下さい。(特に SBC_IRQ と SB_MPU_BASE の 値は、ほとんどのカードには不適当と思われます) ______________________________________________________________________ I/O base for SB Check from manual of the card (SBC_BASE) [220] Sound Blaster IRQ Check from manual of the card (SBC_IRQ) [5] Sound Blaster DMA 0, 1 or 3 (SBC_DMA) [1] Sound Blaster 16 bit DMA (_REQUIRED_for SB16, Jazz16, SMW) 5, 6 or 7 (use 1 for 8 bit cards) (SB_DMA2) [5] MPU401 I/O base of SB16, Jazz16 and ES1688 Check from manual of the card (SB_MPU_BASE) [330] SB MPU401 IRQ (Jazz16, SM Wave and ES1688) Use -1 with SB16 (SB_MPU_IRQ) [-1] ______________________________________________________________________ それではカーネルの再構築をしましょう。Debian のユーザは kernel-package を使うべきです。このパッケージは、Debian パッケージをインストールする のと同じくらい簡単にカーネルのコンパイルができます。/usr/doc/kernel- package/ のドキュメントをご覧下さい。ここにはヒントがあります: # make-kpkg clean # make-kpkg -revision custom.1.0 kernel_image そして次のようにします。 # dpkg -i /usr/src/kernel-image-2.0.29_custom.1.0_i386.d 他の Linux ディストリビューションの場合は、新しいカーネルをコンパイル する標準的な方法に従って下さい。また、下記の2つも忘れずに。 # make modules # make modules_install 【訳注】Slackware の場合、# make config (または menuconfig , xconfig) のあと次のようにします。 # cd /usr/src/linux # make dep # make clean # make # make zlilo (カーネルのインストール。LILO を使っている場合) # make modules # make modules_install # depmod -a 【訳注終り】 詳しくは Sound HOWTO とKernel HOWTO をご覧下さい。 3.4. リブート 新しいカーネルをインストールした後はリブートする必要があります。(手元 に動作するブートディスクを用意しておくこと) 起動することを祈りましょ う。 PnP カードの場合は、(前述のように)ブートスクリプトの中で、あるいは手動 で isapnp を起動すること。 # /sbin/isapnp /etc/isapnp.conf Board 1 has Identity 74 00 00 e3 10 48 00 8c 0e: CTL0048 Serial No 58128 [checksum 74] サウンドドライバをモジュールとしてコンパイルしたのであれば、次のように してインストールできます。 # modprobe -a sound AWE32 Sound Driver v0.3.3e (DRAM 2048k) メモリの検出が正しくないと考えるなら(ある人から報告を受けたのですが、 その人の AWE64 は 4096KB のメモリを積んでいるにもかかわらず、28672KB と『検出された』そうです) awedrv ソフトウェアのアップグレードをする か、または下記のように /usr/src/linux/drivers/sound/lowlevel/awe_config.h ファイルにメモリの 量を定義するかの何れかを試してみて下さい。 #define AWE_DEFAULT_MEM_SIZE 4096 /* kbytes */ 申し訳ないけど、カーネルを再コンパイルする必要があります。(たぶんモ ジュールのコンパイルだけで十分だとは思いますが、確かではありません) これが動いたら、サウンドモジュールを自動的にロードしたいと思うでしょ う。 kerneld を使う (これがなぜ良くないか 2.4項 で説明しました) か、ま たは /etc/modules に(Debian の場合) sound という 1行を追加するか、ある いは起動スクリプトに /sbin/modprobe -a sound という追加します。 4. サウンドドライバのテスト 4.1. /proc/devices, /dev/sndstat サウンドサポートをカーネルに組み込んだ場合はブート時に、有用な情報が得 られます。ローダブルモジュールとしてサウンドサポートをインストールした 場合に、同じ情報を得るには(まず # modprobe -r sound でサウンドモジュー ルを削除してから)下記のようにします。 # modprobe -a sound trace_init=1 Sound initialization started at 0x220 irq 5 dma 1,5 at 0x330 irq 5 dma 0 at 0x388 Sound initialization complete AWE32 Sound Driver v0.3.3e (DRAM 2048k) /proc 仮想ファイルシステムがあれば、サウンドデバイスを以下のようにして 探すことができます。 # cat /proc/devices Character devices: [...] 14 sound [...] 次に /dev/ の下に正しくデバイスをインストールしたか確認して下さい。詳 しくは Sound HOWTO をご覧下さい。そしてサウンドモジュールの状態を /dev/sndstat で調べます。 # cat /dev/sndstat Sound Driver:3.5.4-960630 (Sat Oct 11 19:35:14 CEST 1997 root, Linux flora 2.0.29 #1 Sat Oct 11 19:12:56 CEST 1997 i586 unknown) Kernel: Linux flora 2.0.29 #1 Sat Oct 11 19:36:23 CEST 1997 i586 Config options: 0 Installed drivers: Type 1: OPL-2/OPL-3 FM Type 2: Sound Blaster Type 7: SB MPU-401 Card config: Sound Blaster at 0x220 irq 5 drq 1,5 SB MPU-401 at 0x330 irq 5 drq 0 OPL-2/OPL-3 FM at 0x388 drq 0 Audio devices: 0: Sound Blaster 16 (4.13) Synth devices: 0: Yamaha OPL-3 1: AWE32 Driver v0.3.3e (DRAM 2048k) Midi devices: 0: Sound Blaster 16 Timers: 0: System clock Mixers: 0: Sound Blaster 1: AWE32 Equalizer 出力がこのようにならない場合は、たぶん設定に間違いがあります。何が動作 していないかを見てから、``ことはじめ'' のステップに戻り全てをチェック してください。 4.2. Raw オーディオデバイスの出力 *.au ファイル(Sun ワークステーション)または raw サンプルファイルを入手 し以下のように入力します。 *.au ファイルの場合: # cat bell.au > /dev/audio sample ファイルの場合: # cat sample > /dev/dsp オーディオデバイス 0: Sound Blaster 16 (4.3) を経由してファイルの内容 が聞こえる筈です。 4.3. OPL-2/OPL-3 シンセの出力 サウンドカードで MIDI ファイルを演奏するために OPL-2/OPL-3 FM シンセを 使いたい場合は、playmidi というプログラムを試して下さい。(付録のソース の項参照) 以下のようにします。 # playmidi -f dance.mid または # playmidi -4 dance.mid 前者は OPL-2 、後者は OPL-3 MIDI 音源です。サウンドに関してがっかりし たのであれば、playmidi を非難しないで下さい。そもそも FM シンセの音は 良くないのです。 OSS/Free Sound Driver だけしか持っていないとすれば、(ソフトウェアシン セとは比較にならないほど低い) このクオリティが限界なのです。しかし、あ なたは SB AWE を持っているから AWE Sound Driver Extension でウェーブ テーブルの機能が使えるのです。よかったですねぇ。 4.4. ウェーブテーブルシンセの出力 AWE Driver Extension には EMU 8000 ウェーブテーブルシンセを使うための 特別なツール群 (awesfx) が付いてきます。最初にカード上の Sound Font Bank をロードする必要があります。ROM サンプルを使いたいのであっても! インストール済みの Windows (のディスクの中)からファイルを入手できま す。ファイル名の最後が *.sfb または *.sf2 のファイルを探して下さい。 ROM サンプルは SYNTHGM.SBK でロードできます。実際のサンプルは SYNTHGS.SBK と SYNTHMT.SBK です。 SAMPLE.SBK もサンプルです。他の Sound Font Bank を ftp や WWW から入手することもできます。EMUのホーム ページ、Creative Labs のウェブサイトを訪ね、Chaos のサンプルを探してみ ましょう。これらは本当に素晴らしいです。(AWE Driver のウェブサイトも必 ずチェックすること) スタンダード GM (ROM) セットをロードするには次のようにします。 # sfxload -i synthgm.sbk そして SB AWE で MIDI ファイルを演奏します。 # drvmidi dance.mid 4.5. ミキシング お気に入りのミキサープログラムを入手し使ってみましょう。raw オーディオ のサンプルと2つの MIDI ファイルを同時にスタートさせ、ミキサーの設定を 試してみましょう。ちょっとだけ演奏してください、ものすごく簡単なはずで す。以下に、デバイスとそれらがどのように呼ばれているかの一覧を示しま す。 Yamaha OPL-3 シンセ または FM AWE32 Driver シンセ または FM (ミキサーは最後の2つからお互いに分離されてい るのか、だれか知ってますか?) Sound Blaster 16 (4.13) PCM または DSP PC Speaker (still alive) Spkr ミキサーの他の設定は CD-ROM(多分サウンドカードにつながっているかも しれません)と、それぞれの入力ラインにおけるメインボリューム、 Bass、 Treble、 録音レベルを表しています。どのラインを録音するかを指定するこ とができます。 4.6. Raw オーディオデバイスのサンプリング入力 異なる音源、例えば、接続されている CD ROM、mic コネクタに接続されたマ イク、そして line in コネクタに接続可能なもの、などを録音することがで きます。ミキサーを適切なポジションに設定して下さい。音を演奏し、それを ファイルに録音し、Raw オーディオデバイスから読み込みます。例えば、 # cdplay # dd bs=8k count=5 music.au 5+0 records in 5+0 records out # cat music.au >/dev/dsp のようにすると、入力デバイスから5秒間録音して演奏します。 4.7. MIDI ポート 御免なさい、MIDI ポートに関してはまだ情報がありません。 5. AWE ドライバソフトウェア 5.1. sfxload sfxload ツールを使うとサウンドカード上の DRAM にサンプルをロードするこ とができます。デフォルトではバンク0で、1バンクあたり1つのサンプル ファイルのみロードできるということに注意して下さい。ですから sfxload synthgs.sbk の後でサウンドカード上の唯一のサンプルは GS サンプルで す。Sound Font Bank を追加ロードしたい場合は、-b オプションを使いま す。例えば次のようにします。 # sfxload synthgs.sbk # sfxload -b1 sample.sbk # drvmidi sfx.mid モジュールをインストールすることにより、デフォルトの Sound Font Bank を自動的にロードすることができます。以下のような行を /etc/conf.modules ファイルに追加します。 post-install sound /usr/bin/sfxload synthgm.sbk sfxload に関する詳細は、ドキュメントをご覧下さい。 5.2. drvmidi drvmidi プログラムで、MIDI ファイルを演奏するために AWE ドライバを使用 することができます。コマンドの後に MIDI ファイル名を指定します。 # drvmidi waltz.mid drvmidi に関する詳細は、ドキュメントをご覧下さい。 6. 付録 6.1. 追加情報 Linux Sound HOWTO 作者: Jeff Tranter, 最終バージョン: v1.17, 4 August 1997 Sound HOWTO はよく読んで下さい。(sunsite.unc.edu および他のサイ トから入手できます) 【訳注】 日本語に翻訳したものが JF にあります。 【訳注終り】 これには、サウンドサポート付のカーネルのコンパイル、サウンドデバ イスに関する多くの例、アプリケーション、その他のデータが大量に含 まれています。 私の HOWTO は、この Sound HOWTO の補足であると考えています。 Linux Sound Playing HOWTO 作者: Yoo C. Chung, 最終バージョン: v1.4, 13 May 1997 【訳注】 日本語に翻訳したものが JF にあります。 【訳注終り】 Sound Playing HOWTO も読むべきです。これには様々なサウンドフォー マットやアプリケーションの使い方について書かれています。 AWE Driver FAQ 作者: Takashi Iwai (岩井 隆) 入手先: AWE ドライバのインストールや Sound Blaster カードのウェーブテー ブルシンセの使い方で問題がある時はここをご覧下さい。 【訳注】岩井さんのホームページには AWE ドライバ以外にも色々なサ ウンド関連パッケージが沢山あります。SB AWE を活用するという点で ここはお勧めというか必見です。日本語の FAQ は です。 【訳注終り】 ISA PnP FAQ 作者: Peter Fox 入手先: ISA PnP カードの設定で問題がある時は、ここが知恵の本(your book of wisdom)です。 Kernel HOWTO 【訳注】原文にはこの Kernel HOWTO のポインタが抜けています。 入手先: 日本語に翻訳したものが JF にあります。 【訳注終り】 6.2. ソース isapnptools 作者: Peter Fox 最終バージョン: 1.11 【訳注】1998年5月末現在の最新バージョンは 1.15 です。 【訳注終り】 入手先: パッチ、バグ報告、コメントをメールで送る時は、subject の行のどこ かに'isapnp' という語をいれて isapnp@roestock.demon.co.uk に送っ て下さい。 awedrv 作者: Takashi Iwai (岩井 隆) 最終バージョン: 0.4.2c 【訳注】1998年5月末現在の最新バージョンは 0.4.2d です。 【訳注終り】 入手先: Linux kernel 作者: Linus Torvald および 多くの人 最終バージョン: 現時点ではたぶん 2.0.29 【訳注】1998年5月末現在の最新バージョンは 2.0.34 です。 【訳注終り】 入手先: Linux を入手できる所ならどこでも :) OSS/Free 作者: Hannu Savolainen (私にメールを出す前に をチェックして下さい). 最終バージョン:私は 3.5.5-beta1 を持っています。 【訳注】1998年5月末現在の最新バージョンは 3.9c です。 【訳注終り】 入手先: Linux カーネルソースパッケージの中 情報: または ヨーロッパ のミラー . 6.3. isapnp.conf のサンプル pnpdump で作られる ISA PnP コンフィグレーションファイルでは、PnP カー ドのデバイス毎に一つのセクションとして表示されます。以下の出力例では一 つのカード(サウンドカード)と、その中の4個の論理デバイスが検出されてい ます。 o LD 0: Audio Device o LD 1: IDE Device o LD 2: WaveTable Device o LD 3: Gameport Device 私は LD 1 は未設定のままにしました。それはサウンドカードの IDE ポート には CD ROM を接続していないからです。あなたの SB に IDE ポートが無い なら LD 1 は Game ポートデバイスになり LD 3 は現れないでしょう。 このファイルに関して、これ以上の情報(重要!)は ``ことはじめ'' の項をご 覧下さい。 ______________________________________________________________________ # $Id: Soundblaster-AWE.sgml,v 1.5 2004/02/24 11:24:35 mdk Exp $ # This is free software, see the sources for details. # This software has NO WARRANTY, use at your OWN RISK # # For details of this file format, see isapnp.conf(5) # # For latest information on isapnp and pnpdump see: # http://www.roestock.demon.co.uk/isapnptools/ # # Compiler flags: -DREALTIME -DNEEDSETSCHEDULER (READPORT 0x0203) (ISOLATE) (IDENTIFY *) # Try the following if you get error messages like # Error occurred executing request 'LD 2' on or around line... #(VERIFYLD N) # ANSI string -->Creative SB32 PnP<-- (CONFIGURE CTL0048/58128 (LD 0 # ANSI string -->Audio<-- (INT 0 (IRQ 5 (MODE +E))) (DMA 0 (CHANNEL 1)) (DMA 1 (CHANNEL 5)) (IO 0 (BASE 0x0220)) (IO 1 (BASE 0x0330)) (IO 2 (BASE 0x0388)) (ACT Y) )) (CONFIGURE CTL0048/58128 (LD 1 # ANSI string -->IDE<-- # (INT 0 (IRQ 10 (MODE +E))) # (IO 0 (BASE 0x0168)) # (IO 1 (BASE 0x036e)) # (ACT Y) )) (CONFIGURE CTL0048/58128 (LD 2 # ANSI string -->WaveTable<-- (IO 0 (BASE 0x0620)) (IO 1 (BASE 0x0A20)) (IO 2 (BASE 0x0E20)) (ACT Y) )) (CONFIGURE CTL0048/58128 (LD 3 # ANSI string -->Game<-- (IO 0 (BASE 0x0200)) (ACT Y) )) # Returns all cards to the "Wait for Key" state (WAITFORKEY) ______________________________________________________________________ 翻訳に際し、中野 武雄 さんと、 Masayoshi Nakano さんからアドバイスを頂きました。あり がとうございます。