Envelop(n){
define
}
E(n){
define
}
エンベロープ番号を指定します。
エンベロープのパターンです。
エンベロープパターンの定義は、フレーム毎の推移を数値で指定します。
以下表のコマンドを記述して下さい。
Command | Contens |
---|---|
n | エンベロープ値 |
Dn | 前回のエンベロープ値をn+1フレーム間維持します。 |
L | エンベロープパターンがRコマンド、又はパターン最後まで行った時の戻り先を指定します。 Rコマンドの後に書かれた場合は、キーオフ後のパターンにおける戻り先となります。 Rコマンド前でLコマンドを省略した場合、Rコマンドの直前のコマンドを繰り返します。 Rコマンド後でLコマンドを省略した場合、エンベロープ定義最後のコマンドを繰り返します。 |
R | 以後を、キーオフ後のエンベロープパターンとします。 リリースのパターンを指定しない場合、キーオフ後もそのままエンベロープが継続されます(音量エンベロープも含め)。 |
(start,end,length) | startからendまでlengthフレームで変化します。 |
音色、音量、周波数、音程の推移パターンを定義します。
エンベロープ値の設定範囲は以下の通りです。
v
コマンド値との乗算は行いません)。
-64~63の範囲で指定してください。
数値は、現在発音している音階を基準とした値で、16が100cent(半音)に相当します。
APU及びMMC5で音程を変化させる場合、レジスターのMSBが更新されると位相がリセットされプチノイズが発生します。
レジスターのMSBの更新が近い音程としては以下です。
エンベロープの数値とディチューンの数値の総和を以下表の許容幅の範囲内に留めると、音程レジスタMSB更新によるプチノイズを回避できます。
(ただし、数値の絶対値が16を越える場合は、音程レジスタMSBが更新される場合があります。)
音程 | 許容幅 |
---|---|
o1b | 1 ~ |
o2d | ~ -2 |
o2f | ~ 0 |
o2a | ~ -2 |
o3d | ~ -2 |
o3a | ~ -2 |
o4a | ~ -4 |
-64~63の範囲で指定してください。
数値は、現在発音している音階を基準とした値で、1が100cent(半音)に相当します。
MMLコンパイラは、各エンベロープ(音色、音量、周波数、音程)のパターンを一元管理します。
特定の1つのパターンを、どのエンベロープでも使用可能ですが、設定範囲は留意して下さい。
// 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 }