目次
イントロ
Heavy(hvcc)はPure DataパッチをVSTやDaisyファームウェアなどのさまざまなコンパイルフォーマットに変換するツールです。このプロジェクトはEnzien Audioが立ち上げ、現在はWasted Audioが開発をすすめています。
しばらく前よりWwiseへの対応を刷新する必要性を感じ、私が最近ようやく実現させました。WwiseジェネレータをAudiokineticの新しいPlugin APIにアップグレードしたほか、対応するチャンネル構成を増やし(5.1、7.1、7.1.4)、イベントをプラグイン内からポストする機能を追加しました。この記事で、新しい機能についてセットアップ事例を交えながら説明します。
ソースコードの生成方法も変えました。直接Visual Studioプロジェクトを生成するのではなく、AudiokineticのDevelopment Toolsに求められるフォーマットでプロジェクトが作成されるようになりました。エンドユーザにとってこの方が効率的である上、プラグインがAudiokinetic Launcherからインストール可能なバンドルとしてパッケージングされるため、とても簡単に配信できます。
今回はplugdataというすばらしいPure Dataフォークをすべての事例で使用しており、その「コンパイルモード」はHeavyが対応していないオブジェクトを使った場合に警告を出します。私は将来的に、プラグデータから直接Wwiseプラグインを構築する機能も検討したいと思います。
Hvccのインストール方法と使い方
以下のように、HvccはコマンドラインからインストールすることのできるPythonツールです:
pip install hvcc
これにより端末にhvccコマンドがインストールされます。例えば以下はドキュメントをプリントします:
hvcc -h
依存関係が適切であるVisual Studioも、インストールする必要があります。バージョンは2019と2022のどちらでも可能ですが、後者はWwiseのバージョン2022.1.5以降のみに対応しています。具体的にどのコンポーネントをインストールする必要があるのかは、ドキュメントに記載しているため、ここでは参考までに私のVS2019実装のスクリーンショットを掲載します:
図1:私のコンピュータにインストール済みのVisual Studioパッケージ。「.NET」や「UWP」パッケージは無視してよいと思います。
新しい機能の概要
より多くのチャンネル構成に対応
構築できるプラグインは、これまでモノラルとステレオに限られていました。変更後はソースプラグインとエフェクトプラグインのどちら向けにも、5.1、7.1、7.1.4の各構成を構築できるようになりました。どの構成で構築するかは、[adc~]
オブジェクトや、[dac~]
オブジェクトにおいて宣言したチャンネル数で決まります。
図2:左は5.1chのボリュームコントロールエフェクト。 右は7.1chの55Hzオシレーターとボリュームコントロール。
出力デバイスが変更された時、残念ながらHeavyプラグインがオンザフライでチャンネル構成を変更できないため、バスで使用するためには求められる構成をバスにおいて設定する必要があります。Wwiseが必要に応じて信号をダウンミックス、またはアップミックスします。非対応の構成のバスでプラグインを初期化した場合、エラーがプリントされます。
図3:マルチチャンネルエフェクトのプラグインのあるバスでは、必ずバスで構成(Configuration)を明示的に設定。
任意イベントのポストと、RTPCの設定
これまでRTPCを出力してきたように、今回のアップデートで任意のWwiseイベントをHeavyプラグイン内よりセンドオブジェクト経由でトリガーできるようになりました。制御専用のプラグインも作成可能ですが、実際には無音を出力するモノラルソースプラグインとしてコンパイルされます。このようなプラグインで、入ってきたパラメータの統計値を計算して新しいRTPCを設定したり、入ってきたRTPCをイベントに変えて反応型オーディオシステムを実現したりすることもできます。下図はこの目的を考慮して名付けたセンドオブジェクトです。
注:Wwise Authoringの起動時、イベントやそのデータは読み込まれません。Authoring内で実行中のプラグインからイベントをポストした場合、 Event ID not found(Event IDが見つかりません)のエラーが出ます。迂回策としてこのイベントをEventsタブで1度再生することにより、強制的に関連データをWwiseに読み込ませることができます。
図4: 制御専用のパッチ。Param1値の変化をPlay_Test_Soundイベントをポストするトリガーに変え、Param1とParam2の平均値を計算し、それを「Param_Avg」RTPCとして同ゲームオブジェクトに設定。
プラグインをAudiokinetic Launcher用にパッケージングする
Audiokineticのビルドツールと互換性のあるプロジェクトフォーマットをHeavyで生成できるようになり、プラグインをAudiokinetic Launcherからインストール可能なパッケージとしてバンドル化できます。カスタムプラグインを他人が使えるように簡単に配信でき、プラットフォームごとに異なるビルドを用意することさえ可能です。細かい手順はHeavyのドキュメントにありますため、ここでは省略します。
忘れてはいけないことが1点あります。現在、プラグインのフォーマットがAudiokineticのWwiseバージョン番号の付け方に従う必要があります。例えばWwise 2022.1をターゲットとするプラグインのバージョン番号は、「2022.1.X.Y」とします。この決まりに抵抗を感じる場合は、Pure Dataパッチを変換した際に生成されるbundle_template.json
ファイルにおいて、Wwiseのターゲットバージョンを修正します。
手順にそのまま従い作業を楽にするためには、WWISEROOTとWWISESDKの環境変数をAudiokinetic Launcherで正しく設定してください(Set Environment Variables…ボタン)。
図5:該当するWWISEROOTとWWISESDKの環境変数を設定。
アウトロ
HeavyのWwiseに関連する最新情報を簡単に紹介しました。ほかにアイデアや機能リクエストなどがある場合、ぜひWasted AudioのDiscordまたはGitHubで教えてください。
いままでHeavyを使ったことがない方は、詳しい説明が同じAudiokineticブログのChenzhong Houの記事「How Sound Designers Use PureData + Heavy」(英文)にあります。ほかにも以前のBen McCulloughのブログ投稿からHeavyを使ったマルチチャンネルエフェクトプラグインの作成経験を知ることができます。彼の記事は対応するチャンネル構成を増やすきっかけとなりました。
コメント