MSX用FM音源ドライバ「いっぱいOPLL」

MSXでは、アプリケーション側からFM音源カートリッジ「FM-PAC」や本体に内蔵されたFM音源(OPLL)を使う場合、どれか一つの音源しか有効にしてはいけない、という決まりがあります。

それをぶっちぎって、同時にいっぱい使ってしまおう というドライバです。

ただし、このツールを使用することで本体や周辺機器に悪影響を与える可能性もありますので、必ず自己責任でお願いします。

ダウンロード

いっぱいOPLL(コンパイルツール・サンプルMML)

更新履歴

1.06 (2025/11/12)

動作環境

「いっぱいOPLL」は、PC上で動くMMLコンパイラと、そこから出力されるMSX用の実行ファイルから成り立っています。

MMLコンパイラ(IppaiOPLL.exe)

実行ファイル

使い方

直接記述方式

ファイル読み込み方式

MMLの書式について

MMLについては、なるべく一般的な書式に近づけたつもりですが、機能は極限までシンプルにしています。

大文字と小文字は厳密に区別しているので、マクロや16進数などの特別な場合以外は すべて小文字で記述してください。

音色定義

音色を定義するには、以下の3通りの定義方法があり、データの個数で自動的に判断されます。

また、16進数を用いる場合、データの先頭に 0x を付け、A~F は必ず大文字で記述してください。

  1. レジスタの値を直接指定する。最後にボイス移調を設定することもできる。(8ビット×8個あるいは9個)

    *@<音色番号>= <レジスタ0>, <レジスタ1>, ..., <レジスタ7>

    *@<音色番号>= <レジスタ0>, <レジスタ1>, ..., <レジスタ7>, <ボイス移調>

    *@1=0,0,0,27,249,244,18,34

  2. _VOICE COPY で配列に格納される値で指定する(16ビット×16個)

    *@<音色番号>= <配列要素0>,<配列要素1>, ..., <配列要素15>

    *@7=0x6C43,0x6573,0x6948,0x7468,0x1800,0x0008,0x0000,0x0000,0x08A3,0x76F1,0x0080,0x0000,0x0082,0x17F2,0x0080,0x0000

  3. FM音源のパラメータを個々に指定する(24~25個・MuSICA互換

    *@<音色番号>= <トータルレベル>,<フィードバック>, <(M)エンベロープタイプ>,<(M)マルチプルレベル>, <(M)アタック>,<(M)ディケイ>,<(M)サスティン>,<(M)リリース>, <(M)キーレイトスケール>,<(M)キーレベルスケール>,<(M)トレモロ>,<(M)ビブラート>,<(M)ディストーション>, <(C)エンベロープタイプ>,<(C)マルチプルレベル>, <(C)アタック>,<(C)ディケイ>,<(C)サスティン>,<(C)リリース>, <(C)キーレイトスケール>,<(C)キーレベルスケール>,<(C)トレモロ>,<(C)ビブラート>,<(C)ディストーション>, <ボイス移調>

    (M)はモジュレータ用パラメータ・(C)はキャリア用パラメータ・ボイス移調は省略可

    *@8=0,2, 0,2,15,1,0,0,0,0,0,0,1, 0,1,5,4,13,8,0,0,0,0,1, 0

注意事項

MMLコマンド

【※1】トラック番号について

【※2】音色番号について

特殊コマンド

コメント

マクロ

ラベルジャンプ

コンパイル制御

ボリューム制御

その他のオプションについて

出力形式

以下の3通りの出力形式があります。

  1. BLOADファイル

    BLOADコマンドでロード可能なマシン語ファイルを出力します。

    サウンドドライバと演奏データがセットになっているので、ファイル単体で演奏することができます。

    ファイルをフロッピーディスクにコピーし、MSXにそのディスクをセットした状態で、BASICから BLOAD"ファイル名",R で実行可能です。

  2. バイナリーファイル

    ヘッダのない純粋なバイナリーファイルを出力します。

    BASICからロードすることはできません。

    主にデバッグ用です。

  3. テープイメージ

    エミュレータなどで使用できるCASファイルを出力します。

    なんでもピーガーmkII等で音声ファイルに変換することで、実機でロードすることもできます。

    BASICから BLOAD"CAS:",R で実行可能です。

※どの出力形式でも、「演奏データのみ」をチェックすると、サウンドドライバを出力せず演奏データのみを出力します。

各種情報

コンパイル後、演奏に必要なOPLLの個数や、演奏時に使用されるメモリが「各種情報」の部分に表示されます。

ファイルとして出力されるのは「演奏データ」と「サウンドドライバ」の部分になります。

サウンドドライバは必ず D000H から配置されるので、一度ドライバをロードした後は DEFUSR=&HD000:A=USR(0) で何度でも演奏することができます。

サンプル

OPLLを3つ使ったサンプルのMMLファイルが入っています。参考にしてみてください。

ちなみに実機で演奏させた動画はこちら

最後に

MSXのお約束をブッチして、こんなことをやってみましたが、いかがだったでしょうか。

実機でFMPACを複数使う場合の注意ですが、例えば、拡張スロットに4つのFMPACを差した場合と、基本スロットに1つだけFMPACを差した場合では、本体から聴こえる音量が変わります。

もともと外部音源がどのように聴こえるかは、MSXの機種や環境によって異なりますし、マスターボリュームを調整するなど、皆さんの環境に合わせてチューニングしてください。

また、複数のFMPACからの出力が合成されるとかなりの音量になるので、実機で試す場合、FMPACの音量切り替えは「中」か「小」にしておくと良いと思います。

ちなみに、実機でこんな環境が用意できるのは変態だけだと思うので、エミュレータ用の設定ファイルも入れておきました。

エミュレータ上だけでも、「OPLLx9個」の世界を楽しんでみてください。

コンパイラとサウンドドライバについては、以前作ったぴゅう太用のものを改変して作りました。

あくまでも「ちょっとしたお遊び」で始めたということもあって、最低限の機能のみとなっていますし、PSGも使えません。ごめんなさい。

IppaiOPLLに関する質問や、「こんなの作ってみたよー」みたいなお知らせは、twitter で @tiny_yarou までコメントください。よろしくお願いします!

初版 2019/06/08

更新 2025/11/12


DEEP! P6! DEEP! MSX! へ戻る