定義 - その他
@n
0,@31,1
"noise",-3,5
:
"mix",-1,3]
PSG専用のノイズエンベロープです。モードは0〜3、もしくは"tone","noise","mix","off"で、
- 0="tone"=トーン
- 1="noise"=ノイズ
- 2="mix"=ノイズとトーン
- 3="off"=ノイズ、トーン両方オフ
となっています。数値指定、文字列指定のどちらでも可能です。
ノイズ周波数は数値の前に@を付けると絶対指定で0〜31、付けないと相対指定で-31〜31。クロック値は1〜255。:はループ指定。
@hwe
10,10
:
4,10
"off",10]
ハードウエアエンベロープ値をクロック単位でオンオフするエンベロープです。
エンベロープ値は0〜15に加え"off"が指定できます。クロック値は1〜255。:はループ指定。
@hweと同時に@vを使用している場合、ハードウエアエンベロープが有効な場合は@vの音量コントロールは効きませんが、裏で計算はされている為、 @hweが"off"になったとき、@vのそのときの値が反映されます。
@cye
10,1
:
-1,1
2,3]
PSGのハードウエアエンベロープ周期のエンベロープ定義です。
設定されているエンベロープ周期にエンベロープ周期値を加算していきます。エンベロープ周期は新規発音時に設定値に戻ります。
エンベロープ周期値は-32767〜32767、クロック値は1〜255。:はループ指定。
@m
"m1"
"cdefg"]
マクロ定義コマンドです。
定義名は半角記号、タブが使用できず、マクロ内容も=と=[は含めることができません。マクロ内容には通常のシーケンスデータが入り、ループコマンドを使う場合は括弧の数が合わないと、定義時にはエラーになりませんがマクロ適用時にエラーとなります。
マクロ記述の注意点として、ダブルクォーテーション内でもMMLを解析しています。これは、ダブルクォーテーションがマクロ終了の物なのか定義名の物なのか判別する必要があるためで、@m=["test" "[/"test2"]2"]のような場合の判別に使用しています。基本的にはMMLの文法上エラーがあっても定義中はエラーを出さず、マクロ呼び出し時にエラー出力されるようにしていますが、場合によりその場でエラーが出力されることもあります。
またMMLを解析している都合上、コメントも解析しています。
@m=["test" ";comment"]や@m=["test" "/*comment"]等はコメントが有効なため、定義の終了がコメント扱いされ定義が終了しません。なのでこの場合は改行をして、
@m=["test" ";comment
"]
や
@m=["test" "/*comment*/"]のようにコメントを終了させてから定義を閉じる必要があります。