MMLの全体的な構文は、`#'で始まる定義&疑似命令及び、
データ(エンベロープパターン、シーケンスデータ)を記述する記述ブロックで構成されます。
MMLコンパイラは、ASCIIコード0x00〜0x20(改行、TAB、スペース等)を無視します。
定義命令の多くは、NSFへビルドする際にNSFヘッダーに設定されます。
Command | Contens |
---|---|
#include "filename" | 外部ファイルを呼び込みます。 |
#bgm n | BGMの曲数を設定します。(Default: n = 1) |
#se n | SE の曲数を設定します。(Default: n = 0) |
#octaveReverse | 本コマンドを記述することで、相対オクターブの`<'と`>'を入れ替えます。 |
#timebase n | 以降のBGM, SE, Subブロックの四分音符の分割数を設定します。(Default: n = 24) |
#offsetE@ n | E@コマンドの引数を指定数値だけずらします。(Default: n = 0) |
#offsetEv n | Evコマンドの引数を指定数値だけずらします。(Default: n = 0) |
#offsetEm n | Emコマンドの引数を指定数値だけずらします。(Default: n = 0) |
#offsetEn n | Enコマンドの引数を指定数値だけずらします。(Default: n = 0) |
#offsetPCM address | 儕CMを配置するアドレスを指定します。(Default: $10000(儕CM無し)) シーケンスデータはこのコマンドで指定したアドレス-1の領域まで使えます。 NSF music formatでは、このアドレスからΔPCMを配置します。 アセンブリ言語ソースを出力する場合は、リンカー"ld65.exe"のコンフィグファイルにて、 "#segmentPCM"コマンドで指定したセグメントの配置アドレスと、同じアドレスに設定して下さい。 |
DPCM{ Delta PCM define } |
儕CM定義の記述ブロックです。 儕CM定義の記述は、儕CM定義(Delta PCM define)の項を参照ください。 |
FDSC(n){ wave table } |
FDSのキャリア側の波形データ定義の記述ブロックです。 FDSのキャリア側の波形定義の記述は、FDSキャリア波形定義(FDS career wave table)の項を参照ください。 |
FDSM(n){ wave table } |
FDSのモジュレータ側の波形データ定義の記述ブロックです。 FDSのモジュレータ側の波形定義の記述は、FDSモジュレータ波形定義(FDS modulator wave table)の項を参照ください。 |
VRC7(n){ VRC7 define } |
VRC7ユーザー音色定義の記述ブロックです。 VRC7ユーザー音色定義の記述は、VRC7 ユーザー音色定義(VRC7 User Instrument define)の項を参照ください。 |
N163(n){ wave table } |
n163の音色波形定義の記述ブロックです。 n163音色波形定義の記述は、n163音色波形定義(N163 sample wave block)の項を参照ください。 |
Envelop(n){ Envelop data } |
n番のエンベロープパターン定義の記述ブロックです。 エンベロープパターンの記述は、エンベロープパターン(Envelop pattern)の項を参照ください。 |
Sub(n){ Sequence data } |
n番のサブルーチンの記述ブロックです。 シーケンスパターンの記述は、シーケンスデータ(Sequence data)の項を参照ください。 |
BGM(n){ Sequence data } |
n番目のBGMのシーケンスの記述ブロックです。 シーケンスパターンの記述は、シーケンスデータ(Sequence data)の項を参照ください。 番号は0からカウントします。 |
SE(n){ Sequence data } |
n番目のSE のシーケンスの記述ブロックです。 シーケンスパターンの記述は、シーケンスデータ(Sequence data)の項を参照ください。 番号は0からカウントします。 |
$name{ Sequence data } | シーケンス用のマクロ定義です。(未実装) |
;comments | 1行コメントです。改行までの記述を無視します。 (各記述ブロック内でも有効です) |
//comments | 1行コメントです。改行までの記述を無視します。 (各記述ブロック内でも有効です) |
/*comments*/ | 範囲コメントです。 /* と */ の間の記述を無視します。 (各記述ブロック内でも有効です) |
Command | Contens |
---|---|
#code "name" | リンクするNSF用のROMコードを指定します。(Default: name = `nsd.bin') コンパイルオプション`-l'でROMコードの指定がある場合は、コンパイルオプションを優先します。 |
#title "strings" | タイトル名を設定します。NSFビルド時にヘッダーに埋め込まれます。 |
#composer "strings" | 作曲者を設定します。NSFビルド時にヘッダーに埋め込まれます。 |
#copyright "strings" | 著作権者を設定します。NSFビルド時にヘッダーに埋め込まれます。 |
Command | Contens |
---|---|
#segment "name" #segmentSEQ "name" | 儕CM以外のセグメントを指定します。(Default: name = `RODATA') |
#segmentPCM "name" | 儕CMのセグメントを指定します。(Default: name = `PCMDATA') |
#label "name" | ラベル名(シンボル名)の先頭に付与する文字列を指定します。(Default: name = `_nsd_') Cコンパイラは、C言語で記述されたラベル(シンボル)名の先頭に`_'を付加します。 従い、C言語から曲データを参照する場合、MML側で設定するラベル名は先頭に`_'を追加してください。 |