さて、前回はOPMコアの話しをしましたが、今回は次に大きな実装となってしまったaddonドライバのお話です。

今回もプログラム的なこと、内部の仕様のことなどの話がメインとなってしまいそうです。あ、addonに入れさせてもらったジングルの話しもありますが。
興味のない方はスルー推奨です。

たまには酒の話もしないとと思いつつ。もうすぐ春のオクトーバフェストですしね。ま、それは次回にでも。

addonドライバは最初は作るつもりじゃなかった

そうなんです。元々は、FMPv4のデータを鳴らして欲しいっていうことだったのです。鳴らすというよりもどちらかと言えばFMDSP7でパラメータ見たいねっていう意味合いの方が大きい感じでしょう。
私自身もそのうちやりたいとは思っていたことでしたが、FMP7設計時には実装する時に考えればいいやと、全くそのあたりは考えていませんでした。「鳴らす曲で演奏部分を切り替えればいいんじゃね?」くらいな簡単な気持ち。
2つのドライバを切り替えるようにしてある日「ほら、FMPv4の曲もようやく鳴るようになった」と内輪に聞かせた席で「PMDは鳴らないの?」と、かじゃぽんから。テスト用のデータ(曲)もらう約束をして、PMDも鳴るように調整。
ところが、実際はそこまで簡単なことじゃなく演奏処理以外の部分でもFMP7の演奏処理と紐付いてしまっている処理が多数。そのへんを整理して、まとめていったら「これは、もうそれぞれドライバ独立させた方がスマート」ということになりました。
2つくらいまでなら力技で実装していたかもしれませんが、3つになったことである程度作り直しをする覚悟が出来ました。ある意味、かじゃぽんに感謝と言っておくべきなのかな(笑)

4つ目のaddon

FM音源の演奏ドライバと言えば、x68kで動作するmxdrvがあります。幸いこのドライバもwindows環境でエミュレートするドライバがGORRY氏により作成されていたため、addonとして鳴らすだけは簡単に実装が出来ました。
ここからが実は大変で、ディスプレイヤ向けのワークに演奏中の情報をコンバートするための調査に一番時間がかかりました。公開されているワークの情報などの違いで休符とかどうしてもちゃんと実装できなかった部分とかあるんですが、ソフトLFOやハードLFOなど無理かなと思っていた情報がうまく取得できたのは収穫でした。
それともう1つ。使わせてもらっているmxdrv.dllの対応バージョンの違いでうまく演奏できないデータがいくつかあったんですが、壊れているもの以外はほぼ何とかすることが出来ました。
wikiにも小さく書いてありますが、mxdrv.dllは2.06+17 Rcl.X5-Sというバージョンを元に作られています。ただ、世の中には違うバージョンのmxdrvが多数あり、その1つが2.06+16 Rel.3+25(通称16y)と言われるバージョンです。このバージョン用に作られたデータにはmxdrv.dllでは演奏が正常に行えないものがあります。
exMXDRVでは、これらのデータをmxdrv.dllで鳴らすための救済オプションがあります。
16y向けのコンパイラで作られているオフセットがマイナスになるループなどの曲を演奏させたい場合はオプションで「16y互換ループエミュレート」を有効にしてみて下さい。これでかなりの曲が演奏出来るようになります。
また、LZXによって圧縮されているデータの場合は出来れば圧縮を解除して下さい。今の時代、そんなにHDDを圧縮するようなサイズにはならないはずです。ただ、どうしても元に戻せないという時はオプションの「圧縮形式の解凍を試みる」にチェックを入れて演奏させてみてください。
このLZXというものは、元々は実行ファイルを圧縮し、自己解凍形式とするためのツールのようです。MS-DOSで言う「DIET」のようなものでしょう(DIETわかります?^^)
なので、このデータの解凍は本当は「自己解凍」させないと元には戻らないんです。自己解凍圧縮はCPUが違うとそれだけでちゃんと動きません。なので、本来はx68kでないとちゃんとした解凍は出来ないものなんです。exMXDRVではすべての解凍ができる保証はないので、鳴らなくても諦めて下さい。一応、MDXファイルだけじゃなく、PDXファイルも圧縮形式のチェックは行なっていますし、解凍も試みます。

ジングル聞いてください

