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

GameSynth Tool API -解説-
GameSynth 2023.1から導入されたTool API によって、外部の制作ツールからTCP経由でGameSynthを制御できるようになりました。創作の可能性は無限です。DAWのセッションにパッチを直接レンダリングしたり、複数の効果音バリエーションをゲームミドルウェアに自動的に追加したり、アニメーションツールのモーションカーブを使ってサウンド合成を制御する、といったことが可能です。
今回は、GameSynth Tool APIのコマンドを使った新しいサウンドデザインワークフローの作成の仕方を解説します。

最初のステップ
GameSynth Tool API は非常に簡単に利用できます。APIはGameSynthツールに完全に組み込まれているため、追加のファイルをインストールする必要はありません。さらに、コマンドは TCP 経由で送信されるため、使用する言語 (C++、C#、Python、EEL2、Java など) に関係なく、スクリプト作成 (および TCP 通信) が可能であれば、あらゆるツールをGameSynthと接続できます。
詳細情報が記載された専用のAPI webページもご用意しています。様々な制作ツールとの使用例やスクリプトがすでに提供されており、TsugiとGameSynth コミュニティによってさらに多くのインテグレーションが開発されています。 利用に関するご質問は、GameSynth API専用のチャンネルを設けているDiscordサーバーへお気軽にお寄せください。

他のTCP通信と同様、サーバー (GameSynth) とクライアント (制作ツール) の両方が同じIPアドレス、ポート、エンコーディングを使用している場合に、接続が確立します。さらに、サーバーまたはクライアントが一度に複数のメッセージを送信する必要がある場合に備え、区切り文字が認められます。 デフォルト設定は、ローカルマシンが127.0.0.1、ポートが28542、エンコードがUTF-8、区切り文字が 13 (キャリッジリターン) ですが、これはGameSynthの設定ウィンドウで変更できます。
テストアプリケーションは、GameSynth Tool本体とともに、GameSynth\Tool\API\API Testerフォルダにインストールされます。接続が機能していることの確認や、次項で解説するコマンドを試すのに使用するといいでしょう。
GameSynthコマンド
GameSynth Tool APIのコマンドは、スコープと機能に基づいてグループ化できます。最初のコマンドグループでは、GameSynth のバージョン、利用可能なモデル、使用できる API コマンド、デフォルトパスなどに関する情報を取得できます。また、ツールで使用されるグローバルサンプルレートを設定したり、モデルを切り替えるコマンドもあります。
基本的にこのコマンド群は、スクリプトまたはアドオンがサポートできる機能を判断し、GameSynth をセットアップするのに役立ちます。
使用可能なコマンドは、get_version、get_commands、get_models、select_model、get_path、get_samplerate、set_samplerate、window_back、window_frontです。
パッチコマンド
このコマンドグループは、パッチのロード、スケッチパッドの描画の調整、グローバルバリエーションの設定、対応するサウンドのレンダリングを行うグループで、最も重要度が高いといえるでしょう。
たとえばサウンドファイルをレンダリングしてDAWのトラックに直接挿入したり、いくつかのサウンドバリエーションを生成し、アセットとしてゲームミドルウェアにインポートしたりする目的で使用できます。
以下の動画ではReaperや Unityとの統合を紹介していますが、WwiseのAuthoring API (WAAPI)、BlenderのPython API、Pro Toolsの最近のスクリプトシステムなど、多くのツールでも同様のことが可能です。
使用可能なコマンドは、load_patch, save_patch、render_patch、get_modelname、get_patchname、get_variation、set_variation、get_drawing、set_drawingです。
リポジトリコマンド
このAPIで、プロシージャルサウンドパッチの世界最大のコレクションであるGameSynthリポジトリにアクセスすることができます。
たとえば以下に示すUnityスクリプトの動画では、リポジトリを(名前、カテゴリ、またはタグで)検索したり、目的のパッチにアクセスするコマンドが使われており、シーンにふさわしい工業系の環境音を見つけて、Unityプロジェクトに書き出しています。
使用可能なコマンドは、query_patchnames、query_patch、query_categories、query_tagsです。
Playコマンド
このコマンドグループは、現在のパッチの再生に焦点を当てています。たとえば、リポジトリで見つけたサウンドを書き出しする前に試聴したり、インタラクティブな制作システムでのリアルタイムなサウンド合成に活用できます (次のセクションで詳しく説明します)。
便利なコマンドとして、現在のパッチが無限時間であるかどうか(その場合、ユーザー側で音を何秒書き出すかを指定する必要があります)、またはランダム化されているかどうか (バリエーションを作成する際に必要です) を判断するのにも役立ちます。
また、イベントを有効にすることもできます。サウンド合成中にリアルタイムでイベントをトリガーし、クライアントアプリケーションに送信することも可能です。
使用可能なコマンドは、play、stop、is_playing、is_infinite、is_randomized、enable_eventsです。
メタパラメータコマンド
たとえばインタラクティブなシステムにおいて、再生中のパッチをリアルタイムで制御したい場合、このコマンドグループを使ってメタパラメータを操作できます。クリエイティブコーディングでよく使用されるシステムに、Pure Data (サウンド用) や Processing (プログラミング言語) の2 つの例が挙げられます。
両者で全く異なる方法 (ビジュアルスクリプトと Javaベースのプログラミング) で動作しますが、どちらもGameSynth Tool API を介して接続するのはとても簡単です。
使用可能なコマンドは、get_metacount、get_metanames、get_metaname、get_metavalue、set_metavalueです。
オートメーションカーブコマンド
最後に、オートメーションカーブ関連のコマンドグループです。
これらは前述のメタパラメータのものと非常に似ていますが、GameSynthと他のツールの間でカーブをやりとりするのが目的であり、利用法はまったく異なります。
たとえば、DAW内のオートメーションカーブ、またはアニメーションツール内のモーションカーブをGameSynthに送信し、サウンド合成パラメータを操作してアニメーションに完全に一致するサウンドを生成するといった目的で使用できます。
下の動画では、アニメーション内の回転カーブによってメカアームのモーター音を制御しています。 アニメーションを修正する場合も、そのカーブを新たに読み込めば音が再合成できるので、面倒な再録音や編集作業を必要とせずに、完全に一致した新たなサウンドが生成できます。
使用可能なコマンドは、get_curvescount、get_curvenames、get_curvename、get_curvevalue、set_curvevalueです。
GameSynth Tool API は非常に使いやすく開発されています。追加のインストールや構成は必要なく、どの言語からでも使用できます。 スクリプトやアドオンをコミュニティでお気軽に共有してください。API のページにも採用させていただきます。このAPIを使ってどのようなサウンドデザインのワークフローを作って頂けるか、楽しみにしています。
*本ページに記載されているすべての商標、ロゴ、およびブランド名は、それぞれの権利の保有者に帰属します。