トップ Tsugiブログ EnginesプラグインをADX2で走らせてみよう
GameSynth 2022
2022/05/19

EnginesプラグインをADX2で走らせてみよう


GameSynthは、ゲームシステム内でリアルタイムにインタラクティブな音を生み出せるソリューションです。 ただ、既にCRI ADX(AtomCraft)などのサウンドミドルウェアに慣れ親しんでいる方は、GameSynth Toolで効果音を作り、音声素材をADX2に取り込んだ上で、あくまでADX2の中で調整して仕上げる という使い方が便利かもしれません。

プロシージャルサウンドツールであるGameSynthは、「音の微調整と作成の繰り返し作業」「バリエーション作成」がスピーディかつ緻密に行えるため、DAWやサウンドミドルウェアとも連携して使っていけます。

今回は、GameSynthのEnginesプラグインをもとに、そのカーエンジン音のリアルさや反応性を保ったまま、AtomCraftに実装していく方法を見ていきましょう。

GameSynth Enginesプラグイン&ADX2

Enginesプラグインから音のバリエーションを書き出す

まずは、「異なる回転数をもった、複数のエンジン音バリエーション」を書き出します。物理モデリングで音を作り出すEnginesプラグインは、正確なRPM(回転数)で車のエンジン音を書き出しできます。上の動画を追っていきましょう。

00:00~00:02
今回はイタリアンスポーツカーで、RPM制御用のメタパラメータを作成し、中央のタコメーターにドラッグアンドドロップして、回転数パラメーターを制御します。
00:03~00:06
今後の書き出しのため、RPMの最低値が1000〜2000RPMとなるよう、カーブを調整します(この値は車種によって変更していくといいでしょう)
00:06~00:19
試しにメタパラメータを動かすと、RPMメーターも追従しながらエンジン音も変わることがわかります。また車の構造上、アクセルペダルを踏むと燃焼エネルギーが増すため、ペダルの踏み込み(上げ下げ)によって、エンジン音の過激さも変わっているのがわかります。

この「アクセルの踏み込み」の強弱もゲームで実装したいので、今回はアクセルぺダルを「全く踏んでいない」状態と「全開踏み込み」の2つのセット(OnloadOffloadというネーミングで管理)で音を書き出していきます。

00:029~00:40
音の一括書き出しを行っています。16bitのモノラルwavで、音を10個書き出しています。
MetaParameter設定で、RPMパラメーターを選択し、接頭語にメタパラメータ値を設定し、 10秒の長さで音を書き出しています。これにより、異なるメタパラメータ値(=RPM)値をもったエンジン音が10個書き出されます。

同様の方法で、アクセルペダルを押し込んだ状態での音セットも書き出しましょう。同じ車種、同じメタパラメータ設定で音を書き出しているため、それぞれ「アクセルペダル0%」と「アクセルペダル100%」の完全に一致した音が書き出されるはずです。

※次の操作へ進む前に、画面左下にある下図のグローバルバリエーション値を0に下げておきましょう。これは、Enginesモデルも他のシンセサイザー同様、グローバルバリエーションを0以上に設定しておくと、内部的に色々なテクスチャのエンジン音バリエーションを生成する仕様になっているからです。今回は、ランダムにバリエーションが生成されるのを避けるため、この値は0に設定します。

AtomCraftで滑らかな制御を作成

AtomCraftに音声ファイルをインポートする前に、DAWでシームレスなループに加工しておく必要があります。 サウンドごとに10秒の長さがあり、RPMも一定のため、ループ化は簡単に行えるでしょう。
以下より、AtomCraft内での操作となります。

  • サウンドをマテリアルフォルダにインポートします。
  • 「ループ情報の上書き」プロパティを有効化にしてループ設定にします。
  • ポリフォニックキューを作成し、ボイスビヘイビアを仮想ボイストリガーに設定して、音量が0のときにサウンドがアンロードされるようにします。
  • Onloadサウンドをキューにドラッグアンドドロップして、サウンドごとに1つのトラックを作成します。

現状ではすべての音が一緒に再生されてしまうため、AISACとボリュームをマッピングして、各トラックをクロスフェードさせていく必要があります。

  • RPMと呼ばれるAISACを作成します。
  • キュー内のトラックごとに、RPM(AISAC)によって制御されるボリュームグラフを作成します。
  • AISACエディターで、各サウンドのRPMが増加していることを確認して、各トラックを次のトラックとクロスフェードさせます。ベル型の曲線を作成して、AISACに沿って定期的にクロスフェードを分散させます。
  • また、RPMが異なる2つのトラック間でフェードするとき、より自然なピッチ遷移となるよう、各トラックのピッチを調整していきます。
  • トラックごとにピッチグラフを作成します。
  • 次に、ボリュームグラフの期間に一致しながら増加する線形ラインを作成します。
  • 「ピッチ値0 = ボリュームカーブの上部」に対応している必要があります。
  • 前のトラックと次のトラックの両方に一致するように、各トラックのピッチカーブを微調整する必要があります。音の劣化を避けるため、範囲は-500/500セントを超えてはならず、RPMが高くなるにつれてその勾配は徐々に減少します。ピッチ範囲をグローバルに微調整したい場合は、キューレベルで他のピッチグラフを作成するのもいいでしょう。

最後に、作成したキューを複製してすべてのOnloadサウンドをOffloadサウンドに置き換えたのち、AISACを使用して両者をクロスフェードさせます。

  • loadという名前のAISACを作成します。
  • OnloadキューとOffloadキューの両方で、loadによって制御されるボリュームグラフを作成します。
  • Onloadキューでフェードインカーブを作成し、Offloadキューでフェードアウトカーブを作成します。

これにより、Onload状態とOffload状態をスムーズに遷移させることができます。

ゲーム内で、RPM値とアクセルペダルの踏み具合によってこれらの値を同期させれば、リアルなカーエンジンサウンドが得られるでしょう。




Copyright © Tsugi GK. All rights reserved.