ゲーム機内蔵音源音をMIDI音源で再現

SFC(スーパーファミコン)、PS(プレイステーション)、の内蔵音源(SPU – Wikipedia)を使用した曲の音色や音場(リバーブ)を再現するときに使えるテクニックを書いていきます。NDS(ニンテンドーDS)などでも同様の手法が使えると考えています。

音色→サンプリングを固定して再現を目指す

ピッチベンドを使ったサンプリング音域固定例。Coase Tuningを使って音階がずれないようにしています。

ピッチベンドを使ったサンプリング音域固定。PitchBend Sensitivityは16の例。Coase Tuningを使って音階がずれないようにしています。

内蔵音源では、一つの音色で音階や強弱(ベロシティ)による変化がない事が多く、切り替えがある場合は少ないです。そこで、内蔵音源独特の音色を再現するためには、手持ちの音源から出る音色のサンプリング、強弱を固定する必要があります。

一方、他の多くの音源では多くの音色は

音階、強弱で音色が変化するようになっています。MIDI音源でサンプリングを固定する方法はいくつかありますが、ピッチベンドを使う方法が最も多く用いられます。

サンプリングを固定と言われてもイマイチよく分からないと思いますので、具体的な例として、サガフロンティアのフルートに近いMU1000の74,64 Boehmの音色作りを挙げます。

  1. Pitch Bend Sensitivityを24に設定
  2. Boehmの音階による切り替え音色で一番良いポイントがF5-G#5ということを確認する
  3. F5-G#5以外のノートの直前に、E5より下ならマイナスのPitchBend、A5より上なら+のピッチベンドを入力します
  4. ノート(音符)が本来の位置とずれるので、お好みでCoase TuningをPitch Bendの動きの逆に入れます。

こういった流れです。全てのノートごとにPitch Bendを入れる必要はなく、F5-G#5の間に入るように上手く設定すると少し楽です。結構面倒くさいですが、バッチリな切り替え音色を選ぶと出来が抜群に良くなります。

注意点としては、+-24を超えた部分については、ピッチベンドなどが無効になる音源があります。また、+20を超えた辺りから音程が壊れる音色があります。

画像のように、一半音(短2度)ごとの値が512で割り切れるPitch Bend Sensitivityを16に設定すると計算(暗記)が楽です。ただし、8半音分使える音域が狭くなります。

Pitch Bend Sensitivityが24だと、1半音ごとの値が割り切れなくなり(341,682,1024…)、計算(暗記)が大変です。

これを楽にするため、Dominoの定義ファイルのControlChangeMacroList中に以下のような記述を追加します。Ctrl+(↑↓)キーで変更できるようになり、ずいぶん楽ができます。

定義ファイルによってIDは重複しないように適宜変更します。
mならマイナス(Coase Tuningはプラス)、pならプラス(Coase Tuningはマイナス)の意味です。
<Table ID="422">
 <Entry Label="m24" Value="-8192" />
 <Entry Label="m23" Value="-7851" />
 <Entry Label="m22" Value="-7510" />
 <Entry Label="m21" Value="-7168" />
 <Entry Label="m20" Value="-6827" />
 <Entry Label="m19" Value="-6486" />
 <Entry Label="m18" Value="-6144" />
 <Entry Label="m17" Value="-5803" />
 <Entry Label="m16" Value="-5461" />
 <Entry Label="m15" Value="-5120" />
 <Entry Label="m14" Value="-4779" />
 <Entry Label="m13" Value="-4437" />
 <Entry Label="m12" Value="-4096" />
 <Entry Label="m11" Value="-3755" />
 <Entry Label="m10" Value="-3413" />
 <Entry Label="m9" Value="-3072" />
 <Entry Label="m8" Value="-2731" />
 <Entry Label="m7" Value="-2389" />
 <Entry Label="m6" Value="-2048" />
 <Entry Label="m5" Value="-1706" />
 <Entry Label="m4" Value="-1365" />
 <Entry Label="m3" Value="-1024" />
 <Entry Label="m2" Value="-682" />
 <Entry Label="m1" Value="-341" />
 <Entry Label="0" Value="0"/>
 <Entry Label="p1" Value="341" />
 <Entry Label="p2" Value="682" />
 <Entry Label="p3" Value="1024" />
 <Entry Label="p4" Value="1365" />
 <Entry Label="p5" Value="1706" />
 <Entry Label="p6" Value="2048" />
 <Entry Label="p7" Value="2389" />
 <Entry Label="p8" Value="2731" />
 <Entry Label="p9" Value="3072" />
 <Entry Label="p10" Value="3413" />
 <Entry Label="p11" Value="3755" />
 <Entry Label="p12" Value="4096" />
 <Entry Label="p13" Value="4437" />
 <Entry Label="p14" Value="4779" />
 <Entry Label="p15" Value="5120" />
 <Entry Label="p16" Value="5461" />
 <Entry Label="p17" Value="5803" />
 <Entry Label="p18" Value="6144" />
 <Entry Label="p19" Value="6486" />
 <Entry Label="p20" Value="6827" />
 <Entry Label="p21" Value="7168" />
 <Entry Label="p22" Value="7510" />
 <Entry Label="p23" Value="7851" />
 <Entry Label="p24" Value="8191" />
 </Table>
 <CCM ID="422" Name="Pitch Bend Change(24Scale)" Color="#993333" Sync="Last">
 <Value Min="-8192" Max="8191" Offset="8192" TableID="422" />
 <Data>@PB #VH #VL</Data>
 </CCM>
