# -------------------------------------------
# Tone & Velocity & NoiseNote & Arpeggio Envelope 定義
# -------------------------------------------

# 先頭の数字はプログラムチェンジ番号、またはノートNo（ノイズTR4は+1000）です。
# その他、音源ごとにオフセットが付きます（MMC5は内部音源と同じなので有りません）
# FDS.2000　VRC6矩形.3000　V6鋸.4000　VRC7.5000　N16x.6000　Sun5B.7000
# VRC6鋸波は音色は変わりませんが音量を区別するためにそうなってます。
# 三角波（TR3）もEvが付きます。ベロシティが100位だとビヨビヨします（5段階）

# 現時点では波形メモリ系やFMはそのままではなりません。
# それ用の音色指定を別途MMLに入れ直す必要があります…


#　以下の記号は使ってもエラーにはなりません（スルーします）

# Dn : 前の数値をn+1回繰り返す。例　{15　D2}　→　{15 15 15 15}

# R  : 以降はリリースのエンベロープ。Rの前後にスペースなしで数字が有ると異常終了します

# L  : 以降をループ（Rが有る場合はRまで。Lの前後にスペースなしで数字が有ると異常終了します

# -------------------------------------------

[EvMap]

#　音量、ベロシティ127の時のを記述する。それ以下はソフト側で雑に減算します。

# -------------------------------------------

28	{15 15 13 10 7 6 5 4 D2 3 R 0}
80	{8 9 10 11 12 13 12 11 D1 10 D1 9 D2 8 D2 7 D3 6 D5 5 D6 4 D8 3 R 3 2 1 0}

3049	{9 10 11 12 13 14 15 D3 14 D3 13 D3 12 D3 11 D3 10 D3 9 D3 8 D3 7 D3 6   R 6 5 4 3 2 1 0}
3062	{15 D1 14 D0 13 D0 12 D0 11 D1 10 D1 9 8 7 6  R 0}
4035	{30 28 26 24 22 21 20 18 16 14  R 5 4 3 2 1 0}


1038	{15 14  13 12 11 10 9 8 7 6 5 4 3 2 1 0 }
1044	{9 R 0}

1049	{15 D2 14 D2 13 D2 12 D3 11 D3 10 D3 9 D3 8 D3 7 D3 6 D3 5 D3 4 D3 3 D3 2 D3 1 D3 0}

2034	{24 23 22 21 20 R 10 6 2 0}

5028	{14 D0 13 D1 12 D 11 D3 10 D3 9}
5035	{11}
5049	{10 D2 11 D2 12 D2 13 D4 12 D5 11 D6 10 }
5062	{13 D3 12 D3 11 D3 10}
5080	{14}

6001	 {15 14 13 12 11 10 D2 9 D2 8 D2 7 D2 6 D3 5 D5 4 D5 3 D5 2 R 5 4 3 2 1 0}

6017	{14 R  4   7   4  2  0}

6082	{10 R 6 8 6 4 2 0}
6083	{10 R 6 8 6 4 2 0}



# -------------------------------------------

[E@Map]

#　音色。デューティー比、長州期短周期ノイズなど

# sun5bは64を設定しないとノイズしか出ません。

# -------------------------------------------


28	{0 0 1}
80	{L 2}

3049	{L 4 4 5 5}
3062	{2}

1042	{0}
1044	{0}
1049	{1 0}
1057	{1 0}
1051	{1 1 0}

1053	{1}


# -------------------------------------------
#　FDSの音色設定
#　@FCx→wt.txtのFDSCMapのFDSC(x)を読み込む。必須。
#　@FFx→モジュレーターの周波数を指定します。1（低周波）～4095（高周波）FM変調しないなら不要。
#　@FMx→wt.txtのFDSMMapのFDSM(x)を読み込む。FM変調しないなら不要。
#　上に続く,sbx→モジュレーターのsweep bias。0～127。FM変調しないなら不要。
#　その後の単純数字→モジュレータのゲイン。0～63FM変調しないなら0。必須。
# -------------------------------------------

#2034	{@FC0 @FF0 @FM0,sb0 00}

2034	{@FC0 0}


# -------------------------------------------
#　VRC7の音色設定
#　単純数字のみの場合→1～15の場合はプリセットの音色を使用します。
#　内訳はhttps://wikiwiki.jp/mck/MML%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9#bfc35652
#　0の場合はユーザー音色になります。@Vxで音色定義を指定する必要があります。以下。
#　@Vx→wt.txtのVrc7UMapのVRC7(x)を読み込む。必須。
#　
#　その後の単純数字→0なら定義そのままの音。
#　32～127を設定するとユーザー定義の一部をフレーム単位で変更できます。
#　詳しくは　https://shaw02.github.io/nsdlib/mml_voice.html
#　
# -------------------------------------------


