MML reference: Envelope block

定義(Define)

Envelop(n){
	define
}
E(n){
	define
}

引数(Inputs)

n

エンベロープ番号を指定します。

define

エンベロープのパターンです。
エンベロープパターンの定義は、フレーム毎の推移を数値で指定します。
以下表のコマンドを記述して下さい。

CommandContens
nエンベロープ値
Dn前回のエンベロープ値をn+1フレーム間維持します。
LエンベロープパターンがRコマンド、又はパターン最後まで行った時の戻り先を指定します。
Rコマンドの後に書かれた場合は、キーオフ後のパターンにおける戻り先となります。
Rコマンド前でLコマンドを省略した場合、Rコマンドの直前のコマンドを繰り返します。
Rコマンド後でLコマンドを省略した場合、エンベロープ定義最後のコマンドを繰り返します。
R以後を、キーオフ後のエンベロープパターンとします。
リリースのパターンを指定しない場合、キーオフ後もそのままエンベロープが継続されます(音量エンベロープも含め)。
(start,end,length)startからendまでlengthフレームで変化します。

内容(Contents)

音色、音量、周波数、音程の推移パターンを定義します。
エンベロープ値の設定範囲は以下の通りです。

音色

APU パルス波
0〜3 (0=12.5% / 1=25% / 2=50% / 3=75%)
APU 三角波
音色エンベロープはありません。
APU ノイズ
0〜1 (0=長周期 / 1=短周期)
APU 儕CM
音色エンベロープはありません。
FDS
0〜63 モジュレータのゲイン(音量)
VRC6 パルス波
0〜7 (0=6.25% 〜 7=50%)
VRC6 SAW
音色エンベロープはありません。
VRC7
0〜15 … 音色選択
32〜47 … ユーザ音色ML(M) (32を減算した値)
48〜63 … ユーザ音色ML(C) (48を減算した値)
64〜127 … ユーザ音色TL (64を減算した値)
MMC5
0〜3 (0=12.5% / 1=25% / 2=50% / 3=75%)
N168
0〜63 (指定数値の2倍のアドレスを音色波形にします。)
Sunsoft 5B
0〜31 … ノイズ(値はノイズの周期です)
32〜63 … トーン&ノイズ(値はノイズの周期です)
64 … トーン
96 … 無音

音量

APU パルス波
0〜15
APU 三角波
音量エンベロープはありません。
APU ノイズ
0〜15
APU 儕CM
音量エンベロープはありません。
FDS
0〜63 キャリアのゲイン(LFOの振幅)
VRC6 パルス波
0〜15
VRC6 SAW
0〜63
VRC7
0〜15
MMC5
0〜15
N168
0〜15
Sunsoft 5B
0〜15

周波数(ピッチ)

-64〜63の範囲で指定してください。
数値は、現在発音している音階を基準とした値で、16が100cent(半音)に相当します。

APU及びMMC5で音程を変化させる場合、レジスターのMSBが更新されると位相がリセットされプチノイズが発生します。
レジスターのMSBの更新が近い音程としては以下です。
エンベロープの数値とディチューンの数値の総和を以下表の許容幅の範囲内に留めると、音程レジスタMSB更新によるプチノイズを回避できます。
(ただし、数値の絶対値が16を越える場合は、音程レジスタMSBが更新される場合があります。)

音程許容幅
o1b1 〜
o2d 〜 -2
o2f 〜 0
o2a 〜 -2
o3d 〜 -2
o3a 〜 -2
o4a 〜 -4

音程(ノート)

-64〜63の範囲で指定してください。
数値は、現在発音している音階を基準とした値で、1が100cent(半音)に相当します。

注意(Notes)

MMLコンパイラは、各エンベロープ(音色、音量、周波数、音程)のパターンを一元管理します。
特定の1つのパターンを、どのエンベロープでも使用可能ですが、設定範囲は留意して下さい。

例(Sample)

// frequency envelop "Volume table"
Envelop(0){	15 D10 14 13 12  L 11 11 10 10 9 9 10 10 R 9 8 7 6 5 L 4 4 3 3 2 2 3 3	}
Envelop(1){	(8,15,3),(15,8,100) L 8 R (8,0,3) L 0	}