Skip to content

MucomDotNET Extensions ja

ToughkidDEV edited this page Oct 3, 2026 · 1 revision

MUCOMSX mucomDotNET 拡張コマンドガイド

更新日 2026-10-03。MAKOTO 1台のYM2608向けに実装した機能を説明します。mucomDotNETの全チップ・全形式への対応ではありません。ビルドの区別と検証範囲、追加説明のある韓国語詳細版も参照してください。

MucoMSX_261003.zipには音楽コマンド拡張・汎用マルチページ・120 KiB DATA対応を収録しています。CPU自動高速化と/Nは別の10月3日CPU検証ビルドの機能です。既存の実行ファイルZIPは置き換えていません。

容量と形式

対象 上限
コンパイラのMUC入力 タグ・コメント・改行を含め65,536バイト
MUCEDIT編集文書 改行正規化後60,000バイト、16 KiBバンク4個
コンパイル済み音楽DATA合計 構造・音色も含め122,880バイト
1ページのイベント列 59,546バイト
ページ数 A–Kの11パートに各0–9、最大110ソフトウェアページ
最低マッパー 512 KiB。CPU高速化の追加バンクは不要

MUB全体にはヘッダ・タグ・PCMも入り、120 KiBを超える場合があります。ソースをマッパーへ読み込み、音楽DATAをメモリ上でコンパイル・検査してから保存します。PCMはexport時にディスク上の既成バンクを読み、末尾に追加します。WAV変換や音楽DATA内へのPCM常駐ではありません。

拡張不要の曲はMUB8を維持し、拡張・大容量出力はmuPb 0100経路を使用します。export時に必要なmucomDotNETドライバタグを記録します。拡張子はどちらも.MUBです。未使用マクロやコメントだけでは拡張使用と判断しません。旧4バイトFM3 Sと拡張16ビットSの混在は拒否される場合があります。拡張曲には #driver mucomDotNET を明示すると分かりやすくなります。

パートとページ

A/B/CはFM1/2/3、D/E/FはSSG1/2/3、Gはリズム、H/I/JはFM4/5/6、KはADPCM-Bです。A0からK9は進行・効果の状態を別に持ちますが、同じパートの物理音源を共有します。ページ数が物理同時発音数になるわけではありません。ABCは複数パート、C0123は複数ページへの共通行です。

#driver mucomDotNET
A0 o4 l4 cdef
A1 o5 l4 r2 ga
ABC o4 l4 [|cdef|efga|gabc|]

最後の行はA/B/Cで順に異なる区間を選びます。分岐はマクロ内でも使用でき、分岐内の通常ループにも対応します。分岐自体のネストはできません。例は構文の断片であり、新たに全曲演奏検証を済ませた配布楽曲ではありません。必要な音色・PCMは別途用意してください。

FM3独立スロット

CページでEXONを使い特殊モードを開始し、EXOFで解除します。EX1、EX24、EX1234のように使用オペレータ番号を列挙し、EX0で割当を解除します。EXだけでは特殊モードを開始しません。

C0–C3に異なるスロットを割り当ててもALG/FB、パン、ハードウェアLFOは物理的に共有されます。同じALG/FBの音色を推奨します。拡張Sは符号付き16ビット値4個、順序はオペレータ4,3,1,2です。vm3やKDの順序とは異なります。

音符とマクロ

構文 動作
xと音長 直前の音程種を現在のオクターブで再利用。最初のxはc
l%n tick直接指定のデフォルト音長
*0–*99999 拡張マクロ番号。本文長・呼出深さ制限は別
**n 符号付きマクロ番号シフト。パート・ページごとにリセット
[|...|...|] 指定されたパート・ページ順の分岐

**100 *1 **0 *1は定義済みの101、次に1を呼びます。音程シフトではありません。加算後の番号は0–99999内でなければなりません。

FM音量と効果

構文 動作と値
vm0 従来音量
vm1の後にTL値20個 v15からv0とさらに下の4段階の再定義、各TL 0–127
vm2 vN 直接音量0–127、127が最大
vm3 vN 単一音量コマンドの経路を維持
vm3 vN4,N3,N2,N1 キャリア音量、オペレータ4,3,2,1順、各0–127
KDd1,d2,d3,d4 オペレータ1,2,3,4順のキーオン遅延、tick
MTmask,baseTL FM TLへのLFO、mask 0–15、TL 0–127
@開始,目標,速度[,reset] 音色モーフ。番号0–255、速度1–255 tick、reset 0/1、省略時1

vm3は2個・3個の値も受理します。末尾省略は参照実装の省略値を記録し、ゼロ埋めや先頭値の複製ではありません。明示制御には4個すべてを指定してください。#CarrierCorrection Yes/No、V、相対音量も結果に関係します。

