n2kd FM Driver

FM sound driver for PC-9800 series and PC/AT compatible computers.

Download:  n2kd_v1.0_beta_3b.zip

n2kd は NEC PC-9800 シリーズとその互換機、及び PC/AT 互換機の DOS 上で動作する FM 音源ドライバです。 MML を記述したテキストファイルをコンパイルして曲データを含むバイナリファイルを作成し、その曲データファイルをドライバに与えることで楽曲を演奏します。

対応している FM 音源は OPL3 です。 ドライバと MML コンパイラともに使っている命令は 186 命令です。

対応音源

以下の OPL3 での演奏に対応しています。

  • PC-9800 シリーズ
    • Creative SB16/98 及び Canopus T64S と同様の IO ポートでアクセスできる OPL3
    • Yamaha YMF724/744/754 内蔵の OPL3 ブロック
  • PC/AT 互換機
    • Sound Blaster の IO ポート(2x0h) でアクセスできる OPL3
    • Yamaha YMF724/744/754 内蔵の OPL3 ブロック

本ドライバは音源ボードの OPL3 機能の有効化等の機能は持っていません。 OPL3 を搭載した音源ボード等の設定はユーザが事前に行う必要があります。

その他環境固有の注意点や制約に関する情報は、配布物に同梱のドキュメントを参照してください。

サンプル曲データ

東方風神録より「厄神様の通り道 ~ Dark Road」の OPL3 アレンジを作成しました。 yaku.mml ← こちらのリンクから MML ファイルをダウンロードできます。 曲データ作成の参考にどうぞ。

実装関連記事

既知の不具合

  • 今のところありませんが、全くバグがないことを保証するものではありません。

更新履歴

  • 2026/03/13: v1.0 (beta 3b)
    • PC/AT 互換機版で SB に常駐すると常駐解除に失敗する不具合を修正
  • 2026/03/12: v1.0 (beta 3a)
    • LFO の仕様変更(曲データファイルフォーマットも変わっています)
    • ポルタメントの仕様調整とバグ修正
    • MML で数値を記述する際に2進数での記述を可能にした
    • マクロ定義と同じ行に1行コメントを記述可能にした
  • 2026/02/26: v1.0 (beta 2e)
    • テンポ管理で使う割り込みを指定するプログラム引数追加
    • BLASTER 環境変数のパース処理を調整
    • 演奏処理に合わせたユーザファンクション呼出機能追加
    • ドライバ制御ファンクションの呼出可能条件調整
    • PIT 常駐時のテンポ管理処理調整
      • 他のタイマに常駐した場合とのテンポの差が小さくなるよう変更
    • RR 上書き命令追加
  • 2026/02/08: v1.0 (beta 2d)
    • 演奏時のテンポ管理に Sound Blaster 16 for PC-9800 の PCM 再生割込を利用する機能を追加
  • 2026/01/11: v1.0 (beta 2c)
    • キーオン同期しない LFO を開始するとハングする問題を修正
  • 2026/01/10: v1.0 (beta 2b)
    • #Include 及び複数行コメントが正しく働かない場合があったのを修正
  • 2026/01/07: v1.0 (beta 2a)
    • 曲データファイルフォーマット調整
  • 2026/01/04: v1.0 (beta 1a)
    • PC-9800 版のアセンブルでエラーが出るのを修正
    • ポルタメントの演奏のバグ修正
  • 2026/01/03: v1.0 (beta 1)
    • 大改修(機能追加・バグ修正等色々)
    • PC/AT 互換機対応
  • 2022/06/11: v0.1.2 (beta 2)
    • 演奏中に常駐解除すると音が鳴り続ける不具合を修正
    • YMF724/744/754 の OPL3 を探す機能を追加
    • INT5 で割り込む OPN(A) のタイマを優先して使用するよう変更
  • 2021/09/01: v0.1.2 (beta 1)
    • 初版