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@ | 音色エンベロープ・パターン |
Ev | 音量エンベロープ・パターン |
Em | 周波数エンベロープ・パターン |
En | 音程エンベロープ・パターン |
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 | マクロ呼び出し(未実装) |
| | 小節線(コンパイルには反映されません) |