MML reference: VRC7 User Instrument block

定義(Define)

VRC7(n){
	@TL FB
	AR(M) DR(M) SL(M) RR(M) KL(M) MT(M) AM(M) VB(M) EG(M) KR(M) D(M)
	AR(C) DR(C) SL(C) RR(C) KL(C) MT(C) AM(C) VB(C) EG(C) KR(C) D(C)
}
VRC7(n){
	@Rreg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8
}
@OP(n){
	@TL FB
	AR(M) DR(M) SL(M) RR(M) KL(M) MT(M) AM(M) VB(M) EG(M) KR(M) D(M)
	AR(C) DR(C) SL(C) RR(C) KL(C) MT(C) AM(C) VB(C) EG(C) KR(C) D(C)
}
@OP(n){
	@Rreg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8
}

引数(Inputs)

n

VRC7ユーザー定義音色の番号を指定します。

TL

"Total level"です。0~63で指定して下さい。
トータルレベルは、エンベロープジェネレーターの出力に対して減衰量を加算し、変調度(音色)の制御します。

TL D5D4D3D2D1D0
減衰量 -24dB-12dB-6dB-3dB-1.5dB-0.75dB

FB

"Feedback"です。0~7で指定して下さい。
モジュレータスロットのフィードバックFM変調の変調度です。

FB 01234567
変調度 0π/16π/8π/4π/2π

AR

"Atack rate"です。0~15で指定して下さい。
音の立ち上がり時間の設定をします。

AR,DR,RRの各種レートは、先ず、以下の式で、キースケール後のレートを求めます。
Attack Rate = AR × 4 + Rks
Decay Rate = DR × 4 + Rks
Release Rate = RR × 4 + Rks

Attack time [msec]
Rate0dB - 40dB 10% - 90%
63 0 0
62 0 0
61 0 0
60 0 0
59 0.14 0.1
58 0.18 0.12
57 0.22 0.14
56 0.28 0.18
55 0.3 0.22
54 0.34 0.22
53 0.42 0.26
52 0.5 0.32
51 0.54 0.36
50 0.6 0.38
49 0.7 0.44
48 0.84 0.54
47 0.97 0.64
46 1.13 0.72
45 1.37 0.84
44 1.69 1.09
43 1.93 1.29
42 2.25 1.45
41 2.74 1.69
40 3.38 2.17
39 3.86 2.57
38 4.51 2.9
37 5.47 3.38
36 6.76 4.34
35 7.72 5.15
34 9.01 5.79
33 10.94 6.76
32 13.52 8.96
31 15.45 10.3
30 18.02 11.59
29 21.88 13.52
28 27.03 17.38
27 30.9 20.6
26 36.04 23.17
25 43.77 27.03
24 54.07 34.76
23 61.79 41.19
22 72.09 46.34
21 87.54 54.07
20 108.13 69.51
19 123.58 82.39
18 144.18 92.69
17 175.07 108.13
16 216.27 139.03
15 247.16 164.78
14 288.36 185.37
13 350.15 216.27
12 432.54 278.06
11 494.33 329.55
10 576.72 370.75
9 700.3 432.54
8 865.08 556.12
7 988.66 659.11
6 1153.43 741.49
5 1400.6 865.08
4 1730.15 1112.24
3
2
1
0

DR

"Decay rate"です。0~15で指定して下さい。
アタック後の減衰時間です。

AR,DR,RRの各種レートは、先ず、以下の式で、キースケール後のレートを求めます。
Attack Rate = AR × 4 + Rks
Decay Rate = DR × 4 + Rks
Release Rate = RR × 4 + Rks

Decay / Release time [msec]
Rate0dB - 40dB 10% - 90%
63 1.27 0.52
62 1.27 0.52
61 1.27 0.52
60 1.27 0.52
59 1.47 0.6
58 1.71 0.68
57 2.05 0.82
56 2.55 1.03
55 2.94 1.21
54 3.42 1.37
53 4.1 1.65
52 5.11 2.05
51 5.87 2.41
50 6.84 2.74
49 8.21 3.3
48 10.22 4.1
47 11.75 4.83
46 13.68 5.47
45 16.41 6.6
44 20.44 8.21
43 23.49 9.65
42 27.36 10.94
41 32.83 13.19
40 40.87 16.41
39 46.99 19.31
38 54.71 21.88
37 65.65 26.39
36 81.74 32.83
35 93.97 38.62
34 109.42 43.77
33 131.31 52.78
32 163.49 65.65
31 187.95 77.24
30 218.84 87.54
29 262.61 105.56
28 326.98 131.31
27 375.9 154.48
26 437.69 175.07
25 525.22 211.12
24 653.95 262.61
23 751.79 308.96
22 875.37 350.15
21 1050.45 422.24
20 1307.91 525.22
19 1503.58 617.91
18 1750.75 700.3
17 2100.89 844.48
16 2615.82 1050.45
15 3007.16 1235.82
14 3501.49 1400.6
13 4201.79 1688.95
12 5231.64 2100.89
11 6014.32 2471.64
10 7002.98 2801.19
9 8403.58 3377.91
8 10463.3 4201.79
7 12028.66 4943.28
6 14006.8 5602.39
5 16807.2 6755.82
4 20926.6 8403.58
3
2
1
0

SL

