2022年10月のGameSoundConでホテル近くにあった洒落たサンドイッチ店でダミアンとランチをしながら、もちろんオーディオ技術の話をしていて、「どうやらMetaSoundsを音源としてWwiseに取り込めるようになったらしいね、それはめちゃくちゃ便利じゃないか」と言ったのです。
ちょうどその時に「ありがとう!」と言う声がして顔を上げると、そこにはUnreal AudioのディレクターでありMetaSoundの考案者でもあるAaron McLeranがドアに手をかけ、レストランに入ってくるところでした!あまりにも完璧なタイミングで、映画であれば嘘っぽく感じてしまうような場面でした。
最近のバージョンではUnrealのオーディオシステムが大幅に改善されています。新しい機能やワークフローの多くは、単純にボタンを押した時に出る音以上の機能を持つサウンドトラックを制作しやすいように設計されています。とは言え、大規模で複雑なコンソールゲームで、ゲームプレイのアクションに対する感動の反応を呼び起こそうと考えた時、やはり私は毎回Wwiseを使いたくなります。
そこで登場するのがAudioLinkという、Unreal Audio Engineをミドルウェアと合わせて使用するためのツールです。具体的にはWwiseと一緒に使用するためのツールです。従来は常に「どちらか一方」の選択肢しかなかったのですが、AudioLinkは「両方同時に」という協調性を提供してくれるようです。私は試しにMetaSoundをいくつか作成し、UnrealのルームにWwise経由でルーティングしてみようと考えました。ブループリントで制御されるモジュラーシンセサイザーの威力を活用し、その成果を空間化された環境に配置できるはずです。さらにWwise ProfilerでMetaSoundの出力を観察できるというおまけ付きです。
『White, Brown, and Fractal Music』を表現
私はUnreal 5.1にアップグレードし、Martin Gardenerが1978年に『Scientific American』誌の連載『Mathematical Games』で執筆した記事『White, Brown, and Fractal Music』に出てくるアルゴリズムを使い、MetaSoundで3つの実装を作成しました。記事では数学と知覚の本質に関する実に興味深い議論が繰り広げられていますが、主な焦点はアルゴリズムから生成するメロディーについてです。Gardenerは以下3つの方式を説明しています:
1. White Musicは基本的にカオスで、完全にランダムで予測不可能であり、連続する音符間の相関関係は皆無です。
2. Brown Musicは液体中に浮遊する粒子のランダムな動きであるブラウン運動に基づいています。粒子をグラフ上にプロットすると、「酔っ払いの散歩道」のような予測不可能なベクトルから成る曲がりくねった経路をなぞります。これによりランダムな音符の連なりが生まれますが、ランダムであるにもかかわらず相関性が強く、各音符が前の音符に数式で繋がっています。
3. Fractal Music(別名Pinkノイズ)はサイコロ6個を2進数ベースのパターンで振り、6から36までの数字を出すことにより生成します。これらの数字をキーボード上の音符配列に割り当て、ほかの方法よりも驚くほど音楽性のあるメロディーをアルゴリズムが生み出します。
MetaSoundで遊ぶ
私はこれら3つのアルゴリズムのデモをするためUnrealとWwiseのブループリントプロジェクトを以前制作したことがあり、3つのアルゴリズムをストレートなシンセ、ウェーブテーブル、ループするバックグラウンド上のメロディ、という3つのフレーバーのMetaSoundに変換することは難しくありませんでした。
MetaSoundにはScale to Note Arrayという柔軟な機能があり、MIDIノートを幅広い音階やチューニングに量子化することができます。設定をPentatonicにすると、ランダムアルゴリズムでさえ優美な結果を生み出してくれました。それ以上に私はMetaSoundシンセサイザーが提供する、豊富なツールやエフェクト一式を使えて楽しかったです(知っての通り、私のモットーは「楽しくなければやり方が間違っている!」ですから)。
私はUnrealで3つのルームの入った構造体をつくり、大きさ順に並べてドアでつなぎました。部屋中を跳ね回るオブジェクトを各ルームに入れ、それぞれのオブジェクトから1種類のメロディ生成の実装結果を出し、ボリュームやポジションをMetaSoundのAttenuation設定で制御しました。ここまでは順調にゆきました。
Wwiseのセットアップ
次にWwiseをインテグレートしましたが、ここで最初のつまずきがありました(注を参照)。最新バージョンには実験的なAudioLink関連の更新が含まれていましたが、 ユーザが手動でWwise Unrealインテグレーションをインストールする必要がありました。つまりエンジンプラグインのファイルをダウンロードし、ゲームプラグインのファイルが通常ある場所にそれを置く必要がありました。正直なところ本当に機能することにいまだ驚いていますが、WwiseのQ&A(https://www.audiokinetic.com/qa/11062/5-1-support-wwise-roadmap/)掲載の指示に慎重に従ったところ、Unreal 5.1でWwiseを実行することができました。
*注:読者のみなさまは、こんなことをする必要はありません。その後リリースされたWwise v.2022.1.2が標準インストール手段に対応しています。
いよいよこの環境に音響を取り入れる準備が整いました。ルームにAkSpatialAudioVolumesを追加し、出入口にAkPortalを追加しました。ルームごとにリバーブ用のAUXバスを設定したため、大きさ順に並ぶルームをそれぞれ「タイル貼り浴室」「中型ホール」「大聖堂」とし、それぞれのRoomVerbエフェクトを指定しました。基準として各ルームにテスト用のループするPing音をAKAmbientサウンドとして追加し、セットアップが期待通りに機能しているかを確認したところ、確かに機能していました。
UnrealをAudioLink経由でWwiseに接続
次にWwiseイベントを3つ作成し、それぞれでSoundSFXを再生して、そのソースとしてAudio Inputを指定しました。このSource Plug-inオプションでWwiseプロジェクト外で生成されたオーディオコンテンツを、Wwiseエンジンで処理することができます。主にゲームのボイスチャットのために使用しますか(マイクからくるサウンドデータの取り込み)、アプリ間のオーディオデータの送信管として使い、Unreal MetaSoundの出力をWwiseプロジェクトへ繋ぐこともできます。
私がいま説明したことは、AudioLinkの目的です。
ここで私は再びつまずきました。MetaSoundの設定画面にあるAttenuationのAudioLinkのセクションの、オーバーライドの選択肢の長いリストの一番下の方で、Wwise Audio Input Eventを設定できると理解していました。ただし「できると知っている」からといって「やり方を知っている」とは限らず、表示された選択肢は不明瞭で分かりにくいと感じました。
私はあまりにも長く空回りをしたあげく(いつもの「あ、このボタンを押さなきゃいけないのね」的な気づきのあと)ようやく、最初にUnreal Project Settings => Wwise Integration Settings => Unreal Audio Routing (Experimental) とすすみ、設定をRoute through AudioLink [UE5.1]にすることにより、カスタムのWwise AudioLink SettingsのためのCreate New Assetボタンが、Attenuation (AudioLink)ドロップダウンに表示されることを知りました。ここでアセットが適切なWwise Audio Input Eventにポイントするよう設定できます。
ほら!
うまくゆきました!MetaSoundやそれに関連する音楽システムの音が、跳ね回るオブジェクトに付いてプロジェクト内で聞こえ、出力をWwise Profilerで観察することができました。やったー!
ほかにもいろいろできました:
- ボリュームレベルの制御
- バスルーティングの変更
- 減衰の設定
- エフェクトの追加
- RTPCの使用
- Unrealオーディオのオンザフライの変更・試聴
…使い慣れたWwiseツールで作業をしながら、これができるのです。最初に言った通り、便利です!
でもやってみたいことがもっとありました...
オブジェクトの空間配置
私はMetaSoundを3つのルームの音響環境に配置し、ルーム間のトランジションをスムーズに行いたいと考えました。私はWwiseが提供する(そしてUnrealのネイティブオーディオでは勝ることができない)さまざまな洗練されたスペーシャリゼーション機能を駆使しながら、MetaSoundを各ルームで指定のリバーブでミックスしたり、音楽をWwiseReflectで壁をバウンスさせたり、EQを場所や素材に応じて変化させたりして、オーディオエミッターであるオブジェクトが部屋の中にあるという感覚を前面に出したいと思いました。
ここで私は3回目にして最後のつまずきを経験しました。ソースプラグインAudio Inputはどちらかというと、Wwiseでスペーシャリゼーションを適用したオブジェクトではなく、ミキサーからの入力のような役割を担います(SoundSFXのコンテナのようなものです)。MetaSoundの入力イベントをテスト用のAKAmbientのPing音と同じようにルーティングしましたが、「diffraction/transmission」(スペーシャリゼーションに必須)を使用してプロファイリングをすると、「100% Transmission Loss」(つまり無音)と表示されました。一方で「diffraction/transmission」をオフにした時、MetaSoundが聞こえるようになりましたが、Reverbとミキシングされておらず、壁を通して聞こえてきました。
これを解決するためにAudio Inputをスペーシャリゼーション可能なWwiseコンポーネントに送りたいところですが、AudioLink実装の今回の初期バージョンでは、MetaSound Attenuationのオーバーライド設定でそれを行う方法がないようです。Epicの担当者たちはこの機能がすでに存在し、いまは接続されていないだけ...そして順次リリース予定であると私に教えてくれました。
コンポーネント経由で接続する
でもちょっと待った!よく私は「Wwiseで何をするにも必ず6通りの方法があるはず」と言っているのですが、実装に最適な方法で自由にゲームオーディオの難題を解決できる柔軟性が、実際にWwiseの最大の強みの1つであると言えます。MetaSoundをWwiseに送る方法も実はほかにあったのです。それがWwiseAudioLinkコンポーネント です。
インテグレーションパッケージに含まれているこのコンポーネントをオブジェクトにドロップし、そこでAudioLink設定やMetaSoundを指定し、レベルイベントグラフのBeginPlayでPlayLinkとすると...なんとMetaSoundがスペーシャリゼーションされたオブジェクトとして再生されるのです。音がルームの中にとどまり、ポータルはプレイヤーの位置に応じてフェードイン・フェードアウトし、音楽はリバーブ付きで再生されます。成功です!
ただし先ほどと同じく、現段階のいわゆる実験的なイテレーションにおいては、すべてのユースケースをカバーできていません。私がこのコンポーネントをうまく使うことができたのはwhiteMusic MetaSoundだけであり、これはループするパッチであり、1つのインスタンスです。brownMusicではいわゆるウェーブテーブルのアプローチを採用し、再生するファイル名を渡しながら何度もMetaSoundを呼び出すため、コンポーネントコードを混乱させるようでした(少なくとも私は混乱しました!)。
Close Enough For GDC
私は探求心をくじかれることなく、次のようなハイブリッド型アプローチを編み出しました:
- whiteMusicには、WwiseAudioLinkコンポーネントを使い、White Roomにおいてリバーブ付きでスペーシャリゼーションを行います。
- ブラウンとピンクの音楽のアルゴリズムは、MetaSound Attenuationのオーバーライド設定にあるAudioLink設定を使用します。音楽をWwiseプロジェクト内で再生しますがスペーシャリゼーションされないため、回避策としてクラッジを考案し、Brown RoomとPink Roomでは3Dエミッターバスとトリガーボリュームを組み合わせ、スペーシャルリバーブの実装をシミュレーションしました。
なかなかよい音です。3つのルームのフライスルー動画へのリンクはこちら:
このUnreal・Wwiseプロジェクトの完全版は、こちらからダウンロードすることができます:
https://media.gowwise.com/blogfiles/WBFmusicLinkAKh.zip (4.3Gb)
このプロジェクトではAudioLinkを使うためのテクニックを2通り紹介していますが、ニーズに合わせて方式を選んでください。例えばゲーム音楽がステレオのMetaSoundである場合、スペーシャリゼーョンは最優先でないと思われ、MetaSounds Attenuation設定の接続がよいと思います。音響環境に配置されたオブジェクトから再生されるサウンドを合成する場合は、ぜひともWwiseAudioLinkコンポーネントを使用してください。
AudioLinkの追加機能を実装するために必要であれば自分なりの「コードさばき」をしてよいと思いますが、WwiseとUnrealのどちらにおいても、これから機能サポートが強化されると私は予想しています。今後のバージョンアップではReflect、アコースティックテクスチャ、その他Wwise Spatial Audioのクールな技術を使い、MetaSoundsを楽しめることを期待します。
協力し合う開発
- ゲーム制作において「Unrealのネイティブオーディオを使うべきか、Wwiseをフル実装で使うべきか?」というジレンマはよく耳にします。無数のコスト要因やメリットが絡み、まるで終わりのない問答ですが、プロトタイプではUnrealオーディオを使い、資金を確保できた時にWwiseをインストールすることが珍しくありません。
つまりプロトタイプで実践したことをすべてWwiseで再現しなおす必要がありましたが...いまは違います!せっかくのサウンドデザインを放棄する必要はもうありません。AudioLink経由で入力イベントに送るだけで済みます。
- モジュラーシンセサイザーの市場は非常に大きく、熱狂ファンが機器のノブ、スイッチ、カラーケーブルなどが複雑に入り組んでいる前で、嬉しそうにポーズしている写真をよく見かけます。これらの脈打つ機器から出力されるオーディオを録音し、ゲームで使用することはできますが、外部ハードウェアにRTPCを接続することはできません。
そしていま、接続する必要がなくなりました。MetaSoundのおかげでノブ操作やパッチコードのルーティングを思いのまま行い...さらにゲームプレイに応じてサウンドを変化させる変数に、ノブやスイッチを接続することができるのです(さすがインタラクティブオーディオ)。WwiseのRTPCを使いAudioLink経由で複数のMetaSoundレイヤーのミックスを変更したり、EQ設定を修正したりすることもできます。
- 私はゲームのサウンドトラックを開発する時、オーディオエンジニアとしてWwise Profilerを1日中稼働させています。何がどこで再生されているのか、その音量、再生しているバス、リバーブやエフェクト、CPUやボイスの使用状況など、知りたいことをすべて確認することができます。 Wwiseエンジンを使うサウンドトラックのモニタリング、デバッグ、最適化の過程で、Wwise ProfilerはWwise機能セットの中で最も価値あるツールだと思います。
そこへUnrealのオーディオが加わることになりました!Wwise ProfilerがInput Eventの処理をキャプチャしてくれるため、さまざまなProfilerビューで観察することができます。AudioLinkを通してルーティングすることにより、ボイスの使用やトラックポジションを確認し、バスルーティング、エフェクト、ミックス値、その他のプロパティをランタイムにチェックすることができます。
- [あなたの自慢のMetaSound => AudioLink => Wwiseアイデアをここに挿入]
橋渡しを担う
インタラクティブなゲームプレイ環境において、いかに感動的な体験をつくり出せるかがゲームオーディオの要です。この目標達成に近づくため、そして目標を現実的なものとするため、驚異的な強力ツールやテクニックが開発されてきました。この表現の場において現在のサウンドトラックは、EpicとAudiokineticの両社による洗練されたオーディオシステムなしでは、文字通り存在し得ないものです。
主に技術的な理由から、これまでネイティブとミドルウェアのどちらかの「陣営」を選ぶことを迫られる傾向がありました。AudioLinkはこのジレンマに対する技術的な解決策を提供し、サウンドデザイナー、ミュージシャン、エンジニアなどが、期待する結果を得るための適した技術を、その都度自由に選択できるようになりました。
AudioLinkは技術と技術を繋ぐ架け橋であり、人が向こう岸に渡りたい時、橋というものは...この上なく便利です!
- pdx
本プロジェクトをサポートしてくれたAudiokineticのDamian、Michel、Benoit、そしてEpicのJimmy、Dan、Grace、Aaronに大変感謝しております。
コメント