FreeBSD(98) で MIDI のお部屋
MPU-PC98を使うための方法を紹介します。
なお、ここに書いてある事は無保証です。
動作確認:2.2.5R/2.2.6R/2.2.7R/2.2.8R/3.0R/3.2R/3.3R
2.2.7R以前のカーネルの場合は、まず、このパッチをあててください。
(#ifdef PC98 をつけて変更してありますので
AT機の人がこのパッチを当てても何の害も無いと思います)
次にカーネルのコンフィギュレーションファイルに、
2.2.xRの場合> device mpu0 at isa? port 0xe0d0 irq 6 vector mpuintr
3.xRの場合 > device mpu0 at isa? port 0xe0d0 irq 6
を加え、カーネルを再構築します。
(portやirqは自分の環境にあわせてください)
それが出来たらリブートして、
# cd /dev
# ./MAKEDEV snd0
を実行してください。
とりあえず、playmidi などで音がなるようになるはず。
srgplay をインストールすれば SMFだけでなくrcp/g36も聞けます:D~~~
2.2.xR用パッチの問題点
- わけもわからず書き換えているところがあるのでとにかくアヤシイ(^_^;。
(3.0Rのmpuドライバは森田@京大さんによって修正されているので 2.2.xRのものより安心です^^;)
2.2.xR用パッチの修正個所
- mpu401.c
- MPU-PC98のコマンドポートとステイタスポートはデータポート+2なので修正
- MPU_ACKの定義が実際のMPUメッセージと違うので直す
- resetの後(?)でデータをSendし損なうことがあるためtimeoutの値を増やす
- playmidiで複数の曲を連続演奏する時にタイムアウトが起こったのでtimeoutの値を増やす
- Interrupt #0? というメッセージが出たので、関数mpuintrをlinuxのソースを参考に変更(パクッた;-)。
- playmidiの初回起動時にSend data timeoutがずらずらと出てきたので、関数reset_mpu401を適当に修正(かなり綾椎)。
- データを読むなら base+1 じゃなくて base+2 じゃないのかなーと思って+2にする。
- sound_config.h
- デフォルトのbaseポートの指定
(コンフィギュレーションファイルでちゃんとportを指定するなら書き換える必要は無い)
ご意見ご感想は
sakaikty@yahoo.com まで。