FMPMD2000 のページ
last updated 2004.01.10
FMPMD2000 / FMPMDE2000 とは?
PC-98x1シリーズの音源ドライバ「FMP」と「PMD98」用の曲データを Windows 上で演奏するためのソフトです(FMPMD2000 は日本語版、FMPMDE2000 は英語版)。
曲を聞くためには、WinFMP 本体(WinFMP.dll) と PMDWin 本体(PMDWin.dll)とプレイヤが必要です(もちろん曲データも。)
現在の最新バージョンは、WinFMP.dll は ver0.16, PMDWin.dll は ver0.35, FMPMD2000 / FMPMDE2000 はver0.31 です。
なお、WinFMP.dll / PMDWin.dll では OPNA のエミュレートに cisc さんのFM音源エンジンを使用させていただいています。
FM Sound Generator with OPN/OPM interface
Copyright (C) by cisc 1998, 2003.
WatchFileUpdate とは?
ファイルのタイムスタンプの更新時に特定の実行ファイルに更新ファイルを引き渡して実行するプログラムです。
といってもピンと来ないかもしれませんが、例えば図のように設定しすると、自動的に以下の処理を行います。
- エディタで test.mml を保存すると「c:\bin\mc.exe /v c:\data\test.mml」を実行。
- コンパイラが test.m を生成すると 「c:\bin\fmpmd.exe c:\data\test.m」を実行。
Windows 環境での曲データの作成に重宝すると思います。
変更点
WinFMP.dll(Ver0.16)
- fmgen 008 を組み込んだ
WinFMP.dll(Ver0.15)
- fmp_setfmcalc55k が効かなくなっていた不具合を修正
- fgetcomment / fgetcomment2 が正常に動作しなかった不具合を修正
- fgetcomment2 で filename = NULL の時に2バイト半角→半角の変換が行われていなかった不具合を修正
PMDWin.dll(Ver0.35)
- FM パートにおける LFO2 でスロットマスクを用いた際の音量 LFO(MMB と *B2,*B3,*B6,*B7 のいずれかを併用したとき)が正常に動かなかった不具合を修正
- FM パート TL値設定コマンド(Oコマンド)で TL 値にマイナスの相対値を指定した際に正常に動かなかった不具合を修正
FMPMD2000(Ver0.31)
- イジェクトボタンを SHIFT+クリックした際のフォルダ選択が無効になっていた不具合を修正
FMPMD2000(Ver0.30)
- サブウィンドウが開いているかどうかを「ウィンドウ(W)」メニューに表示するようにした
- サブウィンドウが開いている時に「ウィンドウ(W)」メニューを選択するとサブウィンドウを閉じるようにした
FMPMDE2000(Ver0.31)
- When eject button is clicked with pushing the SHIFT button, ignored the selecting folder - fixed.
FMPMDE2000(Ver0.30)
- It displayed whether the sub window would be open on the"window (W)" menu.
- The sub window was closed, when the sub window was open and the"window (W)" menu was chosen.
FMPMD_SDK003a
- WinFMP.pas の関数「fmp_getcomment3」の定義を間違えていたのを修正した
FMPMD_SDK003
- 2003/08/12 までのドキュメントの修正を盛り込んだ
各プログラムの関係
- WinFMP.dll
FMP の曲データから演奏時の PCM データを生成する DLL です。DOS 版の FMP.com + PPZ8.com に近いです。インテリジェント、かつできるだけ機種依存性が少ないように設計しています。
DLL に音を出力する機能が備わっていないのは、機種依存性を減らすためと、私自身が VC++ で窓アプリを作成するのが苦手なためです(PMDWin.dll, WinFMP.dll が、VC++ で2作目、3作目です)。
- PMDWin.dll
PMD98 の曲データから演奏時の PCM データを生成する DLL です。DOS 版の PMDPPZ.com + PPZ8.com + P86drv.com + PDR.com + PPSDRV.com に近いです。できるだけ WinFMP.dll と同じように制御できるように設計しています。
- FMPMD.exe
WinFMP.dll, PMDWin.dll を制御して曲の演奏を行います。また UI とビジュアル(スペアナ、レベルメーター等)を提供します。DOS 版のプレイヤ(play.com, pmp.com 等)に相当します。
上記 DLL を制御するプログラムを書けばオリジナルのプレイヤを作成することも可能です。
なぜ FMP が WinFMP.dll なのに PMD98 が PMDWin.dll なのかというと、最初に PMD98 の Windows 版を作ったときに PMD98, PMD88, PMDTOWNS, ・・・等と整合性を取るために PMDWin にしたのですが、FMPWin はあまりにもゴロが悪かったので WinFMP にしたためです。
FMPMD2000 以外のプレイヤー
- WinAMP
Nullsoft 作の(おそらく)世界で一番使われているプレイヤーです。Mamiya さん作の in_fmpmd プラグインを使用することにより、FMP / PMD の曲データを再生することができるようになります。
Kobarin さん が作成しているエクスプローラー形式の国産プレイヤーです。最初は MIDI のみのサポートだったのですが、プラグインによりどんどん対応形式を増やし、WinAMP に並ぶ多様なフォーマットの曲データをサポートするようになりました。FMP / PMD の PVI パス指定にも対応して下さいました。
Moonlight さん作の MMDSP ライクなグラフィカルプレイヤーです。パラメーター表示の作り込みの細かさと3Dエフェクトの多彩さが素晴らしいです。
DDTOM さん作の FMP 対応グラフィカルプレイヤーです。今までのプレイヤーとは異なったグラフィックが新鮮です。
Kigami さんが作成されている PMD 用のプレイヤーですが、現在ページが消えているようです。FMPMD よりビジュアル面に力が注がれています。
- pmdxmms
Agawa Koji さんが作成されている UNIX 用プレイヤー XMMS 用のプラグインです。UNIX 使いの方はこちらをどうぞ。
ひこざさんが作成されたシューティング「無双撃団」で、BGM 用に PMDWin を使用していただきました。
PMD98 最後?の市販ゲーム「ラブエスカレーション」を Windows に移植されている Production StarHole で、BGM で PMDWin を採用して下さいました。
音源の種別
FMP, PMD98 でサポートされている音源について簡単に記します。
FM 音源
正弦波発振器を4つ接続することにより音に変調をかけて音色を合成します。接続の方法は8種類のパターンから選べます。PMD98 で最も重要な働きをする音源です。
PSG(SSG) 音源
矩形波またはノイズ(ランダム波)を演奏させることのできる音源です。FM 音源と異なり波形を変えることはできませんが、うまく使うと透明感のある独特の音色を表現することができます。
リズム音源
バスドラム、スネアドラム、ハイハット、シンバル、タム、リムショットの6種の音を発生させることができます。チープな音色が涙を誘います(^^;
ADPCM 音源
マイクや外部入力からとり込まれた音をデジタル化し、演奏するサンプリングの1種ですが、前のデータとの差を利用して圧縮するため、後述のPCM音源よりデータサイズが小さいメリットがあります。
PCM 音源
ADPCM音源と同様にサンプリングにより取り込まれたデータを再生する音源ですが、圧縮を行わないためデータサイズは大きいものの音質は優れています。
音源チップについて
OPN(YM-2203)
FM音源×3、SSG×3(ともにモノラル)の演奏が可能です。PC-9801DA 以降の PC-9801 シリーズ、PC-386GE,GS 以降のエプソンの98互換機などに標準搭載されていますが、Windows 時代になって省かれてしまいました。
OPNA(YM-2608)
FM音源×6、SSG×3、リズム×6(SSG以外はステレオ)の演奏が可能です。外部 RAM が接続されていれば ADPCM ×1(ステレオ)も演奏可能です。スピークボードや音美ちゃん(共に音源ボードの名称です)では ADPCM の演奏も可能なのですが、NEC が発売した86ボードでは PCM ×1(ステレオ)が搭載されたため ADPCM は省略されてしまいました。PC-9821-A Mate、Multi シリーズに標準搭載されています。
FMP について
FMP.COM
OPN, スピークボード, 86ボード用の FMP です。最大 FM×6、SSG×3、リズム×6、ADPCM×1(ステレオ)の演奏が可能です。後述の PPZ8 を用いると、SSG の代わりに PCM×3 を鳴らすことができます。
PMD98 の種類について
PMD.COM
OPN 用の PMD です。FM×3、SSG×3(モノラル)の演奏が可能です。
PMDB2.COM
スピークボード、音美ちゃん用の PMD です。FM×6、SSG×3、リズム×6、ADPCM×1(ステレオ)の演奏が可能です。
PMD86.COM
86ボード用の PMD です。後述の P86DRV を用いることにより PMDB2 とほぼ同等の演奏ができます。
PMDPPZ.COM
86ボード用の PMD です。後述の PPZ8 を用いることにより、1パートしかないPCMパートで8パート分の合成を行って演奏させることができます。
補助プログラムについて
PDR,PPSDRV
SSGパートを用いて力技でサンプリングデータを演奏させるためのプログラムです。2つペアで使うことにより初めて機能します。サンプリングデータとしては .PPS を使用します。すべての種類の PMD98 で使用できます。
P86DRV
PMD86 で PCM を演奏させるための補助プログラムです。サンプリングデータとしては .P86 を使用します。
PPZ8
FMP または PMDPPZ と併用して PCM の8音合成を行います(FMP では3音のみ対応)。P86DRV と併用することはできません。サンプリングデータとしては .PVI または .PZI を使用します。
曲データ、サンプリングデータの拡張子について
.OPI FMP用の曲データ(OPN)です。 .OVI FMP用の曲データ(OPNA)です。 .OZI FMP用の曲データ(PPZ8 使用、OPN または OPNA)です。 .M PMD(OPN)用の拡張子ですが、PMDB2, PMD86, PMDPPZの曲データでもこの拡張子のものも
あるようです。.M2 PMDB2 または PMD86 用の曲データです。 .MZ PMDPPZ 用の曲データです。 .PVI 元々は FMP のサンプリングデータ(ADPCM)だったんですが、PPZ8 パート(FMP, PMDPPZ)や
PMDB2 のサンプリングデータとしても使えます。.PZI PPZ8 用のサンプリングデータ(PCM)です。PMDPPZ で使用できます。 .PPS PDR, PPSDRV 用のサンプリングデータ(PCM)です。 .PPC PMDB2 用のサンプリングデータ(ADPCM)です。 .P86 PMD86 用のサンプリングデータ(PCM)です。
FMPMD2000 では、FMP と PMD98 のすべての曲データ(PMDB2, PPSDRV, P86DRV, PPZ8)に対応しています。
データ作成について
FMP または PMD98 の曲データは、MML(Music Macro Language)と呼ばれる音楽記述用の言語をコンパイラでコンパイルすることによって作成します。ただし FMP と PMD98 で言語仕様は異なります。オリジナルの FMP または PMD98 に同梱されているマニュアルを参照してください。
現在のところ Windows 用の GUI ベースの作成ソフトはありませんので、以下の方法で作成することになります。
1)PC-98x1 シリーズで作成する。
最も確実な方法ですが、当然実機と音源を持っている必要があります。
PC-9821 A Mate なら中古ショップまたはオークション等で安価に入手することが可能と思います。性能的には 486DX2 クラスで十分です。
2)エミュレーター上で作成する。
Anex86, Virtual98, T98, Neko Project II 等のエミュレーターが使用可能です。
ただし、PPZ8 のエミュレートは 重いので PentiumIII クラスの CPU でも厳しそうです。
3)mc.exe または fmc.exe(対応版) を Windows の DOS プロンプトで直接実行する。
AT 互換機で fmc.exe を使用する場合は PC-98x1 機種依存部分を除いたバージョン(3.16z)のみ使用可能です。3.16z 以前のバージョンを使用すると最悪 OS が落ちます。
AT 互換機では mc.exe の /P, /S オプションは決して使わないで下さい。また、評価版コンパイラ mch.exe は Window 上では決して実行しないで下さい。最悪 OS が落ちます。
PC-98x1 シリーズ(音源あり)なら DOS プロンプトで開発することも可能ですが、PPZ8 を使う場合は Windows で 同じPCMデバイスを使わないように設定してください。
FMP のコンパイラ fmc.exe の PC-98x1 機種依存部分を除いたバージョン(3.16z)が公開されました。ぐぅさんお疲れさまです(2001.09.16)
PMD98 のコンパイラ mc.exe がフリーソフトになりました。KAJA さんありがとうございます(2000.06.17)
WatchFileUpdate(拙作)を用いることにより、MML ファイル保存と連動してコンパイル、演奏を自動的に行うことができるようになりました(2001.02.17)
番外)Windows 用のデータ作成ソフトを自作する。
わたし?多分無理・・・
WinFMP のソースファイルについて
公開の要望が何件かありましたが、いろいろ考えた末、公開をしないこととしました。
この件について私およびオリジナルの FMP の作者であるぐぅ氏への問い合わせはご遠慮ください。