BLOG
弊社英語ブログのうち、いくつかを日本語翻訳しています。英語ブログは こちら

リアルタイムにシーンの音を生み出す! Unity×GameSynth Tool APIデモ
GameSynthは、プロシージャル生成で
リアルタイムに音を創り出せるソリューションです。
現在、あらかじめ音を創り出す
GameSynth Tool
のみが一般向けに提供されていますが、
Tool API
を使えば、ゲームでリアルタイムに起こっている様々なパラメーターをTCP/IPで受信しながら、
リアルタイムに音を作り出す演出もできます。下のデモをご覧ください。
魔王様の怒りパラメーターから、再生中のキャラクターボイスを怪物化
宇宙船の高度と速度から、リアルタイムにエンジンの鳴りをコントロール
これらの音演出は、UnityゲームエンジンからゲームパラメーターをGameSynth Tool APIにリアルタイム送信することで実現しています。概要を見ていきましょう。
全体像
以下の図のように、Unityでのゲームプレビューの開始・アップデート・終了ごとに、GameSynth Tool APIに用意されている「 play(再生) 」「 set_metavalue(メタパラメータ変更) 」「 stop(停止) 」コマンドを呼び出します。
また以前より、こちらで配布されているUnityスクリプトの"GSAPI_TPClient.cs"に、TCP/IP通信するための便利な関数がまとめられているので、Unityでのスクリプティングに活用していくといいでしょう。

GameSynth側ではパッチ内でメタパラメータを設定し、ゲームコードからその値を更新する仕組みです。これは、GameSynth Tool API に1つの文字列を送信するだけで簡単に実行できます。メタパラメータは、インデックスまたは名前で参照できます。名前で参照する場合は、次の文字列となります。
“set_metavalue BY_NAME energy 0.7”
※名前にスペースが含まれている場合は、引用符で囲むことを忘れないでください。
※送信する値は 0~1で正規化する必要があります。
それでは実装例を見てみましょう。
魔王様デモ解説
Unity側
Wrath(怒り)と命名した1つのパラメーターを作り、ツノや炎と結び付けて、キャラクターが人間→小悪魔→魔王らしい姿になるように実装。updateごとにパラメーターをGameSynthに送信しています。
GameSynth側
wrath(怒り)と命名した1つのメタパラメータを作り、エフェクトラックの複数のパラメーターに結び付けています(リポジトリのAlien Hiveというパッチを参考にしています)。
なおキャラクターボイスは、声優の浅見ゆいさんのご協力のもと、部下を叱咤する上司役のサンプルボイスをお借りしています。

宇宙船デモ解説
Unity側
宇宙船の高度、速度、位置の3つのパラメーターを取得し、updateごとにパラメーターをGameSynthに値を送信しています。
GameSynth側
3つのメタパラメータで、エンジン出力や風音、パンをコントロールしています(リポジトリのAntigrav Speederというパッチを参考にしています) 。
最後に
GameSynth Toolは「効果音作成ツール」として販売されていますが、内部ではリアルタイムに音を生み出すエンジンが備わっています。今回のようにTool APIでアクセスすれば、GameSynth Runtimeがなくてもリアルタイムな音の生成・コントロールが手軽に行えます。
ゲーム展示会、デジタルインスタレーションなどで活用すれば、アイディア次第で市販ゲームとは一味違う、よりインタラクティブな音演出が行えるでしょう。
