FM音源プログラム (2) -- EG (2)

音色データ中の EG パラメータの値のいくつかについて、その意味を説明します。

OPL3 チップの詳細資料

FM音源プログラムを作り始めたときに、YAMAHA MA-2 チップのレジスタレベルの詳しい資料を探したのですが見つかりませんでした。

MA-2 の音源部は OPL3 のマイナーチェンジ版という感じなので、OPL3 系のチップのレジスタレベルの資料を元に、足りない部分は類推しました。
ヤマハの web サイトには簡易版のデータシートしかありません。 検索して詳細な資料を見つけたのですが、その URL を直接に示すのは問題があるかも知れないので、ヒントを示すにとどめます。
資料の名称は「YMF715x (OPL3-SA3) -Register Description Document-」で、ファイル名は「sax-rege.pdf」です。 以降は、この資料を「rege」と略します。
ファイルが存在する場所は、「なるほど」と納得できる場所です。
その他、「HERO」さんの web サイトに OPL3 の詳細資料を整理してまとめた、コンパイル済み Windows ヘルプファイルフォーマット (.chm) の和文のファイルがあります。 ファイル名は「SOUND.CHM」です。

音色データ中の EG パラメータ

音色データ中の EG およびオペレータ出力レベル関連パラメータとしては、

  • AR (Attack Rate) 4 bit
  • DR (Decay Rate) 4 bit
  • SL (Sustain Level) 4 bit
  • RR (Release Rate) 4 bit
  • TL (Total Level) 6 bit
  • KSR (Rate Key Scale) 1 bit
  • KSL (Level Key Scale) 2 bit
  • DAM (Amplitude Modulation Depth) 2 bit
  • AM (Amplitude Modulation flag) 1 bit
  • EGT (EG Type) 1 bit
  • SUS (SUStain flag) 1 bit

があります。

左の図は TL と SL のビット位置と、lb 値として見たときの小数点位置と、dB 値としての重みを表したものです。
たとえば、TL = 0x1A なら、lb 値としては 3.25 となり、dB に直せば -6 × 3.25 = -19.5 dB となります。
SL は 3 dB ステップで設定でき、4 ビットがすべて 1 の場合には、本来 -6 × 7.5 = -45 dB になるはずですが、この場合に限り -95 dB と見なされます。
アナログシンセでは、エンベロープ・タイムを調節するようになっていて、パネルのツマミを右に回すと、変化に要する時間が長くなる、つまり、変化が遅くなります。
それとは対照的に、AR/DR/RR は「レート」、すなわち「変化速度」の設定ということで、値が大きいほどエンベロープの変化が速くなります。
レート = 0 は「変化なし」を意味します。 AR = 0 ではエンベロープが全く立ち上がりません。 DR = 0、RR = 0 では減衰しません。
レートの値が 1 増えると変化速度は 2 倍になります。 つまり、変化時間としては 1/2 になります。
実際には、EG では、まず AR/DR/RR の値は 4 倍されて、0 〜 60 の数値になります。 その後 レート・キー・スケーリングによるオフセットを足し、63 を超えたら 63 に置き換え、0 〜 63 の数値にします。
レート・キー・スケーリングとは、アコースティック楽器では、振動のエネルギーが散逸する速度は周波数が高いほど速くなる傾向があるので、低音では比較的に長い減衰時間となり、高音では比較的に短い減衰時間となる効果をシミュレートするものです。
そのオフセットの量は、KSR = 0 では、2 オクターブごとに 1 ずつ増え、KSR = 1 では 1/2 オクターブごとに 1 ずつ増える設定になっています。 レート・スケーリングなしの状態にはできません。
レート値 0 〜 63 に対応する実際のエンベロープ・タイムについては「rege」に表が載っています。
アタックは最小 0 ms、最大 2826.24 ms、ディケイ/リリースは最小 2.4 ms、最大 39280.64 ms です。