Midi2NsdMmlを作ってみた

ツイート 
このエントリーをはてなブックマークに追加

ゲーム機トップへ

0:26 2026/05/21 作成
23:12 2026/05/24 更新 

まだ完全体ではない…


ここに書いてあることを参考にした結果
何か起こってもその責任は負いかねます。各自の判断で使ってください。
VirusTotalで4つほど引っ掛かります…


まずはMidi2NsdMmlの方。
Midi2NsdMml.zip 0:15 2026/05/21

MIDIからNDS.Lib向けMMLにするやつです。現時点では波形メモリ系とVRC7は非対応です。
一緒にtve.txtというファイルが入ってますが、
これにプログラムチェンジごとの音量、音色、モジュレーション、ノートエンベローブなんかを書いていきます。
とてもめんどくさい。細かいことはファイル内に書いてあります。
tve.txtは、読み込むmidiの場所に有ればそれを利用、なければEXEフォルダ内のを利用、それも無い場合はE@0 Ev15(ベロシティ最大時)で出力します。
コマンドプロンプトで実行するとどこから読み込んでいるかがパスが表示されます。読み込めていれば。

MIDIのほうは、フォーマット1専用でトラックがMMLのトラックに対応します。チャンネル設定は無視します。
トラックの配置は各.lib/.binの仕様 を参考に。TR1~5(内部音源)以降はnsd_all2.binに準じます。

MMLのヘッダはこんな感じになってます

#Title "MIDの曲タイトル"
#Code "nsd_all2.bin"(固定)
#BGM 1
#SE 0
#timebase 24(テンポから適当に設定)
#External %0(使用トラックから自動設定)

#Bank

TR5のDPCMにノートが有る場合以下のように出力します。
これにDMCは付属していないので各自で作ってください。
なぜか皆さんZEXのページのmid2mml for ppmck v1.0bをダウンロードしてますね…

DPCM{
n36, "dmc/36.dmc",15,0,64
n38, "dmc/38.dmc",15,0,64
n43, "dmc/43.dmc",15,0,64
n45, "dmc/45.dmc",15,0,64
n47, "dmc/47.dmc",15,0,64
n48, "dmc/48.dmc",15,0,64
n62, "dmc/62.dmc",15,0,64
n63, "dmc/63.dmc",15,0,64
n64, "dmc/64.dmc",15,0,64
}

トラックの移動、融合機能

画像のようにトラック名をTRX*とするとMML変換時にそのトラックとして扱われます。
trxの文字列は、大文字小文字関係なく適用します。
「trx2 track6」とトラック名に入っていた場合、スペース以降はコメントとして無視します。スペースの代わりに-や_も区切りとして利用します。

移動は、MMC5やSun5Bのような後ろに有るトラックだけ使いたいときに便利かな。

融合は、すでに使われているトラックを指定する(画像ではトラック2)と、そのトラックのノートオフの時だけ発音します。
移動してないトラックが最優先で、移動したトラック同士がかち合う場合は、トラック番号の若い方が優先されます。

トラック3にCC12の64以降でEnを設定し、三角波ドラムとしつつ、トラック6にベースのノートを普通にうってtrx3とすれば
ドラムで刻まれた3角波ベースが出来あがる。はず 
適当なサンプル作らねば…

使えるコントロールチェンジは
現時点ではピッチベンド、モジュレーション(tve.txtで要設定)、CC12(和音などのEn設定用tveで要設定)です。
CC12が単独で入力できない場合は、リバーブタイムやディレイタイムで代用できるかと思われます。
ピッチベンドは±2オクターブくらいは可能ですがモジュレーションにもよります。
モジュレーションを使っているトラックで、発音から時間が経ってから変化するベンドを入れた場合、
エンベロープが長大になり過ぎてnsfコンパイル時にエラーとなる場合があります。

変換の実行はmidiをexeにD&DでもコマンドプロンプトでMidi2NsdMml.exe hoge.mid でも好きな方で。オプションは有りません。
次に挙げるGUIを使うと非常に便利です。(個人の感想です)

つぎはMidi2NsdNsf_EasyGUI。
Midi2NsdNsf_EasyGUI.zip 20:39 2026/05/20

名前の通りMidi2NsdNsf用のGUIです。これ自身に変換機能は有りませんので同じフォルダに置いて使います。
特別難しい所は無いと思いますので適当に使って見るのが早いです。
必要な設定はNDS.Libのコンパイラフォルダ設定位です。後は使い勝手を考えて適当に。
ウィンドウサイズは変更できます。
自動変換のチェックを入れると当該のファイル更新を察知して実行します。
MIDI監視、MML監視、NSF監視を入れた場合。MIDIを上書き保存したら、MML変換、NFSコンパイル、NSF再生まで勝手にされます。(エラーが無ければ)


とりあえずサンプルMIDIとTVEが出来たので後悔。
一通り上記の機能が使われているはず。DPCMは使ってないです。
GUIに放り込んで、MML変換、NSF変換をすればXに上げたのと同じ音の出るNSFが出来上がるはずです。
matsuno.zip 23:02 2026/05/24




ドラムスプリッターは作動が怪しいので公開見合わせ…


勝手に謝辞
mid2mml for ppmck v1.0b これが無ければチプツンに手を出していなかったでしょう。いい様にDMC使わせてもらってます…


ほしいものリスト


プライバシーポリシー

カウンタ アクセス
カウンタ PV

2011/10/26 ~ 2026/05/25 13:42

© 2011-2026 とらぷ