トップ 一覧 検索 ヘルプ PDF RSS ログイン

視認性向上のための書式

視認性向上のための書式

書式
{ 〜 }改行可能エリア
:区切り記号
;一行コメント(改行するまで有効)
/* 〜 */コメント範囲指定(改行しても有効)

 改行可能エリア

MMLトラックの定義ドライバマクロの定義コンパイラマクロの定義を行う際、「{}」(波カッコ)で括られた範囲は、改行しても一つの処理単位とみなします。

次の三つのMMLは全て同じ演奏を指示しています。

[例1]

ABC v13 o4 q6 l8 ccddeeff erdrc4.r
[例2] 

ABC { v13 o4 q6 l8
      ccddeeff
      erdrc4.r
}
[例3]

$macro1 {
        v13 o4 q6 l8
        ccddeeff erdrc4.r
}
ABC $macro1

記法の問題

現在は 「}」 の後、改行せずにMMLを記述しても有効となってしまいますので、下記の例はすべて同等の演奏結果となります。下記の例3や例4のような記述は推奨しません。現バージョンではコンパイルできますが、今後、エラーとなる恐れがあります。

[例1] 正しい記法

A {
  cdef
  gab>c
}
[例2] 正しい記法

A {cdef
  gab>c}
[例3] 誤った記法

A {cdef
  }gab>c
[例4] 誤った記法

A {cdef}gab>c

 区切り記号

:」(コロン)の内部処理はタブや半角空白と同等で、それ自体に意味を持ちません。ドライバマクロコンパイラマクロの終了、及びPSG音色定義などの区切り文字として使用できます。

タブや半角空白も区切り文字として使用できますが、視認性を上げたい場合は「:」(コロン)を使用してください。

[例]

!KICK  @0 l#1 (o4d<gd<gd<gd<g)e#16  ; #24
$Snare @1 o3
$Tom   @2 o6
A [16 !KICK r8 $Snare:b8 !KICK !KICK r4 $Tom:b-8]

; キックをドライバマクロで、スネア/タムをコンパイラマクロで演奏。

; 「$Snareb8」とは書けません(マクロ名と認識してしまうため)。
; 「$Snare b8」と書いても構いませんが、
; 以下のように、発音単位が把握しにくくなります。

A [16 !KICK r8 $Snare b8 !KICK !KICK r4 $Tom b-8]

 一行コメント

;」(セミコロン)以降の行端までを無視し、コメントとして扱います。

[例]

A l4 cgegdgfg ; セミコロンより後ろはコメント
; これもコメント

 コメント範囲指定

/**/」 で括った範囲がすべてコメントとなり、コンパイル時に無視されます。複数行のコメントを入れるときやMMLの編集中に便利な機能です。

ネスト(入れ子)の回数に制限はありませんので、「/*a/*b/*c 〜 c*/b*/a*/」 のような記述もできます。この場合、入れ子の中がすべてコメントになります。

なお、「;」(セミコロン)との優先度は同等となっており、先に記述したほうが有効です。「;」によって「/*」をコメントアウトした際、「*/」だけが残っている状態になるとエラーが発生しますのでご注意ください。

また、「/*」だけを記述すると、その位置からテキスト終端までがすべてコメントになります。

[例]

A {	o4 l4
	cdef edc.r8
/*
	efga gfe.r8
	crcr crcr
*/
	l8ccddeeff erdrc4r4
}
; efga gfe.r8 と crcrcrcr がコメントとして無視され、
; cdef edc.r8 l8ccddeeff erdrc4r4 が演奏される
[例]

A {	o4 l4
	cdef edc.r8
	efga /* gfe.r8
	crcr crcr */
	l8ccddeeff erdrc4r4
}
; この場合は gfer8. と crcr crcr がコメント扱いになり、
; cdef edc.r8 efga l8ccddeeff erdrc4r4 が演奏される
[例]
 
A {	o4 l4
/* 	cdef edc.r8
	efga /* gfe.r8 */
	crcr crcr
*/	l8ccddeeff erdrc4.r
}
; この場合は2段階のネストになるので、
; 最後の l8ccddeeff erdrc4.r のみ演奏される
[例]

;A /* cdef
A gab>c */

; 1行目の「;」によって「/*」がコメントアウトされているので、
; 「*/」だけが検出されてしまい、エラーが発生する