KDは通常Cのtick範囲で使用し、全値0で通常キーオンに戻します。MTのbit0–3はオペレータ1–4、mask 0で音程LFOへ戻ります。速度・深さは既存Mコマンドと併用します。モーフの速度1が最速、reset 1は発音ごとに開始音色へ戻ります。複数ページの高速モーフは高負荷になります。

SSG

S0–S15はハードウェアエンベロープ形状、m0–m65535は周期です。小さいほど速く、vで通常音量へ戻ります。ハードウェアエンベロープ発生器はSSG各チャンネルで共有します。

MT1は音量LFO、MT0は音程LFOです。ソフトウェアエンベロープと併用できます。@n=al,ar,dr,sl,sr,rrでプリセットn(0–15)のEパラメータを再定義します。6値は各0–255、P/Mは変更せず、次の曲で初期化します。

実チップの高速エンベロープによる三角形・のこぎり形の振幅変化は利用できます。未対応のエミュレータ専用@I8/@I9とは別機能です。

リズムとパン

p1は右、p2は左、p3は両側、FMのp0は消音です。p4[,間隔]は右→中央→左→中央、p5は逆方向、p6はランダムです。間隔は0–255 tick、省略時はデフォルト音長です。

リズム@maskのbit0–5はBass、Snare、Cymbal、Hi-hat、Tom、Rimです。vN(0–31)は選択楽器の音量、vm1は選択楽器への相対音量)(、vm0は従来動作です。pm1で選択楽器にp1–p6を使え、pm0は従来packed表記です。

#OPNA1RhythmMute SB
G @3 vm1 v20 pm1 p4,8 l4 cccc

タグはSnareとBassのキーオンを止めますがキーオフは妨げません。コンパイル、セッション、exportタグ、対応外部MUBタグ読込みにも反映されます。

MIDI式ポルタメントとADPCM

構文 意味
POon,差,時間 onは0/1、初期差は半音単位-128–127、時間はtick
POSon スイッチだけ変更
POR差 現在音に対する開始音程差をリセット
POL時間 遷移時間だけ変更
_ 次の1音だけ有効状態を反転
__ 同じく反転。有効にする際は初期音程差を使用

FM・FM3・SSG・ADPCM Kで対応し、固定音程の内蔵リズムでは使えません。最初の音は指定音+初期差から、次は前回の到達音から移動します。通常は0–Cのtick範囲で記述してください。現在のパーサは16ビット時間を保持します。タイ、ゲート、移調、ページ別状態も処理します。

A o4 l4 PO1,-7,16 cdef POS0 g _a b
K @1 v160 o4 l4 PO1,-7,16 cdef
K @1 v160 o4 l4 M1,1,8,8 cdef
K @1 v160 o4 l4 {c4g} {g4c}
K @1 v160 E255,255,8,128,4,16 o4 l4 cdef

KにはPCMサンプル1が必要です。各行はMIDI式、音程LFO(遅延,カウンタ,変化量,ピーク)、中括弧ポルタメント、6値ソフトエンベロープ(各0–255)の個別例です。音程効果はDelta-Nへ反映し、非拡張の従来PCM音程表は維持します。発音所有権のないページからの音程書込みは防止し、特定の参照テストと意図的に異なります。

レジスタ書込みと未対応事項

y0,ポート,アドレス,値は最初のOPNAへの直接書込みです。ポート0/1、アドレス・値0–255。他チップ番号は拒否します。タイマー・キーオン・PCM制御の直接変更はドライバ状態と衝突し得ます。

未対応は #PCMInvert、#@pcmによるWAV変換とPCMバンク作成、PCn・引用符のIDEメモ、追加OPNA/OPNB/OPMと@M音色、エミュレータ専用 #SSGExtend On・pe・@I・@Wです。既成PCMと実機S/mエンベロープは対応します。外部muPbは対応する第1 OPNA構造に限定します。

エディタと検証

同一ビルドの組合せを使い、旧セッションを解放してから実行ファイルを交換してください。ロード→編集→コンパイル→演奏→EXPMUB→MUBPLAY→EXPVGMの順で確認します。MUCPLAYのファイル名実行はMUCコンパイルであり、ディスクMUBはMUBPLAYで開きます。

コンパイル用原稿はLF、通常保存はCRLFの場合があります。全MUB比較は同一入力バイト・音色・PCMで行います。大きなセッションを保持すると512 KiBでも一時ロード用領域が不足する場合があり、正常終了して再起動すると解放できます。MSXの再起動が必要という意味ではありません。平均処理時間と形式検査だけで完全な実時間演奏を保証しません。リリース記録の制約も確認してください。

Clone this wiki locally