Max 8におけるWwise Authoring API(WAAPI)活用の導入

Wwiseの使い方やツール

はじめに

WwiseでRTPC駆動型の複雑なイベントを設定する際、それを試すことが容易でないというジレンマに直面することがよくあります。

複数のパラメータをマウスで制御することは実際には難しく、MIDIコントローラにパラメータをマッピングしたり、MIDIオートメーションを利用したりすることは可能ですが、必ずしも理想的ではありません。

直接ゲーム内でテストしたいと思っても、途中をスキップしてテストしたいものやシナリオに到り着くためのショートカットがなかったり、デザイン中のオーディオの対象システムがまだ完全に実装されていなかったり、それが存在さえしていなかったりするなど、テストに手間取ることによりイテレーションに時間がかかってしまうかもしれません。

このような時、Cycling74のMaxが役に立つのではないかと思います。NodeJSWAAPI経由でWwiseに直接接続する方法を提供し、イベントを呼び出したりRTPCを更新したりできます。

カーブ(曲線)、スライダー、ボタン、ダイアルなどの図式化された便利なUIオブジェクトも多数揃っています。さまざまなパラメータの設定を保存するためのスナップショット保存機能が組み込まれているほか、時間と共に並行して変化するパラメータをシミュレーションすることができます。すばやくプロトタイプを作成したい時に最適な環境です。

手順を紹介する前にお知らせです。この記事の最後に本プロジェクトのある私のgithubへのリンクを掲載していますので、ぜひご覧ください : )

waapi1

セットアップ

この記事を読みながら最大限に活用していただくために、準備していただきたいものがあります:

  • このサンプルプロジェクトを含む最近のWwiseがインストールされていること
  • Max 8(理論上はトライアル版で動くはずですが、私は確認していません)
  • Maxの基本を理解していること
  • javascriptプログラミングの適度な知識を有すること

スクリーンショットはすべてOSXで作成したものですが、Windowsの手順も全く同じです。

まずMaxプロジェクトを作成する必要がありますが、なぜシンプルなMax Patcherにしないかというと、すべてを自身のフォルダに入れたいからです。Maxプロジェクトフォルダでcodeサブディレクトリを作成し、以下にあるhello-wwise-node-wampプロジェクト例のコンテンツをそこにコピーします:

<WwiseInstallationPath>/SDK/samples/WwiseAuthoringAPI/js/

さらに以下にあるwwise.jsファイルをコピーして、

<WwiseInstallationPath>/SDK/include/js/

それを私たちのMaxプロジェクトのcodeフォルダに入れ、簡単にindex.jsスクリプトから参照できるようにします。

waapi2

次にnode.scriptオブジェクトをパッチャーに追加し、それをhello-wwise-node-wampの例と一緒にあるindex.jsファイルにポイントさせ、オブジェクトヘルプパッチャーを開き(Maxオブジェクト上で、ALT+クリック)、 ノードデバッグツールを私たちのパッチにコピーします。

ちなみにjsファイルはデフォルトで、機能的ではありますが限定的なMaxの内蔵テキストエディタで開かれます。私のようにVSCodeやほかのエディタの方が使いやすい方は、Maxのプリファレンスで変更してください。

最後にnode.scriptscript npm installメッセージを送信します。これでpackages.jsonファイルにリスト化されているすべてのノードモジュールがインストールされます。

ここでWAAPIがWwiseプロジェクトで有効になっていることを、WwiseのUser Preferencesで確認する必要があります。

waapi3

次にCTRL+ダブルクリックでindex.jsを開き、wwise.jsファイルのパスをローカルコピーのパスに更新し、max-apiモジュールを入れ、最後にconsole.log()コールをMax.post()コールに置き換えてMaxコンソールにプリントするようにします。

code

いよいよ接続テストです。Wwiseでキャプチャを有効にし、ProfilerビューでログウィンドウのWAAPIセクションまで移動し、接続をテストするためにscript startメッセージをMaxのノードオブジェクトに送信します。

すべてうまくいけば、MaxコンソールはHelloメッセージ、Wwiseのバージョン、Wwise Logを出力するはずです。

SDKサンプルで提供されるindex.jsでは、接続がすぐにまた閉じられます。

これを変更するためにはonopen()関数を修正してakSessionをキャッシュするようにし、さらにノードスクリプトが停止された時にWAAPI接続をノードプロセスで閉じるためのエグジットハンドラを追加します。

