サウンド・ドライバー

  1. 概  要

     これらのチップを使ったISAサウンドカードは,3D機能からWave Table MIDIの機能を付加したものまで様々なものが,安い物なら2,000円台から,Wave Table MIDIを付加したものでも5,000円までの値段で出回っています。Opti 82C930 チップは非PnPということで今ではほとんど見かけなくなりました。SoundBlaster Pro互換,Windows Sound System互換,OPL2/3互換カードとして,台湾製のノーブランド品にこれらのチップを使ったサウンドカードが多く見受けられます。

     AT互換機のサウンドカードとしては,Sound Blaster 16 や Sound Blaster AWE32(AWE64)が定番ですが,ノーブランド品ならこれらの半額以下で手に入ります。セカンドマシンのサウンドカードとして購入した人も多いことかと思います。かくいう私もSound Blaster 16 以外に今まで4枚のカードを購入しました。
       Audio Magic Pro ...... Opti 82C930 チップを使用
       ATC CLiC Sound Adapter ...... Opti 82C931 チップを使用
       N/B ...... Yamaha YMF-719 チップを使用(soft wave synth付き)
       ATC 6631W ...... Yamaha YMF-719 チップを使用(Wave Table MIDI付き)

     さて,これらのカードですがDOSやWindows95で使用する分には何も問題ありません。カードに付属のドライバソフトをインストールするだけです。Linuxで使用するには対応するドライバソフトを別途入手する必要があります。

     Linux kernel 2.0.30 のサウンドドライバには,Opti 82C930 を使用したカードの場合には,MAD16 based cards でサポートされていますが,PnP のOpti 931やYMF-719のサポートはされていません。公式なLinux用のサウンドドライバは,OSS/Freeの名前でフリーのものが(カーネルソースに付属のもの),OSS/Linuxの名前で商用のものがあります。これらの詳細については,www.4front-tech.comのWebサイトを参照してください。

     OSS/Linuxは,現在出回っているISAのあらゆるサウンドカードをサポートしています。PnPカードも自動的に認識してくれます。ここからは期間限定(10日間)使用の評価版もダウンロードできます。
     評価版は私も使用してみましたが,やはりある程度汎用に作られているためカード固有の細かい制御はできませんでした。たとえば,YMF-719チップには3Dエフェクト機能が組み込まれていますがこれの制御は不可能です。また,MIDIインタフェースやFMシンセサイザーの機能はサポートされていないようでした。

     さて,それではこれらのチップを使ったサウンドカードのドライバーですが,白紙の状態から自作する必要はありません。Linux のフリーソフトの世界では,今あるベースなものに機能を追加変更していくというのが常道です。「Mad16 based cards」のドライバソフトをターゲットに取り組むことにしました。これを選んだのは,元々このドライバーソフトが Opti のオーディオチップを対象にしていることやMicrosoft Windows Sound System 互換機能の制御をサポートしているからです。

     対象となるドライバーソースは次の3ファイルです。
      ad1848_mixer.h ad1848.c mad16.c

     手っ取り早く開発するために次のとおりとしました。


     YMF-719の3DエフェクトYmersionには,高音・低音・エフェクトの3つのレベルコントールがあります。高音・低音については,オリジナルのミキサードライバでサポートできますがエフェクトのレベルコントロールに該当するデバイスがありません。ミキサードライバーのソース上では3Dのオンオフに対応するデバイスがあるだけです。新たにミキサーデバイスの定義を設けてもいいのですが,そうすると既存のミキサーアプリケーションで制御できません。そこで,今回はPCM2のデバイスにエフェクトのレベルコントロールを割り当てました。xmixerなどのミキサーアプリケーションを起動するとPCM2のレベルコントロールスライダーが表示されます。

     YMF-719のチップを使ったサウンドカードに付属するWindows95ドライバは,soft wave table synth をサポートしていますが,この機能はチップの持つ機能ではなくドライバソフトが持っているものです。Linuxでは,timidityという名前のsoft wave synthが使えますのでドライバ自体でのサポートはしていません。

     DSPチップを外付けしたhardware wable table MIDIを持つサウンドカードについては,MPU-401 MIDIインタフェースをドライバでサポートしましたのでLinuxでも使用可能となっています。


  2. ドライバーソフト

     ドライバー(sdriver.tgz)はここからダウンロードできます。
     

  3. ファイルリスト(sdriver.tgzに含まれているファイル)



  4. インストール

     ダウンロードしたsdriver.tgzのあるディレクトリで次のとおり展開します。

     サウンドドライバソースの格納されたディレクトリに移動します。

     オリジナルのソースファイルのファイル名を変更し保存しておきます。

     目的のオーディオチップに応じたドライバソースをシンボリックリンクします。


  5. コンパイル

     make menuconfig でカーネルコンフィギュレーションを実行します。

     Opti931, YMF-719 の場合には必ずモジュール指定します。これらのチップはPnPの為,isapnptool等のPnP設定ユーティリィティーと併用する必要があります。
     Opti930はPnP非対応ですので組み込みでもモジュールでもどちらでも構いません。

     サウンドドライバーのカード選択では,「Support for Mad16 and/or Mozart based cards」を選択します。さらに,「/dev/dsp and /dev/audio support」,「MIDI interface support」,「FM synthesizer (YM3812/OPL-3) support」も選択します。この後のIRQやIOポート,DMAの設定はあなたのマシンの環境に応じて適切な値を選択してください。
     なお,Opti931, YMF-719チップの場合には,ここで設定したIRQやIOポート,DMAの値と同じ値を/etc/isapnp.conf(isapnptoolを使用する場合)に設定することになります。

    後は,
    を実行しカーネルをコンパイルします。


  6. PnPの設定

     次に,Opti931, YMF-719チップを使用したサウンドカードの場合には,/etc/isapnp.conf のリソース設定を行ってください。
     ISA PnPカードの設定ツールであるisapnptoolの使い方については,isapnptoolに付属のドキュメントを参照してください。
     YMF-719チップを使用したサウンドカード用に/etc/isapnp.confを設定する時には,チップの拡張機能を設定する拡張レジスタのIOアドレスは0x370を設定するようにしてください。このアドレスについては,ドライバーソフトの中で0x370をハードコーディングしています。


  7. 動作確認

     カーネルのコンパイル,PnPの設定が終われば,新しいカーネルでマシンをリブートします。rootでログインし,isapnp と入力しPnPカードの設定を行います。次に,insmod sound と入力し,サウンドドライバーモジュールの組込を実施します。

     以上で新しいサウンドカードが使えるようになります。xmixer,playmidi, play 等のサウンドアプリケーションで動作確認をしてみてください。



戻る