"Sustain level"です。0~15で指定して下さい。
持続音の場合は、ディケイモードでの減衰がこのレベルに到達するとその後はそのレベルを保持するという変化点を指定します。
減衰音の場合は、ディケイモードからリリースモードヘの変化点を指定します。

SL D3D2D1D0
減衰量 -24dB-12dB-6dB-3dB

RR

"Release rate"です。0~15で指定して下さい。
持続昔の場合は、KeyをOFFした時に音の減衰を指定します。
減衰音の場合は、サスティンレベルに達した後の減衰を指定します。

KL

Levelに対するキースケールです。0~3の範囲で指定して下さい。
キースケールのモードは、音程が上がるほどレベルは減衰します。

KL 0123
減衰量 0dB/OCT1.5dB/OCT3dB/OCT6dB/OCT

MT

"Multiple"です。 周波数を制御します。 0~15で指定して下さい。

MT 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
倍率0.51 2 3 4 5 6 7 8 9 10 11 12 13 14 15

AM

撮幅変調のON/OFFスイッチです。0~1の範囲で指定して下さい。
このビットが「1」にセットされたときには、そのスロットには音量LFOがかかります。

VB

ビブラートのスイッチです。0~1の範囲で指定して下さい。
1にすると、そのスロットに音程LFOがかかります。

EG

持続音か減衰音かの切り換えをします。
0 : 減衰音
1 : 持続音

KR

Rateに対するキースケールです。0~1の範囲で指定して下さい。
0 : キースケール無し
1 : キースケール有り

key scale offset
F-BlockF-Number
MSB
Rks
KR=0KR=1
0 0 0 0
0 1 0 1
1 0 0 2
1 1 0 3
2 0 1 4
2 1 1 5
3 0 1 6
3 1 1 7
4 0 2 8
4 1 2 9
5 0 2 10
5 1 2 11
6 0 3 12
6 1 3 13
7 0 3 14
7 1 3 15

D

半波整流のスイッチです。0~1の範囲で指定して下さい。
0 : 正弦波
1 : 正弦波を半波整流した波形

reg1 ~ reg8

VRC7のレジスタ0x00~0x07に書く値をそれぞれ指定します。

内容(Contents)

VRC7のユーザー音色を定義します。
定義先頭が`@'の場合はパラメータベース、定義先頭が`@R'の場合はレジスタベースで音色定義します。
尚、各パラメータの途中にカンマ`,'を記述しても大丈夫です。

FM音源解説

VRC7、OPLLは、正弦波および、それを半端整流した波形を出力する発振器を有しています。
ここでは、説明を簡単にするため、発振器は正弦波を出力するものとし、フィードバックによる変調も割愛します。

周波数変調の式は、
y = Ac sin ( 2πfc × t + Am sin ( 2πfm × t ) )
で表せます。

出力
時間
Ac
キャリアの振幅
fc
キャリアの周波数 ( 角速度ωc = 2πfc)
Am
モジュレータの振幅
fm
モジュレータの周波数 ( 角速度ωm = 2πfc)

振幅Ac、Amは、エンベロープ(AR, DR, SL, RR, KL, KR, EG)と、音量LFO(AM)によって制御されます。
周波数fc、fmは、曲データ中で指定された音程により制御されるF-Number, F-Blockに加え、MT, VBにより制御されます。
(各パラメータについての詳細は、YAMAHA YM2413(Operator Type-LL、OPLL)のデータシートをご参照ください。)

このFM変調の式を、三角関数の公式および、ベッセル関数を使って展開すると、
y = Ac{
 J0 sin(2πfct) +
 J1[sin{2π(fc + 1fm)t} - sin{2π(fc - 1fm)t}] +
 J2[sin{2π(fc + 2fm)t} - sin{2π(fc - 2fm)t}] +
 J3[sin{2π(fc + 3fm)t} - sin{2π(fc - 3fm)t}] +
 J4[sin{2π(fc + 4fm)t} - sin{2π(fc - 4fm)t}] +
 ・・・

という式が得られます。
Jnは、モジュレーターの振幅Amから決まります。

キャリア:モジュレーターの周波数比が1:1の場合

上のFM変調の式をfc=fmとして展開すると、以下の式となります。

y = Ac{
 (J0 - J2) sin (1 × 2πfct) +
 (J1 + J3) sin (2 × 2πfct) +
 (J2 - J4) sin (3 × 2πfct) +
 (J3 + J5) sin (4 × 2πfct) +
 ・・・

と、整数倍の倍音成分を全て含んだ音色が作れます。
つまり、この周波数比ではノコギリ波の様な音色や、弦楽器の音色を作ることができます。

キャリア:モジュレーターの周波数比が1:2の場合

上のFM変調の式をfc=2fmとして展開すると、以下の式となります。

y = Ac{
 (J0 + J1) sin (1 × 2πfct) +
 (J1 - J2) sin (3 × 2πfct) +
 (J2 + J3) sin (5 × 2πfct) +
 (J3 + J4) sin (7 × 2πfct) +
 ・・・

と、奇数倍の倍音成分を全て含んだ音色が作れます。
つまり、この周波数比では矩形波の様な音色や、管楽器の音色を作ることができます。

例(Sample)

VRC7(1){	//Piano
	//	TL FB
	@	18  4
	//	AR DR SL RR KL MT AM VB EG KR DT
		15  1  3  3  2  1  0  0  0  1  1
		15  2  3  1  0  1  0  0  0  1  0
}