Luigi ドライバでちょーマルチメディア(^^)
 普通、FreeBSD で音を出す場合、以前からある VoxWare ドライバと言うのを使うと思います。Kernel には普通、以下の様に設定しますよね。あ、今回のターゲットは SB16 互換カードです;-)。
----------------
controller pnp0
controller      snd0
device sb0      at isa? port 0x220 irq 5 conflicts drq 1 vector sbintr
device sbxvi0   at isa? drq 5
device sbmidi0  at isa? port 0x330
device opl0     at isa? port 0x388 conflicts
----------------
 その他に新しく、Luigi ドライバと言うのが 2.2.5-RELEASE から動く様になりました。そっちの設定に付いてちょっと書きます。

 で、『内容的に、http://www.running-dog.net/bsd/226/pnp.html とどこが違うの?』と思われる方も居るかと思われますが、今回は PnP ネタでは無いです。音出し専用の設定です。
 主な目的は、rvplayer5.0 の Linux 版をエミュレータを使いまともに動作させる事にあります。 rvplayer5.0 の Linux 版は VoxWare ドライバだと動かないので、Luigi ドライバを使います。

 さて、サウンドドライバを変更にするにあたり、音が出なくなるプログラムが出て来る様ですが、現在、私の環境 (PC/AT 版 FreeBSD で BS16 使った場合のお話) の VoxWare ドライバで動いているプログラムは以下のモノがリストアップされます。

1. xaudio-0.9b        mpeg2 Sound 再生
2. amp-0.7.6          mpeg2 Sound 再生
3. mpg123-0.59n       mpeg2 Sound 再生
4. xanim-2.70.6.4     何でも音が再生できる。qt も動く(^^)	
5. workman-1.3a       CD プレィヤー
6. xmix-2.1           サウンドミキサー
7. emiclock-2.0.0     「みゅっ!!」の音を出す(^^;(Luigi ドライバではそのままでは動かない)
8. timidity-0.2i+Y18  MIDI 再生(Luigi ドライバではそのままでは動かない)
9. ump.so             Netscape の MIDI 再生 plugin (Luigi ドライバではそのままでは動かない)
10.rvplayer5.0        Linux エミュレータで動作 VoxWare ドライバだと動かない 
 こんな感じでしょうかね。7. 8. 9. が Luigi ドライバでは動かないので動く様にさせる必要があります。また、rvplayer5.0 for Linux は Luigi ドライバを使用する事により動く様になります。

 では、手順を追って設定していきましょう。今回の構成ですが、一応以下になります。SB16 の設定は初期値のままとしておきます。

・OS         FreeBSD2.2.7-RELEASE PC/AT 版
・SoundCard  Sound Blaster16
 さて、まずはカーネルの設定です。SB16 は pnp0 を組み込まなくても認識している場合、pnp0 は無理に付ける事は無いです。
----------------
device pcm0 at isa? port ? tty irq 5 drq 1 flags 0x15 vector pcmintr
 :
options         SYSVSHM
options         SYSVSEM
options         SYSVMSG
----------------
 pcm0 の設定(サウンド関係のデバイス上の一行)と、後、SVR4 の設定オプションを書いてカーネルを作り変えます。これとは別にデバイスを作成する必要があります。pcm0 が初めての設定の場合は以下の設定で OK です。
----------------
pochi# cd /dev
pochi# ./MAKEDEV snd0
----------------
 VoxWare ドライバからの乗り換えの場合は、MAKEDEV snd1 になるかもしれません。この辺りは pnp の項目も参考にしてください。

 新しく出来たカーネルだと、先程の表で、 7. 8. 9. 以外は全部動く様になります。 rvplayer5.0 も Linux エミュレータを使うと正常に動きます。Linux エミュレータ についてはこちらを参照してください。

・emiclock の「みゅっ!!」
 さて、動かないものを順番に動く様にしていきましょう。まずは emiclock-2.0.0 からですが、あ、私の場合は「PC-UNIX スタータキット FreeBSD」と言う本を買ったので、emiclock-2.0.0 の正規ユーザです(^^)V。この本を買ってない人は多分手に入れる事が出来ないでしょうし、再配布も禁止されているバージョンです。普通の方は 1.0.2(だったかな?)でガマンしておきましょう;-)

 では、手もとに emiclock のソースがあるモノとして話を進めます;-)。emiclock-2.0.0/sys/FreeBSD/audio.c をちびっと修正します。修正する為のパッチを用意しました。  →  パッチ
 このパッチを以下の要領であてます。

----------------
pochi# cd $EMIHOME/sys/FreeBSD/
pochi# cat ~/emipatch | patch -p0 
----------------
 この後、xmkmf;make;make install しておしまいです。簡単です。これで「みゅっ!!」が聞こえると思います。いがっだぁぁ(^^)。

・timidity-0.2i+Y18 と ump.so
 pcm0 をカーネルに組み込んだ事により、timidity-0.2 は全然音がおかしくなりました(g_g)。後、つられて、Netscape のプラグインである ump.so も音が出なくなりました。この二つの音が出る様に復活させましょう。まず、timidity-0.2i+Y18 のソースとそれに対応したパッチを手に入れましょう。

