ヤマハのFM音源をエミュレーションするymfmをMIDIプレーヤーとして実装したymfmidiをさらにWindowsへ移植したものです。
ここで言うFM音源のMIDIとは、昔のSound Blasterなどに載っていたOPL3チップを使ったMIDIのことです。 今時はサウンドフォントを使った高品質MIDI音源が手軽に使用できますので、FM音源のMIDIは品質面で到底太刀打ちできるものではありません。
しかし、PCにFM音源が搭載されなくなって久しい今となっては、逆にFM音源によるMIDIの音色は新しい存在です。 このFM音源を再現したサウンドフォントは世の中にありますが、FM音源はサンプリング音源とは根本的に音の作り方が違います。 つまり「あの時のあの音」を目指すには、サウンドフォントではなくFM音源の波形合成の仕組みそのものの再現が(おそらく)ベストです。
そういうわけで、本ソフトウェアはヤマハのOPL系チップのFM音源をエミュレーションし、WindowsのMIDI環境(midiIn/midiOut API)からFM音源を利用可能にすることを目的としています。
コアになるymfmのみならず、主要なコードのほとんどはymfmidiから来ています。サンプリング変換なども他の方々のものです。素晴らしいプログラムをありがとうございます。 また、追加コードの8割方は(面倒くさがって)ChatGPTにたたき台を書かせたりしているので、最低限の内容チェックはしていますが雑です。
音色の定義ファイル(*.wopl等)はエディタで自作するほかに、公開されているものも使用できます。 ymfmidiに抱き合わせの定義ファイルはDMXOPL から来ているようです。ここにあるGENMIDI(GS).woplは個人的には結構いい感じだと思います。
本ソフトウェアはMIDI INからのメッセージを受け取って再生することができますが、他のソフトウェアのMIDI出力先として直接選ぶことはできません。 他のソフトウェアでMIDI出力先として選ぶためにはloopMIDI等の仮想MIDIケーブルが必要です。
loopMIDIを使う場合は以下の手順で設定できます。
もしMIDI INが複数ある場合は、MIDIデバイスの番号を //MIDIIN<番号> オプションで明示してください。
デフォルトのMIDI出力先として使用したい場合は、CoolSoft MIDIMapperをインストールしてください。 インストール後にMIDIMapper Configuratorを使用して先に作成した仮想MIDIポートを指定してください。
Windows標準のFM MIDI音源に近い音色で再生したい場合、Windows標準のSound Blaster 16ドライバで使用されている音色パラメータが必要になります。 この実体はWindows NT4 DDKサンプルに含まれるFMSYNTH.BINです。
ただし、このパラメータ定義は本来ドライバ開発用(DDK)に含まれるものであり、サンプルとは言えども目的外での再配布は適切でない可能性があるため、本ソフトウェアにはFMSYNTH.BINを同梱していません。 その代替手段として以下の方法に対応しています。
Windows NT4 DDKに含まれるSound Blaster 16 サンプルドライバのFMSYNTH.BINを 音色定義ファイルとして指定すると読み込めます。
(例1)ymfmidiwin //MIDIIN FMSYNTH.BIN
(例2)ymfmidiwin-synth FMSYNTH.BIN
実はWindows NT4用のSound Blaster系ドライバのDLL(例:sndblst.dllなど)には、FMSYNTH.BINと同一内容のデータがリソースとして含まれています。
そのため、本ソフトウェアではFMSYNTH.BIN相当のリソースを含むDLLファイルを指定した場合も、そのリソースから音色データを読み込めるようにしています。 FMSYNTH.BIN相当のリソースが含まれていればsndblst.dllでなくても構いません。
(例1)ymfmidiwin //MIDIIN sndblst.dll
(例2)ymfmidiwin-synth sndblst.dll
【注意】FMSYNTH.BINに含まれるドラム音色はOPLのリズム音に依存していますが、リズム音は現在のymfmidiでは未対応です。そのため、ドラム音色のみGENMIDI.op2から読み込む実装になっています。 GENMIDI.op2をymfmidiwin.exeと同じフォルダに配置してください。