FMPv4は起動時に音楽が鳴ることがこだわりの1つでした。常駐したと確実にわかることと、ちゃんと鳴るかどうかの確認も出来るので色々と便利だったのです。
そんなこんなで、FMP7にもジングルが入っています。当然FMP7のジングルはFMP7のデータ形式で鳴っています。(曲はkidが書いてくれたものです)
FMPv4が鳴るということは、昔のジングルも演奏出来るということ。それならばと、ジングルが切り替えできるようにしてみようと思ったのが始まりです。現在のaddonとジングルの一覧を書いておきます。

  • FMP7 opening theme / kid / exFMP7
    ご存知FMP7のデフォルトジングルです。FMDSP7を起動するとわかりますが、OPNA音源だけで作られています。ただし、20ch使用。贅沢にch使えるようになったFMP7で初めて書いてもらった曲です。
  • - FMPsystem Opening Theme – / kid / exFMP4
    DOS時代のFMPを使っていただいていた方ならご存知のFMP常駐時のジングルです。FM3/SSG3音という構成です。ジングルは一般非公開でテストをしていた頃(ver2時代)には組み込んでいました。PC-98にはOPN音源しか無かった時代です。懐かしいですねぇ。
  • - FMPsystem Opening Theme for SPB – / kid / exFMP4
    SPBとはスピークボードの略で、アイドルジャパン(株)から発売されたOPNA音源のことです。外部RAMも搭載されていたので、この音源ボードを使うことでPC-88のサウンドボード2と同等の音を出すことが可能になりました。
    当時、私もボードを買ってFMPも対応させました。実はFMPには元々サウンドボード2に対応したバージョンが存在していました。PC-88VA版のFMVという名前のドライバです。これはほぼkid専用に作ったドライバで、これを元にFMPのver3は作りなおしたものです。なので、SPBへの対応時期も結構早かったと思いました。VA版のFMPはしばらくはあったんですが、kidがEPSON互換機を買ったことでお役終了となりました。PC-Engine/MS-DOSどちらのOSでも動く結構ちゃんとしたものだったんです。
    おっと。話が脱線してしまったので、このくらいで。
  • - FMPsystem Opening Theme for SPB (Genocide Version) – / kid / exFMP4
    これもOPNA用のデータです。上のもそうなんですが、このジングルは実際にFMPに組み込まれることはありませんでした。というのも、PVIファイルの読み込みには時間がかかったのです。それも数秒間はPCが固まって何も他の処理が動かないというひどい状態。
    前のジングルを作った時に「ドライバ起動時にそんなに硬直したらまずいっしょ(Guu)」、「そうだよねぇ(kid)」ということでボツになったにもかかわらず、「もう1曲できた!」という学習能力のなさ。さすが>kid(笑)
    それを無理やり起動音にして使っていた強者がいた事を後の飲み会で知りました>骨折飲料(笑)
  • 緑水音楽DISK 起動音 / M.Kajihara / exPMD
    チョイスは梶原氏本人にお任せしました。「PCM使わない曲」「PMDの人が良く知ってる曲」「あんまり長くない曲」「聞いて懐かしいねと思える曲」などなど、注文は多数^^
    思えば緑水音楽ディスクを見なかったら、多分FMP音楽ディスクは作らなかったでしょうね。LEIROSさん元気かなぁ^^
  • PMD88 起動音 / M.Kajihara / exPMD
    最初に梶原氏にジングル曲の話しをさせてもらった時に候補に出ていた曲です。が、私はこれ聞いたことなかったです。PC-88持っていなかったのと、持っている友人もPMD持ってなかったんですよ。というか、FM音源に興味持っている人間がほとんどいなかったという。もし、PMDとか使っていたらFMPも作ることなかったかもしれないですね。いや、ホントに(笑)
  • JINGLE Mxdrv in FMP / Keishi Yonao / exMXDRV
    mxdrvには当然ジングル曲というものは存在しません。少なくとも過去に私が使っていた互換ドライバ含めてそのようなものはありませんでした。
    当初はmxdrvは自分用ということで、あまり公開するものとして作ってはいなかったこともあり、ジングルについても考えていませんでした。途中で時期はずれてでも公開するものにするとなった時に、せっかくなんで何かこのドライバ専用の曲が入れられたらなぁと思っていました。そこで過去にx68kでたくさん曲も書いているヨナオケイシ氏にお願いをしてジングルを書き下ろして頂きました。
    FMP7の時は全体的に固めな音色が特徴的な曲が多いのですが、ここではアナログ的なやわらかい曲になっています。最後の終わり方がまたイイですよね。

ジングルのデータは各addonが演奏できる演奏データをそのまま鳴らしています。また、ジングルの他にもFM/SSGのバランス調整が可能なドライバのaddonでは、バランスチェックの曲も昔のまま再現してあります。
好みのバランスと違うなと思われる方は、昔バッチファイルなどで指定していたオプションに合わせて調整してみてください。

最後になってしまいましたが、曲データ作成&組み込みを許可して頂いた作者の方々に感謝いたします。私のわがままにお付き合いいただき、ありがとうございました。

なんだか、結構な量になってしまったので今回はこの辺りで。まだGIMIC専用に作ったexS98Pの話が残っているんですが、それは次回GIMICのことと合わせて話しをしましょうか。

ではでは、また