直接"pxx"の形で入力したい場合は、変数表に数値を書き込む必要があります。ただし、Ctrlキーを使った値の上限はできないので、あまりおススメはしません。
p1=341
p2=682
p3=1024
p4=1365
p5=1706
p6=2048
p7=2389
p8=2731
p9=3072
p10=3413
p11=3755
p12=4096
p13=4437
p14=4779
p15=5120
p16=5461
p17=5803
p18=6144
p19=6486
p20=6827
p21=7168
p22=7510
p23=7851
p24=8191
m1=-341
m2=-682
m3=-1024
m4=-1365
m5=-1706
m6=-2048
m7=-2389
m8=-2731
m9=-3072
m10=-3413
m11=-3755
m12=-4096
m13=-4437
m14=-4779
m15=-5120
m16=-5461
m17=-5803
m18=-6144
m19=-6486
m20=-6827
m21=-7168
m22=-7510
m23=-7851
m24=-8192
Rcv Chを使っサンプリング固定例。チャンネル数を食う欠点がある。

Rcv Chを使っサンプリング固定例。チャンネル数を食う欠点がある。ピッチは上向きのみなのでAC(アサイナブルコントローラ)を使っている。

音域の上下どちらかのみ使う場合は、AC1(RolandだとCC1)などのPITCH CONTROLを利用する方法もあります。

これを応用すると、Rev Ch、Note Limit(Vel Limit)、Pitch Controlの組み合わせで和音を使うこともできます。こちらは一度設定すれば使いまわしが楽ですが、パート数がたくさん必要になりますので、ギターやハープのように、切り替えが頻繁で面倒そうなものに使用します。

なお、サンプルの段階からビブラート、トレモロがかかっている音色の場合は、ポリフォニック・キー・プレッシャーを使います。1オクターブ上がるごとにビブラートの速さが倍になるよう調整すると良いようです。

ポリフォニック・キー・プレッシャーで音階が上がるごとにビブラートを速くする例

ポリフォニック・キー・プレッシャーで音階が上がるごとにビブラートを速くする例

実際に使ったことはありませんが、レゾナンスが強くかかっている音色の場合も、LPFを音階によって上げ下げするとそれらしくなると思われます。

リリースを切る

EG Relese Timeなどで呼ばれているものです。-64に設定します。設定をしておかないと、ピッチベンドの切り替えの際に「ヨレる」原因になります。

ドラムはRcv Note OffをOnにします。全てのドラムノートに対して、ゲートタイムを設定します。

Note Offを送った際のドラムノートのゲートタイム調整例

Note Offを送った際のドラムノートのゲートタイム調整例

リバーブを設定する

SFC以外のリバーブの仕様はよく分かっておらず、これといった方法はありません。

SFCの場合はタイムの短いディレイで再現します。内蔵のSPUの最大ディレイタイムが240msで、16bitなのでおそらく16ms*1~16となっていると考えられます。耳で聞いた感じでも、64~80~96ms辺りが良く使われているように感じます。通常の楽曲と同様、キックやベースなど、低音楽器にはディレイがかかっていないことが多いようです。

具体的な再現方法はMU1000だとリバーブ、もしくはインサーションのエコー。SC-8820だとEFXのStereo Delayとなります。

MU1000のリバーブ設定です。エフェクトをかけるパートにReverb Sendも忘れずに設定します。

MU1000でのSFCっぽいDelayの再現例

MU1000でのSFCっぽいDelayの再現例

  • Reverb Time
    • 設定する必要はありません
  • Diffusion
    • 0にします。これにより、同一定位(パン)にディレイ音が返ります
  • Initial Delay
    • 64~80~96ms辺りに設定します。100ms以上の場合はRev Delayを追加します
  • HPF Cuttoff
    • 値は(0)Thruに設定します。低域を削がないためです
  • LPF Cuttoff
    • 値は(90)Thruに設定します。高域を削がないためです
  • Rev Delay
    • 前述の通り100ms以上の場合に使用します。Initial Delayとの合計がDelay Timeです。
  • Density
    • 0に設定します。ディレイらしい荒い繰り返しにします。
  • Er/Rev
    • -64に設定します。
  • High Damp
    • 10(1.0)に設定します。高域を削がないためです
  • Feedback Level
    • 曲によって大きく変わります。+40程度が多いですが、+56程度の強いディレイやマイナス方面に振る方がしっくるくる曲もあります。

SC-8820のEFX 21:Stereo Delayの設定。エフェクトをかけるパートにEFX Assinを忘れず設定します。

SC-8820でのSFCっぽいDelayの再現例

SC-8820でのSFCっぽいDelayの再現例

  • Delay Time L、R
    • 64~80~96ms辺りに設定します。左右は同一の値です。
  • Feedback
    • 曲によって大きく変わります。+40程度が多いですが、+56程度の強いディレイやマイナス方面に振る方がしっくるくる曲もあります。
  • Fb Mode、Phase L,R
    • 0。Normに設定します。
  • HF Damp
    • 0.Bypassに設定します。
  • Balance
    • ドライ音とディレイの比率です。-30~-20をよく使います。
  • Hi,Low Gain
    • 0に設定します。
  • Level
    • 127に設定します。音数が少ないのでただでさえ音量が低めになるためです。

位相反転音

MUだとAmbienceを使うと上手く作ることができます。反転している音が多い場合はVariation Effectを使う必要があるのでECHOと同時に使うことは出来なくなります。

Roland SCはShortDelayでそれらしく仕上げる方法しかないようです。なお、Rev.chで同時に鳴らして、片方Stereo Delayの位相反転をかけ、パンを変えても上手くなりませんでした。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。