MMLの全体的な構文は、`#'で始まる定義&疑似命令及び、
データ(エンベロープパターン、シーケンスデータ)を記述する記述ブロックで構成されます。
MMLコンパイラは、ASCIIコード0x00〜0x20(改行、TAB、スペース等)を無視します。
定義命令の多くは、NSFへビルドする際にNSFヘッダーに設定されます。
| Command | Contens |
|---|---|
| #title "strings" | タイトル名を設定します。NSFビルド時にヘッダーに埋め込まれます。 |
| #composer "strings" | 作曲者を設定します。NSFビルド時にヘッダーに埋め込まれます。 |
| #copyright "strings" | 著作権者を設定します。NSFビルド時にヘッダーに埋め込まれます。 |
| #include "filename" | 外部ファイルを呼び込みます。 |
| #octaveReverse | 本コマンドを記述することで、相対オクターブの`<'と`>'を入れ替えます。 |
| #segment "name" | 儕CM以外のセグメントを指定します。(Default: name = `rodata') MMLをアセンブリ言語ソース(ca65.exe用)へ変換する際に有効です。 |
| #code "name" | リンクするNSF用のROMコードを指定します。(Default: name = `nsd.bin') MMLをNSFへ変換する際に有効です。 |
| #bgm n | BGMの曲数を設定します。(Default: n = 1) |
| #se n | SE の曲数を設定します。(Default: n = 0) |
| 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*/ | 範囲コメントです。 /* と */ の間の記述を無視します。 (各記述ブロック内でも有効です) |
音色、音量、周波数、音程の推移パターンを定義します。
エンベロープは、未実装です。
エンベロープパターンの定義は、フレーム毎の推移を数値で指定します。
MMLコンパイラは、各エンベロープ(音色、音量、周波数、音程)のパターンを一元管理します。
これにより、特定の1つのパターンを、どのエンベロープでも使用可能ですが、設定範囲は留意して下さい。
| Command | Contens |
|---|---|
| n | エンベロープ値 |
| dn | 前回のエンベロープ値をnフレーム間維持します。 |
| L | エンベロープパターンがRコマンド、又はパターン最後まで行った時の戻り先を指定します。 2回目に書かれた場合は、キーオフ後のパターンにおける戻り先となります。 |
| R | 以後を、キーオフ後のエンベロープパターンとします。 |
| (start,end,length) | startからendまでlengthフレームで変化します。 |
BGM,SE,サブルーチンの演奏パターンを定義します。
シーケンスデータのサイズを最適化するためには、
ぜひ、BGM,SEデータフォーマット(Format of BGM and SE)を御一読ください。
| Command | Contens |
|---|---|
| a | 音符 (A, La, ラ) |
| b | 音符 (B, Si, シ) |
| c | 音符 (C, Do, ド) |
| d | 音符 (D, Re, レ) |
| e | 音符 (E, Mi, ミ) |
| f | 音符 (F, Fa, ファ) |
| g | 音符 (G, Sol, ソ) |
| l | 音長を省略した時に適用する音長 |
| o | オクターブ |
| q | 後方からのゲートタイム |
| r | 休符 |
| ^ | タイ |
| s | スイープ |
| t | テンポ |
| t_ | 相対テンポ |
| u | 前方からのゲートタイム |
| v | 音量 |
| y | メモリ書き込み |
| D | ディチューン(cent単位) |
| D% | ディチューン(register単位) |
| E@n | 音色エンベロープ・パターン(未実装) |
| Evn | 音量エンベロープ・パターン(未実装) |
| Emn | 周波数エンベロープ・パターン(未実装) |
| Enn | 音程エンベロープ・パターン(未実装) |
| K{} | 調号(自動臨時記号) |
| L | 無限ループ(サブルーチンの記述ブロック内では無効) |
| Pdepth,count,rate | ポルタメント(未実装) |
| R@ | Key off時の音色 |
| Rv | Key off時の音量 |
| Rm | Key off時のモード |
| S | サブルーチン呼び出し(サブルーチンの記述ブロック内では無効です) |
| TR | トラック(サブルーチンの記述ブロック内では無効です) |
| @ | 音色(音色エンベロープ無効) |
| [ : ] | リピート(A) |
| |: \ :| | リピート(B) |
| < | オクターブ−1 |
| > | オクターブ+1 |
| " | オクターブ−1(次の音符のみ) |
| ' | オクターブ+1(次の音符のみ) |
| ( | 音量−1 |
| ) | 音量+1 |
| _ | 移調(絶対値)。 |
| __ | 移調(相対値)。 |
| $name | マクロ呼び出し(未実装) |
| | | 小節線(コンパイルには反映されません) |