Software OPL FM MIDI synthesizer
ymfmidi for Windows

日本語 | English
ymfmidi for Windows ダウンロード

ヤマハの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は個人的には結構いい感じだと思います。

ymfmidi for Windowsをタスクバーに常駐させた例
ymfmidi for Windows 常駐版
ymfmidi for Windows コンソール版を2つ使用して32ch MIDIを再生した例
ymfmidi for Windows コンソール版

MIDI出力先として設定する方法

本ソフトウェアはMIDI INからのメッセージを受け取って再生することができますが、他のソフトウェアのMIDI出力先として直接選ぶことはできません。 他のソフトウェアでMIDI出力先として選ぶためにはloopMIDI等の仮想MIDIケーブルが必要です。

loopMIDIを使う場合は以下の手順で設定できます。

  1. loopMIDIの公式サイトからloopMIDIをダウンロードしてインストールしてください。
  2. loopMIDIを起動し、「Add port(+)」ボタンをクリックして新しい仮想MIDIポートを作成します。ポート名は「YMFM OPL FM MIDI Synthesizer」など任意の名前で構いません。これにより同じ名前のMIDI INとMIDI OUTポートが出現し、それらが仮想的に直結された状態になります。
    loopMIDIにポートを足した例
  3. loopMIDIが唯一のMIDI INデバイスであれば、ymfmidiwin-synth.exeを起動するだけで自動的に作成したMIDI INデバイスが使用されます。

もしMIDI INが複数ある場合は、MIDIデバイスの番号を //MIDIIN<番号> オプションで明示してください。

デフォルトのMIDI出力先として使用したい場合は、CoolSoft MIDIMapperをインストールしてください。 インストール後にMIDIMapper Configuratorを使用して先に作成した仮想MIDIポートを指定してください。

MIDIMapperの設定例

Windows標準のFM MIDI風にしたい人向け情報

Windows標準のFM MIDI音源に近い音色で再生したい場合、Windows標準のSound Blaster 16ドライバで使用されている音色パラメータが必要になります。 この実体はWindows NT4 DDKサンプルに含まれるFMSYNTH.BINです。

ただし、このパラメータ定義は本来ドライバ開発用(DDK)に含まれるものであり、サンプルとは言えども目的外での再配布は適切でない可能性があるため、本ソフトウェアにはFMSYNTH.BINを同梱していません。 その代替手段として以下の方法に対応しています。

  1. DDKサンプルのFMSYNTH.BINを使用する方法

    Windows NT4 DDKに含まれるSound Blaster 16 サンプルドライバのFMSYNTH.BINを 音色定義ファイルとして指定すると読み込めます。

    (例1)ymfmidiwin //MIDIIN FMSYNTH.BIN

    (例2)ymfmidiwin-synth FMSYNTH.BIN

  2. ドライバDLLから読み込む方法

    実は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と同じフォルダに配置してください。

Q&A

Q. GENMIDI.woplがロードできないと出た
A. exeと同じ場所にGENMIDI.woplを置くか、明示的に指定してください。なお、圧縮されているときはセットで展開してから使ってください。
Q. loopMIDIを使用しているとき、ymfmidiを起動せずにMIDIを鳴らし続けていたらymfmidiを起動しても音が出なくなった
A. loopMIDIへ無駄にデータを送ると暴走して無反応になることがあります。MIDI再生ソフトとymfmidiを一旦終了し、loopMIDIポートを削除して再作成してください。
Q. 動作が重い
A. -qオプションで画面表示を止めてみたり、--resampler linearオプションで線形補間にしてみてください。また、チップ数も少なめにしてください。
Q. 標準のMIDI出力先にしたい
A. 最近のWindowsはMIDIマッパーがなくなったため、OS標準ではデフォルトのMIDI出力デバイスを変更できなくなりました。変更したい場合はCoolSoft MIDIMapper等を使用してください。

なんかくれに戻る

トップに戻る