FMPMD2000のページ

last updated 2021/12/19


FMPMD2000 / FMPMDE2000 とは?

PC-98x1シリーズの音源ドライバ「FMP」と「PMD98」用の曲データを Windows 上で演奏するためのソフトです(FMPMD2000 は日本語版、FMPMDE2000 は英語版)。

曲を聞くためには、WinFMP 本体(WinFMP.dll) と PMDWin 本体(PMDWin.dll)とプレイヤが必要です(もちろん曲データも。)

2021/12より、速度優先と再現性・音質優先の2系統に分割しました。

速度優先 再現性・音質優先
FM音源エンジン fmgen ymfm
リサンプリング 一次補間 sinc補間
WinFMP ver 0.20 0.51
PMDWin ver 0.41 0.51

速度優先では OPNA のエミュレートに cisc さんのFM音源エンジンを一部改良して使用させていただいています。

FM Sound Generator with OPN/OPM interface
Copyright (C) by cisc 1998, 2003.


音質優先では OPNA のエミュレートに Aaron Giles さんのFM音源エンジンを一部改良して使用させていただいています。

BSD-licensed Yamaha FM sound cores (OPM, OPN, OPL, and others)
Copyright (c) 2021, Aaron Giles All rights reserved.


WatchFileUpdate とは?

ファイルのタイムスタンプの更新時に特定の実行ファイルに更新ファイルを引き渡して実行するプログラムです。

といってもピンと来ないかもしれませんが、例えば図のように設定しすると、自動的に以下の処理を行います。

  1. エディタで test.mml を保存すると「c:\bin\mc.exe /v c:\data\test.mml」を実行。
  2. コンパイラが test.m を生成すると 「c:\bin\fmpmd.exe c:\data\test.m」を実行。

Windows 環境での曲データの作成に重宝すると思います。




変更点

WinFMP.dll(Ver0.51)

WinFMP.dll(Ver0.50)

WinFMP.dll(Ver0.20)

PMDWin.dll(Ver0.51)

PMDWin.dll(Ver0.50)

PMDWin.dll(Ver0.41)

FMPMD2000(Ver0.31)

FMPMD2000(Ver0.30)

FMPMDE2000(Ver0.31)

FMPMDE2000(Ver0.30)

FMPMD_SDK006

FMPMD_SDK005


各プログラムの関係

  • 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 にしたためです。


音源の種別

FMP, PMD98 でサポートされている音源について簡単に記します。

  • FM 音源
  • 正弦波発振器を4つ接続することにより音に変調をかけて音色を合成します。接続の方法は8種類のパターンから選べます。FMP, 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 シリーズで作成する。
  2. 最も確実な方法ですが、当然実機と音源を持っている必要があります。


  3. エミュレーター上で作成する。
  4. Anex86, Virtual98, T98, Neko Project II 等のエミュレーターが使用可能です。ただし、PPZ8 のエミュレートは 音飛びしやすいです。


  5. mc.exe または fmc.exe(対応版) を Windows の DOS プロンプトで直接実行する。
  6. 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)


WinFMPのソースファイルについて

公開の要望が何件かありましたが、いろいろ考えた末、公開をしないこととしました。

この件について私およびオリジナルの FMP の作者であるぐぅ氏への問い合わせはご遠慮ください。


戻る