- VRC7は変調波(Modulator)と搬送波(Carrier)の2オペレータ6chのFM音源で、アルゴリズムは直列固定です、OPLLのサブセット版と思われます、リズム音源は搭載されていません。
- FM音源てどんな仕組みなの?って人はまず先に下記資料を読んで下さい、解り易く解説されています。
- FM音源研究室
http://synth-voice.sakura.ne.jp/synth-voice/html5/voice-lab00.html - FMシンセシスについて
http://www.shonan-inet.or.jp/~hiro-s/pages/post-tut/fm.html - FM音源講座
&flash(http://www.youtube.com/v/GkltLDlA0Qw,425x355);
- FM音源研究室
目次 
レジスタマップ 
アドレス | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | オペレータ |
00 | AM | VIB | EG TYP | KSR | MULTI | Modulator | |||
01 | Carrier | ||||||||
02 | KSL | TL | Modulator | ||||||
03 | - | DC | DM | FB | Carrier | ||||
04 | AR | DR | Modulator | ||||||
05 | Carrier | ||||||||
06 | SL | RR | Modulator | ||||||
07 | Carrier |
この値を@OP<num> に設定します。
VRC7 utilityで音色データからレジスタ値を簡単に計算できます。
レジスタの説明 
AM (AmplitudeModulation) 
0~1
- 振幅変調(トレモロ)のスイッチです。
VIB (Vibrato) 
0~1
- ビブラートのスイッチです。
MULTI (Multiple) 
0~15
- 発音するキーに対する倍率が発音周波数となる
例) F(t)=Esin(ωft+Isin(7ωft))
MUL 0 1 2 3 4 5 6 7 8 9 A B C D E F 倍率 1/2 1 2 3 4 5 6 7 8 9 10 10 12 12 15 15
F-Numberによる周波数=ωft
搬送波(Carrier)のMULTIPLE=1
変調波(Modulator)のMULTIPLE=7
TL (TotalLevel) 
0~63
- エンベロープジェネレータの出力に対して減衰量を加算し、音色の制御をするための値です。
最小分解能は0.75dBで、最大47.25dBまで変調度を絞り込むことができます。TL D5 D4 D3 D2 D1 D0 減衰量(db) 24 12 6 3 1.5 0.75
DC (DistortionCarrier) 
0~1
- 搬送波(Carrier)の波形を半波整流します。0:正弦波 1:半波整流波
DM (DistortionModulator) 
0~1
- 変調波(Modulator)の波形を半波整流します。0:正弦波 1:半波整流波
FB (FeedBack) 
0~7
- 第1スロット(Modulator)のフィードバックFM変調の変調度を与えます。
FB 0 1 2 3 4 5 6 7 変調度 0 π/16 π/8 π/4 π/2 π 2π 4π
- フィードバックするとかなり強烈で複雑な倍音を得られますが、設定はかなり複雑になります。
KSL (KeyScaleLevel) 
0~3
- 多くの自然楽器は音程が高くなるほど減衰します、それをシミュレートします。
※OPLシリーズの資料では減衰量1.5と3でbitが逆になっており間違っているらしい。
KSL 減衰量 D7 D6 (dB/OCT) 0 0 0 10011.5 01103 1 1 6
(参考:RuRuRuさんChabinn
さんの発言より1
2
3
)
- 3db/OCT(オクターブ)の場合の各F-Number(周波数レジスタ)での減衰量
F-Numberは上位4ビットの値
\OCT F-Num 0 1 2 3 4 5 6 7 0 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1 0.000 0.000 0.000 0.000 0.000 3.000 6.000 9.000 2 0.000 0.000 0.000 0.000 3.000 6.000 9.000 12.000 3 0.000 0.000 0.000 1.875 4.875 7.875 10.875 13.875 4 0.000 0.000 0.000 3.000 6.000 9.000 12.000 15.000 5 0.000 0.000 1.125 4.125 7.125 10.125 13.125 16.125 6 0.000 0.000 1.875 4.875 7.875 10.875 13.875 16.875 7 0.000 0.000 2.625 5.625 8.625 11.625 14.625 17.625 8 0.000 0.000 3.000 6.000 9.000 12.000 15.000 18.000 9 0.000 0.075 3.750 6.750 9.750 12.750 15.750 18.750 10 0.000 1.125 4.125 7.125 10.125 13.125 16.125 19.125 11 0.000 1.500 4.500 7.500 10.500 13.500 16.500 19.500 12 0.000 1.875 4.875 7.875 10.875 13.875 16.875 19.875 13 0.000 2.250 5.250 8.250 11.250 14.250 17.250 20.250 14 0.000 2.625 5.625 8.625 11.625 14.625 17.625 20.625 15 0.000 3.000 6.000 9.000 12.000 15.000 18.000 21.000
1.5dB/OCTは上記の1/2倍
6dB/OCTは上記の2倍
KSR (KeyScaleRate) 
0~1
- 多くの自然楽器は、音程が高くなるほど、音の立ち上がり、立ち下がりが速くなります。それをシミュレートするスイッチです。
- キースケールオフセット
※F-Num MSBは周波数レジスタの最上位ビット 各レイトでの立ち上がり、立ち下がり時間も参照して下さい。
0 1 2 3 4 5 6 7 オクターブ 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 F-Num MSB 0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3 KSR=0 Rks 0 1 2 3 4 5 6 7 8 9 12 11 12 13 14 15 KSR=1
EGTYP (EnvelopeGeneratorType) 
0~1
- 減衰音か持続音かの切り替えをします。0は減衰音、1が持続音です。
※SUS ON:ppmckではサスティンOn/Offは制御できません。
(因みにSUS ONの場合はRRが5になるだけなので、RRを5とすればSUS ONの代わりになります)
AR (AttackRate) 
0~15
- 音の立ち上がり時間の設定です。数値が大きいほど速くなります。
各レイトでの立ち上がり、立ち下がり時間を参照して下さい。
DR (DecayRate) 
0~15
- アタック後の減衰時間を決めます。数値が大きいほど速くなります。
各レイトでの立ち上がり、立ち下がり時間を参照して下さい。
SL (SustainLevel) 
0~15
- アタック後、減衰してくるボリュームです。このボリュームまで下がったあと持続音ならその音量がずっと保たれ、減衰音なら後述のリリースで決められたスピードでさらに減衰します。
SL D7 D6 D5 D4 減衰量(dB) -24 -12 -6 -3
RR (ReleaseRate) 
0~15
- 音の消えていく時間の設定です。数値が大きいほど速くなります。
- RATEは、キースケール(KSR)後のRATEです。
また、レイトの値を上位4ビット(RM)と下位2ビット(RL)に分割してRM-RLと表しています。
- RATE=RMx4+RL
RM:AR,DR,RRの値
RL:Rksの値、3を超えた値はRMに桁上がり(RKsはKSRを参照)
- 各レイトでの立ち上がり、立ち下がり時間
レイトが「0」の場合は、エンベロープは変化しません。
RATE EG decay time[ms] EG attack time[ms] RM RL 0dB-40dB 10%-90% 0dB-40dB 10%-90% 15 3 1.27 0.52 0.00 0.00 15 2 1.27 0.52 0.00 0.00 15 1 1.27 0.52 0.00 0.00 15 0 1.27 0.52 0.00 0.00 14 3 1.47 0.60 0.14 0.10 14 2 1.71 0.68 0.18 0.12 14 1 2.05 0.82 0.22 0.14 14 0 2.55 1.03 0.28 0.18 13 3 2.94 1.21 0.30 0.22 13 2 3.42 1.37 0.34 0.22 13 1 4.10 1.65 0.42 0.26 13 0 5.11 2.05 0.50 0.32 12 3 5.87 2.41 0.54 0.36 12 2 6.84 2.74 0.60 0.38 12 1 8.21 3.30 0.70 0.44 12 0 10.22 4.10 0.84 0.54 11 3 11.75 4.83 0.97 0.64 11 2 13.68 5.47 1.13 0.72 11 1 16.41 6.60 1.37 0.84 11 0 20.44 8.21 1.69 1.09 10 3 23.49 9.65 1.93 1.29 10 2 27.36 10.94 2.25 1.45 10 1 32.83 13.19 2.74 1.69 10 0 40.87 16.41 3.38 2.17 9 3 46.99 19.31 3.86 2.57 9 2 54.71 21.88 4.51 2.90 9 1 65.65 26.39 5.47 3.38 9 0 81.74 32.83 6.76 4.34 8 3 93.97 38.62 7.72 5.15 8 2 109.42 43.77 9.01 5.79 8 1 131.31 52.78 10.94 6.76 8 0 163.49 65.65 13.52 8.96 7 3 187.95 77.24 15.45 10.30 7 2 218.84 87.54 18.02 11.59 7 1 262.61 105.56 21.88 13.52 7 0 326.98 131.31 27.03 17.38 6 3 375.90 154.48 30.90 20.60 6 2 437.69 175.07 36.04 23.17 6 1 525.22 211.12 43.77 27.03 6 0 653.95 262.61 54.07 34.76 5 3 751.79 308.96 61.79 41.19 5 2 875.37 350.15 72.09 46.34 5 1 1050.45 422.24 87.54 54.07 5 0 1307.91 525.22 108.13 69.51 4 3 1503.58 617.91 123.58 82.39 4 2 1750.75 700.30 144.18 92.69 4 1 2100.89 844.48 175.07 108.13 4 0 2615.82 1050.45 216.27 139.03 3 3 3007.16 1235.82 247.16 164.78 3 2 3501.49 1400.60 288.36 185.37 3 1 4201.79 1688.95 350.15 216.27 3 0 5231.64 2100.89 432.54 278.06 2 3 6014.32 2471.64 494.33 329.55 2 2 7002.98 2801.19 576.72 370.75 2 1 8403.58 3377.91 700.30 432.54 2 0 10463.30 4201.79 865.08 556.12 1 3 12028.66 4943.28 988.66 659.11 1 2 14006.80 5602.39 1153.43 741.49 1 1 16807.20 6755.82 1400.60 865.08 1 0 20926.60 8403.58 1730.15 1112.24
リリースレイトの減衰時間は、ディケイレイトの表と同じ
OPLLでの楽音の作り方 
下記はYM2413アプリケーションマニュアルから抜粋させて頂きました。
この章では、OPLLのオリジナル音色レジスタに、どのような値を入力すると、ピアノやブラスなどの楽音を作ることができるかを説明します。
1.音作りの考え方 
FM方式での音作りの基本は、まず作りたい楽器の特徴をよく理解することです。例えば、ピアノであれば、鍵盤を押したときに、鋭い音の立ち上がりがあり、その後、押鍵を続けていれば、徐々に音が消えて行くエンベロープを持っています。また、倍音の構成も立ち上がり時に多く、時が経つに連れて倍音の数は少なくなり、一定の倍音構成に近づいて行きます。
以上のような特徴をつかんだ後、FMの式でいかにして実現するかを考えます。エンベロープの特徴から出力振幅を、そして倍音構成から変調指数を決めることができます。また、倍音の構成はオペレータの周波数も関与していますから、周波数比もある程度決めることができます。このように、各楽音の特徴からFMの各パラメータをおおまかに決め、その次に音を聞きながら細部をつめてゆくようにすれば、望みどおりの音色を得ることができます。
2.音作りの基本 
FM音源とは、モジュレータによってキャリアを変調することから生じる効果を利用したものです。したがって、FMの基本式パラメータ(キャリアの出力レベル、モジュレータの出力レベル、モジュレータのフイードバックレベル、キャリアの周波数、モジュレータの周波数)を上手に扱うことにより、各楽音のピッチ、音色、音量のすべてを決めることができます。このFMの各パラメータとOPLLのパラメータとの関係は、表のとおりです。
表 OPLLの音作りの基本
項目 | 関与するパラメータ | MIN←(音の変化)→MAX |
キャリアの出力レベル | TOTAL LEVEL (A/D/S/Rの各データ、KeyScaleデータ) | 音量小←→音量大 |
モジュレータの出力レベル | 丸い音色←→明るい音色 | |
モジュレータのフイードバックレベル | FB | 普通の音色←→鋭い音色(Noise) |
キャリアの周波数 | MULTIPLE (BLOCK/F-Number) | ピッチ低←→ピッチ高 |
モジュレータの周波数 | 近い倍音←→離れた倍音 |
3.音作りの例 
- エレクトリックピアノ
- オペレータの周波数の決定
整数倍の高調波をすべて出すために、2つのオペレータともにMULTIPLEは「1」を使います。
(増加は整数倍数によります。) - オペレータの出力レベル
今度はモジュレータの出力を変更して音色を調整します。このとき、オペレータ1のレベルを決めるときには、低音部がまずピアノらしいリッチな高調波を得られるように設定し、それから高音にかけての変化はオペレータ1のレベルスケーリングで調整します。高音部ではほとんど正弦波になる位までレベルスケーリングをする必要があります。 - EGの設定
ここでは音量と音色のエンベロープを決めます。まず、オペレータ2はアタックを鋭く、しかもある程度長く伸びるエンベロープにします(これは程度を変えさせることができます)。モジュレータになるオペレータ1では立ち上がりだけ倍音が多く、あとは一定にして音色変化はさせません。音量調整としてオペレータ2についてもキースケーリングをかけます。また、高音部にかけて音のシャープさを出すためには、RATEのスケーリングを行うとよいでしょう。 - データの再調整
以上で音作りはほぼ終了ですが、EGなどのセッティングにより音色が幾分違ったものになってきます。この場合、オペレータの出力レベルやフイードパックレベルを再調整して、最終的な音に仕立てます。例えば、金属的な響きが強すぎると思われる場合には、オペレータ1のレベルを下げます。 - エフェクト付け
最後にエレクトリックピアノの音をより生かすために、トレモロ効果をLFOによって付加します。これは内蔵の振層変調の機能を利用してもよいですし、ソフトウェアでTOTAL LEVELの値を2~6Hzの周期で更新(三角波で可)することも可能です。
- オペレータの周波数の決定
- トランペット
- オペレータ出力
モジュレータであるオペレータ1のトータルレベルは$1O~$28程度の控えめな値にし、フイードバックレベルはブライトな響きを出すために最大の「7」にします。 - オペレータの周波数
基本的には、両方のオペレータ共に1倍にセットすればよいでしょう。 - EG
2つのオペレータとも、ゆっくりとしたアタック音にします。そしてブラスのサウンドではモジュレータのアタックはすべてキャリアよりも遅くします。「プァン」というブラス特有のアタックを表現するのに必要なことです。 - キースケーリング
ゆっくりとした立ち上がりにエンベロープをセットしたため、高音部でハギレが悪くなります。このため、速いパッセージを弾いたときに不自然にならないように、レイトスケーリングを少しかけます。 - LFO
ブラスはどんな上手なプレーヤーが吹いても、ロングトーンの場合にはピッチがほんの少し揺れてきます。これを表現するためにビブラート効果を加えます。
- オペレータ出力
参考資料 
- この文章は下記を参考に記述しております。
- OPLL YM2413アプリケーションマニュアル
http://d4.princess.ne.jp/msx/datas/OPLL/YM2413AP.html - YM2413 Application Manual
http://www.smspower.org/maxim/Documents/YM2413ApplicationManual - MSX2/2+:BASIC命令セット3 FM-MUSIC/SCC上級編 FM音色エディタMPKED
https://geolog.mydns.jp/www.geocities.jp/fullmsx2/u-yan/music/m-fm3.html
- OPLL YM2413アプリケーションマニュアル
- 参考:VRC7の音色例