FM音源で遊んでみる #5 【OPNからPX7へ その4 エンベロープ】
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

FM音源で遊んでみる #5 【OPNからPX7へ その4 エンベロープ】

2013-07-31 22:16

    今現在の曲制作環境を使用して、かつてのレトロPCが実装していたFM音源のテイストを再現しようという企画の5回目です。

    前回はFM音源において重要なパラメタである「マルチプル」と「トータルレベル」に関するテキストを掲載しました。

    今回は、前回の予告どおり「決定した音色の時間的変化=エンベロープ」についてまとめてみたいと思います。


    ■はじめに
    またしても激しく間が開いてしまい、最早、月イチ更新のような状態で申し訳ないですw

    実は、今回の音色移植の成果というか最終的なアウトプットとして、しばらく動画制作の作業に没頭しておりました。

    おかげさまで動画の方はほぼ完成し、近日中に投稿できそうな雰囲気です。

    当初はオリジナル曲を1曲仕上げて投稿するつもりでしたが、ちょっと予定を変更して某ゲームのアレンジ集となっております。

    ちなみに、FM音源の音色移植に関するアレコレは今回の内容で終了となる予定です。

    これまで掲載したものと今回分をあわせることで、「OPN」等4オペのFM音源音色を「PX7」へ移植するためのメソッドが確立されたことになります。


    ■音色の時間的変化
    それでは早速本題に入ります。

    まずは、今回話題とする「音色の時間的変化」(以下「エンベロープ」)について簡単に説明します。

    「エンベロープ」などと表現すると非常に難解な雰囲気をもたれてしまうかもしれませんが、ようは音が鳴り始めてから消えるまでの(主に)音量的な変化を指します。

    イメージがつかみやすいよう、図を使用して説明します。

    下の図は、とある楽器の「エンベロープ」をあらわしたものです。
    (縦軸が音量、横軸が時間)


    はじめに鍵盤を押すことで音量が一気にハネ上がり(①)、今度はある一定のレベルまで減衰します(②)。
    鍵盤から指を離すまでの間、緩やかに音量が減り続け(③)、最終的に音量がゼロになります(④)。
    この一連の音量的な変化を「エンベロープ」と呼びます。

    例の場合ですと、鍵盤を押してから割とすぐに音量の最大値に到達していますが、楽器によってはもっと緩やかに時間をかけて最大値に到達するものもありますし、鍵盤を話した瞬間に音量がゼロとなるケースも考えられます。

    これら「エンベロープ」の違いも音色を特徴づける重要な要素であるといえます。


    ■エンベロープの各パラメタ
    次に、さきほどの「エンベロープ」を実際にFM音源でエディットする場合を考えてみます。
    音色移植の元とする「OPN」では、下図の通り6つのパラメタを利用し「エンベロープ」をエディットします。


    「~レイト」と呼ばれるものが横軸に関するパラメタで、「~レベル」と呼ばれるものが縦軸に関するパラメタです。
    つまり「レイト」は時間を操作するもの、「レベル」は音量に関するパラメタと理解できるかと思います。
    (このうち「TL:トータルレベル」については、前回ご紹介したとおりですので詳細は割愛します)

    「エンベロープ」とパラメタの関係を順に解説すると

     1.キーオン(音を出しはじめて)から「TL:トータルレベル」で指定した最大音量まで到達する時間を「AR:アタックレイト」で指定

     2.最大音量から「SR:サスティンレイト」までに到達する時間を「DR:ディケイレイト」で指定

     3.「SR:サスティンレイト」が始まるレベルを「SL:サスティンレベル」で指定

     4.「DR:ディケイレイト」が終了してから音量がゼロになるまでの時間を「SR:サスティンレイト」で指定

     5.キーオフして(音を出すのをやめて)から完全に音量がゼロになるまでの時間(=余韻)を「RR:リリースレイト」で指定

    といった感じになります。

    各パラメタの詳細は以下の通りです。

    【AR:アタックレイト】
    「0」~「31」の範囲で音の立ち上がりを指定します。
    数値が大きくなるほど、キーオンから最大音量までに到達する時間が短くなり、「31」を与えると瞬間的に音量が最大となります。

    【DR:ディケイレイト】
    「0」~「31」の範囲で音の減衰を指定します。
    数値が大きくなるほど、最大音量からの減衰時間が短くなり、「31」を与えると瞬間的に音量が最大から「SL:サスティンレベル」分減衰します。

    【SL:サスティンレベル】
    「0」~「15」の範囲で「TL:トータルレベル」からの減衰量を指定します。
    トータルレベルからの減衰量であるため、値が大きくなるほど減衰後の音量は小さくなります。
    反面「0」を与えた場合は、全く減衰しない状態となります。
    「SL:サスティンレベル」で指定したレベルが、「DR:ディケイレイト」と「SR:サスティンレイト」の切り替えのポイントとなります。

    【SR:サスティンレイト】
    「0」~「31」の範囲で「SL:サスティンレベル」から音量がゼロになるまでの時間を指定します。
    数値が大きくなるほど、音量がゼロになる時間が早まります。

    【RR:リリースレイト】
    「0」~「15」の範囲で余韻の長さを指定します。
    数値が大きくなるほど余韻が短くなり、「15」を与えた場合は、キーオフと同時に音量がゼロとなります。

    このあたりは実際にシンセの前で色々と試してみないと非常にわかり辛いトコロなのですが、まぁこんな感じでパラメタの指定を行っていますw


    ■パラメタの移植
    では実際に「OPN」のパラメタを「PX7」へ移植してみます。
    「PX7」における「エンベロープ」のパラメタは下図のようになっています。


    「~レイト」については「OPN」と同様のようですが、問題は「~レベル」が全部で4つ存在する件です。

    このうち「L4」として設定するレベルについてはキーオフ後の音量となるため、ゼロ固定とします。(逆にココをゼロ以外に設定する音色って?)
    また「L1」については、アウトプットレベルで「トータルレベル」を指定するため、最大値固定で大丈夫そうです。

    微妙なのが「L2」と「L3」の扱いでして、どちらを「SL:サスティンレベル」とみなすかという点が悩ましかったりします。

    最終的に「L2」を「SL:サスティンレベル」として使用することにしましたが、改めて考えると「SR:サスティンレイト」の設定値により、「L2」「L3」を同値にするなどといった手当てをすべきだったかもしれません???

    とりあえず、今回の移植メソッドでは以下のようにパラメタを対応付けました。

     AR ⇒ R1
     DR ⇒ R2
     SL ⇒ L2
     SR ⇒ R3
     RR ⇒ R4

    対応しないパラメタについては、固定値として以下の初期値をセットします。

     L1:「99」
     L3:「0」
     L4:「0」

    各パラメタの変換式は以下の通りです。(※すべて端数は四捨五入)

    【AR:アタックレイト】

      [PX7のR1] = 99 - ([OPNのAR] ÷ 31 × 99)

    【DR:ディケイレイト】

      [PX7のR2] = 99 - ([OPNのDR] ÷ 31 × 99)

    【SL:サスティンレベル】

      [PX7のL2] = 99 - ([OPNのSR] ÷ 15 × 99)

    【SR:サスティンレイト】

      [PX7のR3] = 99 - ([OPNのSR] ÷ 31 × 99)

    【RR:リリースレイト】

      [PX7のR4] = 99 - ([OPNのSR] ÷ 15 × 99)

    なお、実際に音色移植を試してみたところ、どうも「余韻」が長めになってしまうような印象を持ったため、さらに「RR:リリースレイト」については、「キャリア」の場合のみ30%程度設定値を短めに設定しています。


    ■その他のパラメタ
    今回は「エンベロープ」を中心に解説しておりますが、実はあと2つ移植すべきパラメタが残っています。

    ひとつ目は「キーボード・レイト・スケーリング」と呼ばれるもので、これは音程によって「エンベロープ」の変化のスピードを調整するパラメタです。
    通常、高音になればなるほど「エンベロープ」の変化は速く、低音ほど変化のスピードは遅くなります。

    この特性を指定するのが「キーボード・レイト・スケーリング」であり、「OPN」では「0」~「3」の範囲で変化の度合いを指定します。
    (値が大きくなるほど、高音での変化のスピードが速くなります)

    「PX7」では「0」~「7」の範囲で指定するため、以下の変換式でパラメタ値を求めます。

    【キーボード・レイト・スケーリング】

      [PX7のKS] = ([OPNのKS] ÷ 3 × 7)


    ふたつ目は「デチューン」と呼ばれるものです。
    こちらは、「オペレータ」の音程を微妙にずらすパラメタです。
    音程をずらした音を複数重ねることで、音に厚みをもたせることが可能です。

    「OPN」では「0」~「7」の範囲で音程のずれの具合を指定します。
    「PX7」では「-7」~「7」の範囲で設定を行います。
    「OPN」側が整数指定となっていますが、実際には「0」~「3」が「0」~「3」、「4」~「7」が「0」~「-3」に対応するため、いったん以下の変換をかまします。

    【デチューンの変換】

      [OPNのDT]が 4以上の場合のみ以下の変換を実施
       [OPNのDT] = ([OPNのDT] × -1) + 4

    その後、以下の式で「PX7」のパラメタに変換します。

    【デチューン】

      [PX7のDT] = ([OPNのDT] ÷ 3 × 7)


    ■移植メソッドの確立
    最後の方が駆け足になってしまいましたがw、以上で「OPN」から「PX7」へのパラメタ移植メソッドが完成(?)しました。

    あんまり需要はなさげですが、個人的には後々見直したりできるので備忘録にちょうどいいと思っています。

    ちなみに、今回のテキストをまとめるにあたり、かなりの部分で以下の書籍を参考にさせていただきました。感謝です!


    「マイコンBASICマガジン別冊 パソコンFM 音源音色ライブラリー Vol.1」


    さて、次回はいよいよ今回の一連の作業の成果というか、曲として完成したものを晒す回となります。
    こっちは、前述したとおりほとんど完成しているので、間をあけることなく、近日中に公開できそうです。


    それではまた!


    広告
    コメントを書く
    コメントをするには、
    ログインして下さい。