LMML
LMML (LMML Music Macro Language) は MML の方言です。
LMMLの文法
<lmml> := <operator>*
<operator> := <note>
| <rest>
| <set-octave>
| <set-length>
| <set-volume>
| <set-tempo>
| <inc-octave>
| <dec-octave>
<note> := <note-char> <modifier>? <length>?
<note-char> := 'C' | 'D' | 'E' | 'F' | 'G' | 'A' | 'B'
| 'c' | 'd' | 'e' | 'f' | 'g' | 'a' | 'b'
<modifier> := '+' | '-'
<rest> := 'R' <length>? | 'r' <length>?
<length> := <number> <dot>?
<dot> := '.'
<set-ocatve> := 'O' <number> | 'o' <number>
<set-length> := 'L' <number> | 'l' <number>
<set-volume> := 'V' <number> | 'v' <number>
<set-tempo> := 'T' <number> | 't' <number>
<inc-octave> := '>'
<dec-octave> := '<'
<number> := <digit>+
<digit> := '0' | '1' | '2' | '3' | '4'
| '5' | '6' | '7' | '8' | '9'
基本的に大文字小文字を区別しません。また、空白や改行は無視されます。
;から始まる行はコメントとして無視されます。
LMMLの意味論
LMMLにはいくつかのコマンドが存在します。それらのコマンドを並べたものがLMMLのプログラムです。
音符コマンド
C~Bの文字はそれぞれドからシの音を表します。+をつけると半音上がり、-をつけると半音下がります。
音符コマンドの後には音の長さを表す数字をつけることができます。四分音符なら4、八分音符なら8のように指定します。 数字が大きいほど音の長さは短いことに注意してください。
数字が省略された場合は、直近のLコマンドの値が使用されます。Lコマンドが存在しないときは4が使用されます。
さらに、数字の後に.をつけることができます。.は付点音符を表します。
例
C4- ドの四分音符C+8- ド#の八分音符C4.- ドの付点四分音符C+4.- ド#の付点四分音符
休符コマンド
Rは休符を表します。音符コマンドと同様に長さを表す数字と.をつけることができます。
Lコマンド
音符の長さをセットします。音符コマンドの後に数字をつけなかった場合はこのコマンドの値が使用されます。詳細は音符コマンドの節を参照してください。
なお、Lコマンドに.をつけることはできません。
Oコマンド
オクターブの値をセットします。オクターブの初期値は4で、値が大きいほど音が高くなります。オクターブ4のドは440Hzです。
>コマンド
オクターブの値を1増やします。
<コマンド
オクターブの値を1減らします。
Vコマンド
音の大きさをセットします。具体的な仕様は未定ですが、初期値が10で値が大きいほど音が大きくなります。
Tコマンド
テンポをセットします。値は1分間に四分音符が鳴る回数を表します。初期値は120です。
lmmlクレート
LMMLのASTやタイムラインを表すデータ構造を含むクレートです。
lmml-parserクレート
LMMLのパーサーです。
use ;
use parse_lmml;
lmml-cliクレート
LMMLを演奏したり他の形式に変換するためのコマンドラインツールです。
インストール方法
使用方法