- MML(Music Macro Language)とは、マクロを用いて音楽(楽譜)を記述する言語です
- VGSのMMLは、一般的なMMLと概ね互換性のある標準的な書式になっています
- 東方BGM on VGSのMMLを全曲公開しているので、そっちを見るのが手っ取り早いです
VGSのMMLではマクロを定義できます。
$Hoge abcdefg
$Hige (Hoge) (Hoge)
$Hage (Hige) (Hige)
上記のように定義した場合、以下のように解釈されます。
- Hoge =「abcdefg」
- Hige =「abcdefg abcdefg」
- Hage =「abcdefg abcdefg abcdefg abcdefg」
マクロを駆使することで、連続した記述をシンプルに記述することができます。 なお、マクロの展開指定「(マクロ)」は、上の方の行で定義済みのマクロしか指定できない点を注意してください。
- VGSの波形メモリ音源は 6チャネル です
- MMLでは各チャネルの情報を「Ch0 xxxxx」~「Ch5 xxxxx」という形式のレコード(行)で定義します。
- チャネル0(Ch0)のエンベロープ、ボリューム、比率は、若干意図しない形で鳴る場合があります
- 再生毎に変化する訳ではないので、これは仕様としています
- MMLの最初の行で「r1024」などのものすごく短い休符を全チャネルで鳴らせばこのCh0の謎仕様を回避できる場合があります
- チャネルレコードには、「Operand specification」に示すオペランド群を定義できます
- オペランドは大文字、小文字を区別しません
- オペランド間の区切り文字は不要です
- 見難い場合は、空白を入れるなどして調整してください
Operand | Description |
---|---|
M数字 |
マスターボリュームを設定します。必ず最初の方に設定してください 後の方で設定すると、適切にフェードアウトできない場合があります |
T数字 |
テンポを設定します
|
@0~3 |
音色を選択します
|
V数字 |
ベロシティーを設定します
|
V+ |
ベロシティーを+の数だけインクリメントします |
V- |
ベロシティーを-の数だけデクリメントします(ベロシティは符号なし整数値なので0未満にならないように気をつけてください) |
O数字 |
オクターブを設定します
|
< |
オクターブをデクリメントします |
> |
オクターブをインクリメントします |
L数字 |
分解率の省略値を定義します
|
%数字 |
キーオフのタイミングを設定します 例えば%50で全音符を鳴らした場合、キーオフは2分音符分の長さの後になります |
\S数字 |
キーオンしてから出力が最大になるまでの時間をHz(1秒は22050Hz)で指定します(開始時エンベロープ) |
\E数字 |
キーオフしてから消音状態になるまでの時間をHz(1秒は22050Hz)で指定します(終了時エンベロープ) |
P-数字 |
自動ノートダウンする間隔をHz(1秒は22050Hz)で指定します
|
R[数字] |
休符です
|
` | ` |
`K{+ | -}` |
- チャネルレコードには、ノートを定義することができます
- ノートとは、「ドレミファソラシ」のことです
- ノートは英字表記で表記します(ドレミファソラシ=CDEFGAB)
- ノートはオペランドと同様、大文字、小文字を区別しません
- また、ノート・オペランド間の区切り文字は不要です
- 見難い場合は、空白を入れるなどして調整してください。
ノートは、A音の場合、次のように表記します。
A[+|-][[数字[^数字]...]
+|-
: シャープ(+)またはフラット(b)の指定です(省略時はナチュラルになります)数字
: 分解率です(オペランドLの説明を参照)^数字
: タイを意味します(何個でも書けます)