5001	{@V0 0 32 48 64}

5028	{2}
5035	{13}
5049	{12}
5062	{7}
5080	{4}

# -------------------------------------------
#　N16xの音色設定
#　@Nx→wt.txtのN16xMapのN163(x)またはN(x)を読み込む。RAM容量内に収まるならば複数設定可能。必須。
#　
#　単純数字→読み込んだサンプルのメモリ上の開始点。MML上で指定する場合とは異なります。
#　通常は0を設定します。MML変換時に書き込む番地を自動設定しこの値に＋します。必須。
#　複数@Nxを読み込む場合は、次の@Nxを読み込むまでのフレーム数を0でカウントします。
#　または他の音源同様「0 D4」のように繰り返し記号も使えます。
#　
#　
#　@Nxに続く,skx→使用するサンプル数。指定できるのは4の倍数です。
#　例えば64サンプルの波形を読み込んで32サンプル分使うみたいなことができます。
#　上で説明した単純数字で読み出し位置を変更できます。
#　「@Nx,sk32 4」と設定した場合@Nxの先頭から16サンプル後ろを32サンプルを使う。といった感じです。
#　読み込んだサンプル以上の値も設定できますが予測不能な音になるでしょう。
#　指定サンプル数で音程補正がなされます。
#　
#　ちなみに,ssとした場合は音程補正がされません。先頭に書かれている音色に,ss256とすると
#　NsfPlayで再生時にn16xの波形メモリ兼チャンネル制御レジスタが波形として覗けます。
#　
# -------------------------------------------


#6001	{@N2 0 D3 @N4 0 D3 @N5 0 D4 @N06 0}

6001	{@N2 0 D3 @N4 0 D3  @N06 0}

6017	{@N3 0 }
6034	{@N4 0}

6082	{@N8,sk32 4 D19 L 4 D1 3 D1 2 D1 3 D1 4 D1 5 D1 6 D1 5 D1}
6083	{@N8,sk32 4}
6081	{@N10 0}

# -------------------------------------------

[EnMap]

# ノイズトラックの音程
# 0～15の16通り。それ以外の範囲はループ。-2は13、18は2相当

# -------------------------------------------

1038	{7 L 3 4}
1044	{L 10}
1049	{14 10 L 8 D0 9 D0 }

# -------------------------------------------

[ApMap]

# 和音時の高速アルペジオ設定
# または強制アルペシオ（三角波ドラム等　


# 先頭の英数字の意味。

# 数字のみ	プログラムチェンジ（E＠）に合わせて読み込む。無い場合は{L U1}

# E＋数字	トラックにCC12が有り、
		値が 1～ 63の場合、和音より前または同時に指定されたものを優先的に読み込む。
		値が64～127の場合、和音に関係なく適応する。
		値が	　0の場合、プログラムチェンジ優先。


# {}内の数字、記号の意味。
# 数字	そのままEn値へ入力
# Ux	和音の下から上に向かって変化。後ろに付く数字は1音の繰り返し回数。
# Dx	和音の上から下に向かって変化。後ろに付く数字は1音の繰り返し回数。
# L	ループポイント

# 67/69/74の和音の場合


# 1	{12 L U1 D1}	→	E(30000x) {12 L 0 2 5 5 2 0}	//Ap 1
# E1	{L U2}		→	E(30000x) {L 0 0 2 2 5 5}	//Ap E1
# 5	{L D3}		→	E(30000x) {L 5 5 5 2 2 2 0 0 0}	//Ap 5
# 10	{L D1 12 U1}	→	E(30000x) {L 5 2 0 12 0 2 5}	//Ap 10
# 64	{L 0 2 5}	→	E(30000x) {L 0 2 5}	//Ap 64


# -------------------------------------------



E64	{0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30  L -31}
E65	{12 9  6  3  0  -3 -6 -9 -12 -15 -18 -21 -24 -27 -30  L -33}

62	{L U2}



# -------------------------------------------

[EmoMap]

# 先頭の数字がモジュレーション(CC1)の値に対応します。
# cc1の値が0の場合は無効とし、1～127の場合は有効とます。
# cc1の値が1の場合、1または1以上のエンベロープを読み込みます。


# -------------------------------------------

64	{0 D6 L 1 D2 0 D2 -1 D2 0 D2}
96	{0 D3 L 1 2 2 1 0 -1 -2 -2 -1 0 }
127	{0 D10 L 1 2 3 2 1 0 -1 -2 -3 -2 -1 0 }









