1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

FreeBSDのMIDI

Last updated at Posted at 2020-12-26

VALUESTARにはヤマハのDS-1E(YMF754)というチップが入っていてこのチップにはXG音源が入っているのでどうなっているのか調べでみました。

YMF754はDOSの頃のSoundBlasterなどの互換もありもりもりです。

DS-1EのPCMのドライバはds1というコードがありPCMサウンドでは使えます。

FreeBSDにMIDIに関する情報は検索しても古いものがほとんどです。

12.2R現在のFreeBSDに入っているMIDIドライバは2003年にMathew Kannerさんが作られたコードのようです。

ドライバのインターフェースはカーネルソースのsys/dev/sound/midi/midifoi_if.mで定義されています。

このインターフェースは古式ゆかしいRolandのMPU 401由来のもののようです。ただMPU 401は本来時間管理もしてくれるインテリジェントなインターフェースでしたが、ノンインテリジェントなモードもあり、この仕様になっているようです。

MPU401はまだ8Bit CPUの頃に開発されたインターフェースで、ホストのCPUだと間に合わないので、時間管理はMPU401のほうで行っていました。その後PC-9801などでも使われるようになって、CPUが十分に(MIDIに対して)早くなって、MPU401の時間管理が必要なくなり、UARTモードが主に使われるようになりました。

MPU 401のインテリジェントなインターフェースはCV/GATE時代のシーケンサーのMC-4由来のようです。

Roland-mc4b-3.jpg

CV/GATEはアナログ信号でしたが、シーケンサーはマイコンを使っていました。

MIDIはローランドが80年代に発案したもので、MIDIはMC-4を作ったエンジニアが設計したようです。当時ローランド社内にはMC-8を設計したエンジニアが作った仕様もあったようですが、当時の社長だった梯(かけはし)さんがMC-4由来の仕様をローランドとして押すことにしたようです。グラミー賞にもなったMIDIの開発ですがプロフィット5などを作っていたシーケンシャルサーキットとの共同開発になっています。しかしシーケンシャルサーキットはSCSIのようなパラレルの仕様で作っていて、梯さんがシーケンシャルサーキットを説得してMIDIが出来上がったようです。また当然当時ヤマハにも何らかの案があったのではないかと思われますが、MIDIの一号機をローランドではなくヤマハから出す事で説得したのではないかと想像されます。MC-4のエンジニアは音楽製作現場の意見を聞くために私が少しだけいたスタジオにちょくちょく来ていたようです。

MPU401の時間管理はかなり特殊で、それを使うとアプリケーションが自由に作れないなどの弊害もありました。

MIDIドライバのコードはmidifoi_if.hをincludeする必要がありますが、ds1.cではincludeされてないので、実装されてないようです。

残念

以下でも確認できるようです。

% cat /dev/midistat 
FreeBSD Midi Driver (midi2)
No devices installed.

よくよく調べてみるとDS-1EのXG音源はMPU 401インターフェースの先にあるのではなくてPCIに直接つながっているようです。おそらく仕様は公開されていないのでFreeBSDやLinuxで利用する事はできないと思われます。もってねの。だれっがしらべてくんねがの。

調べてくれるような奇特な人はいないと思われ、しかたないので調べてみています。

マニュアルやYMF724のデーターシートを見るとMPU 401はXG音源か外部かが選べて、おそらくデフォルトはXG音源ではないかと思われます。

DSDOS.png

XG.png

上の図を見るとXGもSlot Managerに入ってるように見えますが、Slot Managerの資料にはXG関係の記載はありません。なんでだろう?

おそらく初期化さえできればXG音源としては使えると思うのですが。。。

サウンド関係の入力と出力を書いてみました。

IO.png

左が入力系で、右が出力系です。

ドライバをロードしないとCDAUDIOもライン出力から出ません。またロードすると出るという事は、CDAUDIOは特に設定しなくても大丈夫なのかもしれません。

PCのMIDIがソフトウエア音源に変わり始めた時期の製品ですが、DOSでもXGが使えるようなので、ハードウエア音源だと思うのですが。。。

参考になりそうなページがありました。

YMF754のXG音源はDLSでydsxg.datかDsxgwave.tblのSound fontをダウンロードしないとダメそう。。。

DS1の事を調べているとロシア語のページが結構ある。

32KのPCIのメモリーマップのどこかでアップロードするものと思われるが、手順やオフセットの情報がまったく無いのでお手上げ。

ydsxg.datとDsxgwave.tblは同じものでした。誰かダウンロード方法を調べてください。

またいつかいじる事があるかもしれないので、とりあえず作ったコードを上げておきます。

ds1.cで40-41h: Legacy Audio ControlのLADをクリアするとMPU401が0x330に出てくるので試せます。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?