FPGA 版 FM 音源 (80) -- TX7 (OPS) 測定 (7)

TX7 本体の操作では「音色」のエディットはできませんが、「INIT VOICE」機能でエディット・バッファ中の音色パラメタの「初期化」は可能です。 初期化後の音色パラメタ値を下に示します。
(2018 年 7 月 4 日追記: 「TP」パラメタの値の表示位置が間違っていて PEG の各パラメタもずれて表示されていたのを修正しました。)

"INIT VOICE"

       ______LFO________ _PEG_Rate__ _PEG_Level_   
 AL FB WF SP DY PD AD SY R1 R2 R3 R4 L1 L2 L3 L4 TP
  1  0  0 35  0  0  0  1 99 99 99 99 50 50 50 50 24

____Oscillator___ __Envelope_Generator___ ___Key_Scaling___ OPout  Mod
  Mode ___Freq___ ____Rate___ ___Level___    Curve/Depth           Sens
OP M S CO Fine DT R1 R2 R3 R4 L1 L2 L3 L4 BP  L  R  L  R RS OL VS  P  A
1: 0 1  1 1.00  0 99 99 99 99 99 99 99  0  0  0  0  0  0  0 99  0  3  0
2: 0 1  1 1.00  0 99 99 99 99 99 99 99  0  0  0  0  0  0  0  0  0  3  0
3: 0 1  1 1.00  0 99 99 99 99 99 99 99  0  0  0  0  0  0  0  0  0  3  0
4: 0 1  1 1.00  0 99 99 99 99 99 99 99  0  0  0  0  0  0  0  0  0  3  0
5: 0 1  1 1.00  0 99 99 99 99 99 99 99  0  0  0  0  0  0  0  0  0  3  0
6: 0 1  1 1.00  0 99 99 99 99 99 99 99  0  0  0  0  0  0  0  0  0  3  0


この初期化データでは、左に示す「アルゴリズム 1」が選択されており、「キャリア」であるオペレータ 1 のみが出力レベル (OL) 最大値の 99 の設定になっており、他のオペレータ出力レベルは 0 (最小値) となっていて、モジュレーションはかりません。
結局、オペレータ 1 に由来する無変調の正弦波だけが出力されるようになっています。
DX7/TX7 では、「キャリア」となるオペレータの数に応じて、出力レベルが自動的に調整され、キャリア数の多いアルゴリズムの場合に加算された最終出力のレベルが過大になるのを防いでいます。
アルゴリズム 1 はキャリア 2 個なので、オペレータ 1 および 3 それぞれの出力レベルが、キャリア数 1 のアルゴリズムでのオペレータ出力レベルの 1/2 になるように自動で調整されます。
また、INIT VOICE ではKVS (Key Velocity Sens) は「0」に設定され、ノート・オン・メッセージのベロシティ値にかかわらず、オペレータ出力レベルは一定となります。
この INIT VOICE での出力をキャプチャし、グラフとして表示したものを示します。

赤色のトレースが SF/DA 値から計算した「リニア値」で、青色のトレースが DA データの「仮数部」のみを (2 の補数に変換した上で) プロットしたものです。
正弦波の正負のピーク値は、それぞれ 4280 と -4288 となっています。

「INIT VOICE」で得られる音色データでは、オペレータ出力は最大とはなりません。
そこで、左に示すキャリア数 1 となるアルゴリズム 17 を選択し、KVS も感度最大の「7」に選んだ音色データを下に示します。
「INIT VOICE」との違いは (音色名を変更したのを除けば) その 2 ヵ所だけです。
KVS = 7 (感度最大) でベロシティ値が最大の 127 の場合には、KVS = 0 の場合の出力レベルを基準として、その 1.55 倍の出力レベルが得られます。
キャリア数、KVS の効果を総合すると、INIT VOICE の場合の約 3 倍の振幅の出力となります。

(2018 年 7 月 4 日追記: 「TP」パラメタの値の表示位置が間違っていて PEG の各パラメタもずれて表示されていたのを修正しました。)

"ALG17_VS7 "

       ______LFO________ _PEG_Rate__ _PEG_Level_   
 AL FB WF SP DY PD AD SY R1 R2 R3 R4 L1 L2 L3 L4 TP
 17  0  0 35  0  0  0  1 99 99 99 99 50 50 50 50 24

____Oscillator___ __Envelope_Generator___ ___Key_Scaling___ OPout  Mod
  Mode ___Freq___ ____Rate___ ___Level___    Curve/Depth           Sens
OP M S CO Fine DT R1 R2 R3 R4 L1 L2 L3 L4 BP  L  R  L  R RS OL VS  P  A
1: 0 1  1 1.00  0 99 99 99 99 99 99 99  0  0  0  0  0  0  0 99  7  3  0
2: 0 1  1 1.00  0 99 99 99 99 99 99 99  0  0  0  0  0  0  0  0  0  3  0
3: 0 1  1 1.00  0 99 99 99 99 99 99 99  0  0  0  0  0  0  0  0  0  3  0
4: 0 1  1 1.00  0 99 99 99 99 99 99 99  0  0  0  0  0  0  0  0  0  3  0
5: 0 1  1 1.00  0 99 99 99 99 99 99 99  0  0  0  0  0  0  0  0  0  3  0
6: 0 1  1 1.00  0 99 99 99 99 99 99 99  0  0  0  0  0  0  0  0  0  3  0

キャプチャ結果のプロットを下に示します。

正弦波の正負のピーク値は、それぞれ 13400 と -13400 となっています。
もとのグラフでは潰れて見えにくいゼロ付近を拡大してプロットしたものを示します。

上記の結果から、「倍率」の境界での値をまとめると下のようになります。
「DA 値」はオフセット・バイナリ表現である DA12 〜 DA1 の 12 ビット DAC データをそのまま 16 進数で表示したもの、「仮数部」は DAC データを 2 の補数表示に変換したもの、「リニア値」は「倍率」×「仮数部」を計算したものです。

リニア値 倍率 仮数 DA 値
 16376 8x  2047 0xFFF
  2048 8x   256 0x900
  2044 4x   511 0x9FF
  1024 4x   256 0x900
  1022 2x   511 0x9FF
   512 2x   256 0x900
   511 1x   511 0x9FF
  -512 1x  -512 0x600
  -514 2x  -257 0x6FF
 -1024 2x  -512 0x600
 -1028 4x  -257 0x6FF
 -2048 4x  -512 0x600
 -2056 8x  -257 0x6FF
-16384 8x -2048 0x000

リニア値 16376 〜 2048、および -2056 〜 -16384 の範囲は「8x」のスケールの数として表現されています。
フルスケール波形に対しては、「8x」の範囲を 16376 〜 8192、-8200 〜 16384 と取るのが最適と思われますが、推測すると、振幅 4096 程度の波形を最適化の対象として選んでいると思われます。