・timidity-0.2i+Y18 の ソース   →  http://www.goice.co.jp/member/mo/hack-progs/files/timidity-0.2i+Y18.tar.gz
・timidity-0.2i+Y18 FreeBSD 対応のパッチ  →  fmob9808.tar.gz
・Luigi ドライバ のソースhttp://www.iet.unipi.it/~luigi/FreeBSD.html

 注意点ですが、timidity-0.2 の最新版は 98/08/01 現在、timidity-0.2i+Y19.tar.gz と言うのが存在しますが、FreeBSD で make する為に Makefile を変更しなければならないのですがそのパッチが存在していないので、0.2i+Y18 を使っています。
 そのパッチの方は、SoftWare Design 8 月号で 時乗さん と言う方が執筆し掲載されていまして、正確には、http://www.gihyo.co.jp/SD/index-j.html からダウンロード可能ですが、ここにいつまであるのか心配になったので私の FTP サーバに持って来ました。上記ダウンロード先は私のサーバになります。後、fmob9808.tar.gz に README.txt があるので目を通してください。
 Luigi ドライバの最新は snd980607.tgz になります。数値の部分は最新の日付けが入ります。最新のを入手した方が良いでしょう。

 では make 作業に取り掛かりましょう。make する為に tck/tk が必要になります。pkg_add で ja-tcl-7.6 と ja-tk-4.2 をインストールしておきましょう。

----------------
pochi# pkg_add ja-tcl-7.6.tgz ja-tk-4.2.tgz 
pochi# 
pochi# cd timidity-0.2i+Y18
pochi# tar xvzfp ~/fmob9808.tar.gz -C ./
pochi# cat fmob9808/patches.9808 | patch -p0
pochi# 
pochi# tar xvzfp ~/snd980607.tgz -C ./
pochi# cp linux_a.c linux_a.c.ORG
pochi# cp snd/misc/linux_a.c ./
pochi# make;make install.all
pochi# make ump.so
pochi# cp ump.so /usr/local/lib/ja-communicator-4.5b1/plugins
pochi# 
----------------
 簡単に説明を・・。まず、最初に tcl/tk を pkg_add します。
 続いて、時乗さん のパッチを当てます。
 更に、Luigi ドライバのソースから linux_a.c を取り出して、オリジナルのと置き換えます。
 そしてようやって make します。その後、umo.so を作って Netscape の plugins と言うディレクトリにコピーしてあげます。

ふぅぅ。おしまい。

 と、言いつつ、これではどういう音が出るのか保証出来ないです;-)。/usr/local/lib/timidity/patch と言うディレクトリにいろいろデータを入れてあげないといけないんです。これで沢山の音が出るみたいです。で、私の場合、どこから持って来たかと言いますと、2.2.2-RELEASE の CD-ROM の packages に入っているモノを使いました。もし、その CD-ROM が手もとに無い場合は、ports で timidity を make し、その中のモノを使うかの方法があると思います。

 ports で timidity を make した場合、/usr/local/lib/timidity/patch が出来て、この中に大量に timidity の音を綺麗に出す為のリソースが入っています。それを利用すればばっちりでしょう。ファイル名的には、dgguspat.zip というモノになります。これを展開すねと、/usr/local/lib/timidity/patch の中身が出来ます。

 これで MIDI 関係の音がいろいろ沢山音がでる様になります。やったぁぁ。

・rvplayer5.0 を再生っ!!
 今回のメーンイベントです。こいつを動かす為に Luigi ドライバのカーネルを作りました。まずは rvplayer5.0 for Linux をダウンロードします。 → http://www.afb.org/ra_form.html

 ここから、rv50_linux20.tar.gz を持って来ます。そして、適当なディレクトリ、私の場合は、/usr/local/lib ですが、で展開して出来上がります。

----------------
pochi# cd /usr/local/lib
pochi# cp ~/rv50_linux20.tar.gz ./
pochi# tar xvzfp rv50_linux20.tar.gz
pochi# 
pochi# cd /usr/local/bin
pochi# ln -s /usr/local/lib/rvplayer5.0/rvplayer
pochi#  
----------------
すると、/usr/local/lib/rvplayer5.0 と言うディレクトリが出来ます。この中の index.htm を Netscape で見るといろいろ設定方法が書いてあるので参考にしてください。

 いろいろ試したのですが、結局 FreeBSD 版の Nerscape ではプラグインとして動きません。Linux 版の Netscape を Linux エミューレータで動かした方のお話しでは、rvplayer5.0 for Linux はプラグインとして動いたとのお話しを聞いたので、どうしてもプラグインとして動かしたい人は、Netscape も Linux エミュレータで動かしてみてはいかがでしょうか。

 FreeBSD 版 Netscape を利用している人はしょうが無いのでヘルパアプリケーションとして動かす様にしましょう。あ、その前に、% rvplayer welcome.rm ととてまず動くが確認した方が良いでしょう;-)。ね。動いたでしょ;-)。と、言う事で Netscape のヘルパとして動かす為に、同根の、Mime.types と Mailcap の内容をそれぞれ、~/.mailcap と、~/.mime.types に追加します。この辺り、index.html をじっくり眺めてください。

--- Mime.types
#
#mime types added by Progressive Networks http://www.real.com
#
type=audio/x-pn-realaudio      exts=rm,ra,ram
---

--- Mailcap
audio/x-pn-realaudio; rvplayer %s
---
 この後、Netscape をすかさず再起動します。さささ、動くでしょう;-)。一応テストページを用意してみました。

 → http://netnavi.nikkeibp.co.jp/pinka/cx/steam/steam.html Ver5.0 対応
 → http://www.seaple.icc.ne.jp/~ichitani/keikyu/lib.htm Ver3.0 対応

 と、言う事で今回は Lunigi ドライバに付いてじっくりと書いてみました。pnp ドライバと独立した事により、Non pnp カードででも動く様になり非常に嬉しい限りです。ふみふみ。ばんざーーいっ!!って感じですね。

 後は・・。ショックウェーブの UNIX 版が欲しい・・。


Copyright (c) 1997-2004 takachan@running-dog.net All Rights Reserved.