waapi4

次にUUIDでイベントをポストしてRTPCを更新するためのMaxHandlerを追加します。私はRTPCを名前でポストした時に少し問題があったため、あえてUUIDを使います。

waapi5

次にMaxから呼び出すイベントやRTPCのUUIDが必要です。ありがたいことにWwiseがWAQLという洗練されたクエリランゲージを提供しているため、とても簡単にできます。後で必要に応じてUUIDをアクセスできるよう、パッチャーに恒久的に組み込むMaxディクショナリをMaxノードオブジェクトの最初の出力に接続し、すべてのイベントやRTPCを返すMaxハンドラを2つ追加してそこに送信するようにします。

waapi6

waapi7

UUIDが入手できるようになり、ようやく最初のイベントをポストできるようになりました。私はNYC(ニューヨーク)アンビエンスイベントを使用してテストしています。私たちのpostEvent()ハンドラは、3つの引数、1つのイベント名、1つのUUID、1つのオブジェクトIDを使います。

このオブジェクトIDはのちに重要となり、play/stopイベントだけでなく、後から送信されるRTPC更新に一致させるためにも必要です。これが欠けるとWwiseはstop/RTPC更新が関連していないと思い込んでしまい、うまく作動しません。

以下は前述のプロジェクト例が、Wwise SampleProjectのNYCアンビエンスのTimeRain_Intensityパラメータを駆動する様子を示した動画です。

以下がgithubにあるサンプルプロジェクトへのリンクです。.zipとしてダウンロードし、Max 8で開いてください。

これからについて

もちろんMaxパッチでWwiseイベントをセットアップするためには、まだまだ多くの手作業の設定が必要ですが、Maxはjavascriptを通したパッチスクリプトにも対応しており、オブジェクトをプログラミングで作成すること等ができるため、これらをすべて自動化することができます。

私はイベントボタンなどを自動的に作成する方法を研究しはじめたところですが、うまくいけばいずれ小さなMaxパッケージとなるかもしれません。

みなさんもパッチ作成を楽しんでください!

その他のリソース

ミカエル・アルトゥング

ミカエル・アルトゥング

ドイツ・ミュンヘン出身のテクニカルサウンドデザイナー。2015年からさまざまなインディー系やVRのゲームを手がけるとともに、イギリスのFormosa Interactive UK、ドイツのDynamedionなど、多様なプロジェクトのテクニカルサウンドデザイナーをつとめる。

hartung.studio

コメント

Replyを残す

メールアドレスが公開されることはありません。

ほかの記事

アンビソニックスで、ダイナミックなアンビエンスを実現

アンビソニックスを回転...

16.6.2020 - 作者 ルイス・ハビエル・ブッフォーニ(Louis-Xavier Buffoni)

WAAPIとPythonを利用したチーム作業の紹介とその例

20.12.2022 - 作者 ユージン・チェルニー

Wwise 2022.1 Unrealインテグレーションの変更

Wwise 2022.1 Unrealインテグレーションについて このバージョンはWwiseのUnrealインテグレーションにとって大きなマイルストーンです。Unreal Engine...

14.3.2023 - 作者 ミシェル・ドネイ(MICHEL DONAIS)

WAQL 2.0

WAQL(Wwise Authoring Query...

22.8.2023 - 作者 ベルナール・ロドリグ(Bernard Rodrigue)

Wwise Spatial Audio 2023.1 最新情報 | Reverb Zone

Reverb Zone入門 Wwise 2023.1ではWwise Spatial AudioにReverb Zoneという新しいツールが追加されました。Reverb...

10.1.2024 - 作者 トーマス・ハンセン

ゲームにおけるオーディオGameObjectの管理

I. はじめに GameObjectはWwiseでオーディオデザインを行う際の基礎となる概念です。Wwiseの基本機能(特にProfiling機能)からWwise...

16.1.2024 - 作者 徐巍

ほかの記事

アンビソニックスで、ダイナミックなアンビエンスを実現

アンビソニックスを回転...

WAAPIとPythonを利用したチーム作業の紹介とその例

Wwise 2022.1 Unrealインテグレーションの変更

Wwise 2022.1 Unrealインテグレーションについて このバージョンはWwiseのUnrealインテグレーションにとって大きなマイルストーンです。Unreal Engine...