FPGA 版 FM 音源 (83) -- TX7 (OPS) 測定 (10)
オペレータ出力周り、サイン波テーブルの仕様について調べています。
結論から言うと、サイン波テーブルは 1 周期 4096 エントリ、減衰量として格納されている 2 を底とする対数のフォーマットは整数部 4 ビット、小数部 10 ビットのようです。
1 周期 4096 エントリなので、1 周期が 8192 サンプル (以上) になるピッチ周波数を選べば、テーブルの全てのエントリに渡って「抜け」がなく、その出力値が 2 個あるいは 3 個以上繰り返して出力されるようにできます。
オリジナルの源発振周波数 9.4265 MHz に対しては、
9.4265 [MHz] / (192 × 8192) = 5.993 [Hz]
となります。
「楽音」としてのピッチでは、MIDI ノート・ナンバー 6 の F# の音 (11.562 Hz) の 1 オクターブ下の 5.781 Hz が条件を満たします。
MIDI ノート・ナンバーの表現範囲外なので、音色パラメタのオペレータ周波数設定の「Freq Coarse」で「0」を選んで、「0.5 倍」の設定にする必要があります。
パラメタの「トランスポーズ」の設定で 1 オクターブ下げる方法は、正常な発振周波数を外れるようでうまく行きません。
そうやってキャプチャしたサイン波形のゼロクロス点付近のグラフを下に示します。
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
FPGA 版 FM 音源 (79) -- TX7 (OPS) 測定 (6)
今回はソフトウェアについて触れます。
まず、DMA チャネルの初期化部分のソースを下に示します。 16 ビット・パラレル・データ転送を 8 ビット DMA ふたつ (DMA_H, DMA_L) で実現しており、両者の内容はほとんど同じなので、代表として DMA_L の方だけを示します。