使用例
API サンプルスクリプトは、GameSynth 2023.1以降、ツールとともにインストールされます。 インストールフォルダを変更していない場合、データはC:\Program Files (x86)\Tsugi\GameSynth\Tool\APIフォルダにあります。 Unity、Reaper、Pure Data等からGameSynthをリモート制御できるようになります。
以下の例は、主にAPIの可能性を示すことを目的としています。自由に改善し、プロジェクトのニーズに合わせて調整してください。 APIの使用法や利用可能なインテグレーションに関しては、Discordコミュニティでも行われています。
スタンドアロンアプリ
GameSynth API Tester
GameSynth API Testerは、GameSynth APIの全コマンドを入力するだけでテストできるコンソールアプリケーションです。通信設定 (ポート、エンコーディング、区切り文字) はレジストリ内のGameSynth設定から直接読み取られるため、GameSynthが既に実行されている限り、何も設定することなくすぐにAPIをテストできます。
GameSynth APIとサードパーティソフトウェア間のインテグレーション開発中に問題が発生する場合、まず最初にGameSynthAPITesterアプリケーションで同じコマンドをテストし、それらが機能するかどうかを確認してください。機能しない場合はエラーメッセージを確認し、どのようなエラーが発生しているかをチェックしてください。
MetaPlanes
MetaPlanesは、マウスを動かしてGameSynthの現在のパッチのメタパラメータを制御できる、4つの平面を搭載したスタンドアロンアプリです。
各平面の選択モードによって、様々な方法でメタパラメータをマウスの動きにマッピングできます。(例:マウスポインターの座標、角度や中心または隅からの距離、移動速度)
アンビエント系のパッチや、音楽レイヤーを時間の経過とともに制御するといった用途で活用できます。
使用関数: get_metanames, set_metavalue, play, stop
Unityスクリプト
Unity は人気のあるゲームミドルウェアであり、AAAゲームスタジオからインディーデベロッパーまで、広く使用されています。UnityのWindowsメニューにコマンドを追加するC#スクリプトを含むパッケージ - GameSynthAPIExamples.unitypackageを用意しました。これらのコマンドを使用すると、エディタを離れることなく、GameSynth からアセットをインポートできます。
GSAPI_RenderCurrentPatch
このコマンドは、GameSynth で現在選択されているパッチをwaveファイルとしてレンダリングし、オーディオクリップとしてプロジェクトのAssets フォルダに追加します。
パッチにランダム幅が含まれている場合、変化率を設定して、複数のwaveファイルとオーディオクリップを自動的に生成することができます。
ファイルのレンダリングに使用するビット深度とチャンネル数も指定できます。
使用関数: get_patchname, is_infinite, set_variation, render_patch
GSAPI_RenderRepositoryPatch
このコマンドは、GameSynthリポジトリの任意のパッチを wave ファイルとしてレンダリングし、プロジェクトのAssetsフォルダでオーディオクリップとして使用できるようにします。
テキストを入力して、リポジトリ内の適切なパッチを検索することができます。チェックボックスでは、パッチ、カテゴリ、および/またはタグの名前でテキストを検索するかどうかを選択できます。
一致するパッチのリストが表示され、いずれかをクリックするとGameSynthで開きます。 Unityからパッチを直接再生して、要件に適合しているかどうかを確認することができます。選択したパッチは、単一のファイルまたは多くのバリエーションとしてレンダリングできます。レンダリング オプションは、前のコマンドと似ています。
使用関数: query_patchnames, query_patch, play, stop, is_infinite, set_variation, render_patch
GSAPI_ExportAnimationCurve
このコマンドを使用すると、選択したゲームオブジェクトから GameSynth の現在のパッチにアニメーションカーブをエクスポートでき、そこでオートメーションカーブとして表示されます。
注: アニメーションカーブをエクスポートする前に、UnityのアニメーションパネルにてアニメーションカーブがEuler Angles(オイラー角補間)を使用していることをチェックしてください。
使用関数: get_patchname, set_curvevalue
Godotプラグイン
Godotは、多くのインディーゲーム開発者に採用されている人気のオープンソースゲームエンジンです。Tsugiではエディタ機能拡張用の、2つのプラグインをGDScriptで作成しました。これにより、Godot プロジェクト内からのプロシージャルパッチの直接レンダリングや、各種アニメーションカーブのGameSynthへのエクスポートが可能です。
GSAPI_RenderCurrentPatch
プラグインを導入すると、AudioStreamPlayer、AudioStreamPlayer2D、およびAudioStreamPlayer3Dノードのインスペクターにボタンが追加されます。レンダリング設定を指定してボタンを押すと、現在のGameSynthパッチに対応するwaveファイルの生成、およびゲームアセットへの追加、オーディオノードへの割り当てが自動で行われます。
パッチにランダム幅が存在する場合、書き出しバリエーションの数を選択できます。Godotノード側ではAudioStreamRandomizerを使用して、どのバリエーションを再生するかを決定できます。
使用関数: get_patchname, is_infinite, is_randomized, get_samplerate, set_samplerate, window_parameters, render_patch
GSAPI_ExportAnimationCurve
プラグインを導入すると、AnimationPlayerノードのインスペクターにボタンが追加されます。Godotの各種アニメーションカーブをエクスポートし、現在のGameSynthパッチにオートメーションカーブとして追加します。1秒あたりのポイント数と処理の種類(正規化、クリッピングなど)も指定できます。
使用関数: window_parameters, set_curvevalue
Reaperスクリプト
Reaperは、ゲームオーディオ業界で広く使用されているデジタルオーディオワークステーション(DAW) です。EEL2言語で記述されたReaperスクリプトの例は、GameSynthと共にインストールされます。特別な拡張機能やスクリプト言語をダウンロードしてインストールする必要はありません。コードは表示でき、コメントも付けられるため、教育目的の優れたリソースになります。
GSAPI_RenderCurrentPatch.eel
このスクリプトを使用すると、名前、ビット深度、チャンネル数、サウンドバリエーション数を選択した後、GameSynthで現在選択されているパッチをwaveファイルとしてレンダリングし、それをReaper のカーソルの位置に挿入できます。
パッチの音の長さが無限の場合、waveファイルの長さを指定する必要があります。Reaperでタイム・セレクションを設けている場合、その選択範囲に正確に一致するオーディオを生成することもできます。
使用関数: get_patchname, get_modelname, render_patch, is_infinite
GSAPI_RenderRepositoryPatch.eel
このスクリプトを使用すると、ユーザーはテキストを入力してGameSynthリポジトリ内のパッチを検索できます (たとえば"impact"などで検索)。 パッチの名前、カテゴリ、および/またはタグでテキストを検索するかどうかを選択できます。
ユーザーは、返されたパッチの 1 つに対応する番号を入力して、GameSynth にロードできます。 完了すると、GSAPI_RenderCurrentPatch.eel スクリプトが呼び出され、Reaper のカーソル位置にパッチがレンダリングされます。
使用関数: query_patchnames, query_patch
GSAPI_AutomationExport.eel
このスクリプトは、Reaperプロジェクトで選択されたすべてのオートメーションアイテムを、GameSynth のオートメーションカーブとしてエクスポートします。
使用関数: set_curvevalue
GSAPI_RenderVariationsAtMarkers.eel
Reaper プロジェクト内の各マーカーの位置に、現在のパッチのバリエーションをレンダリングします。
ユーザーは、生成する Wave ファイルのベース名 (タイムライン上のマーカーのインデックスが末尾に付きます)、ビット深度、チャンネル数、使用するバリエーションの数を指定できます。
使用関数: get_patchname, get_modelname, get_variation, set_variation, is_infinite, render_patch
注: Reaperのツールバーの 1 つからこれらのスクリプトを直接起動する場合は、APIサイトからダウンロードしたファイルのReaper\toolbar_iconsサブフォルダを、\AppData\Roaming\REAPER\Data\ にコピーしてください。これらは Reaperのツールバーアイコンブラウザに自動的に表示されます。
Blenderアドオン
Blender は、非常に人気のあるオープンソースの3Dメイキングスイートです。Pythonでプログラムされたアドオンによってあらゆる機能拡張が行えます。 GameSynth Tool APIには、2 つのアドオンを含むアドオン パッケージが付属しており、Blenderの他のアドオンと同様の手順でインストールできます。「編集」->「プリファレンス」->「アドオン」->「インストール」と進み、ブラウザで GameSynth AddOns.zip パッケージを選択して「アドオンをインストール」ボタンを押すと、 パッケージに含まれるアドオンがインストールされます。検索ボックスに「GameSynth」と入力すると、それらを見つけることができます。有効にするには、名前の前のボックスにチェックを入れてください。
GSAPI_RenderCurrentPatch.py
このアドオンは、ビデオ編集のシーケンサービューからアクセスできます。 「追加」メニューから「GameSynth Patch」を選択すると、選択中の各マーカーの位置に現在のGameSynthパッチのサウンドバリエーションが書き出されます。マーカーが選択されていない場合は、再生カーソルの位置に 1 つのサウンドが書き出されます。 設定ウィンドウでは、サウンドファイルを書き出しするフォルダ、ビット深度、モノラル/ステレオ、音を書き出すシーケンサーチャンネルを指定できます。パッチの時間の長さが無限である場合、書き出しするファイルの尺の長さも設定できます。
使用関数: get_patchname, render_patch, is_infinite, window_parameters
GSAPI_ExportCurve.py
このアドオンには、グラフエディタのFカーブコンテキストメニューからアクセスできます。メニュー下部より「Export to GameSynth」を選ぶと、最初に選択したFカーブを現在のGameSynthパッチのオートメーションカーブとしてエクスポートします。 これにより、3D アニメーションに完全に一致するサウンドを生成できます。 ダイアログボックスでは、ターゲットカーブ、その尺の長さ (デフォルトでは BlenderのFカーブの長さとなります)、ループカーブ設定、およびカーブデータを GameSynthの有効範囲にマップするためのさまざまな前処理オプションを選択できます。
使用関数: get_patchname, get_curvenames, set_curvevalue, window_parameters
Pure Dataパッチ
Pure Dataは、オーディオの合成と処理のための無料のパッチ環境です。 GameSynth APIを使用した Pure Dataパッチの例は、GameSynthと共にインストールされます。 外部オブジェクトに依存せず、Pure Dataのバニラバージョンのみインストールする必要があります。
注: Pure Data がTCP経由でデータを送信するために使用するnetsendオブジェクトでは、GameSynth API設定でエンコードをASCIIに設定し、区切り文字コードを59に設定する必要があります。
GSAPI_MetaParametersControl.pd
現在のGameSynthパッチをPure Dataから直接再生および制御します。スライダーは、GameSynthパッチのメタパラメータの値を調整するために使用されます。
Pure Dataを離れることなく、リポジトリから新しいパッチをロードすることで、現在の GameSynthパッチを置き換えることもできます。
もちろん、Pure Dataパッチを独自のサウンドジェネレーターとロジックで拡張することもできます。
使用関数: play, stop, set_metavalue, query_patch
GSAPI_ReceiveEvents.pd
このパッチを使用すると、GameSynth によってイベントがトリガーされたときの通知を有効にすることができます。
Pure Dataパッチがこれらのイベントのいずれかを受信すると、単純なパッドサウンドを再生します。受信したイベントに応じてシンセサイザーのピッチが変化します。
コンパニオンとしてのGameSynthパッチも提供されており、Pure Dataパッチによって生成されたサウンドに合わせて一連のサウンドを再生します。
使用関数: play, stop, enable_events
Processingスケッチ
ProcessingはJavaをベースとした言語で、クリエイティブなコーディングに広く使用されています。処理プログラムはスケッチとして保存され、拡張子は.pdeです。 サンプルスケッチはGameSynth APIで提供されています。Processing IDEで、対応する .pdeファイルを開いて実行するだけです。 このスケッチはProcessing 4.2で書かれています。
GSAPI_MetaParametersControl.pde
このスケッチには、ユーザーのマウス操作で変わるグラフィックが表示されます。また、そのマウス位置は、新しい値をメタパラメータに送信することで、現在の GameSynthパッチで生成されるサウンドをリアルタイムで制御するために使われます。
使用関数: , load_patch, play, stop, set_metavalue
ADX2スクリプト
ADX2はポピュラーなゲームオーディオミドルウェアで、そのオーサリングツールであるAtom Craftを使用すれば、DAWのような直感的なユーザーインターフェースを使ってインタラクティブなサウンドアセットを作成できます。またRobot APIも搭載されており、ユーザーはこれを使ってPythonスクリプトを作成し、ワークフローを自動化できます。
GSAPI_RenderCurrentPatch.py
このスクリプトは、現在のパッチの1つまたは複数のバリエーションを書き出し、それらをAtom Craft プロジェクトのマテリアルとして登録します。作成されるオブジェクトの階層は、スクリプトの実行時にAtom Craft で選択された内容によって異なります。
使用関数: get_patchname, render_patch, is_infinite
Wwiseスクリプト
Wwise は、広く採用されているゲームサウンドミドルウェアです。他のアプリケーションと通信するためにWwise Authoring API (WAAPI) に依存します。 多くの言語を使用できますが、このサンプル スクリプトはPythonで記述されているため、WAAPI client for Pythonがインストールされている必要があります。スクリプトは、Wwiseのコンテキストメニューから呼び出すことができるコマンドアドオンを介して実行されます。コマンドをメニューに追加するには、必ずアーカイブを"%APPDATA%\Audiokinetic\Wwise"フォルダに解凍してください。
GSAPI_RenderCurrentPatch.pyw
のスクリプトは、GameSynth Tool API のユーザーインターフェースコマンドを使用して、書き出しパラメーター (ビット深度、チャンネル、音の長さ、バリエーション数、およびファイル名) を表示します。 次に、選択したコンテナ内で 1 つ以上のサウンドバリエーション (Actor-Mixer、Random、Sequence もしくは Sound SFX) を生成します。パッチの音の長さが無限の場合、追加オプションにより Sound SFX オブジェクト内のループプロパティを有効にすることができ、ループスタート、ループエンド、クロスフェード期間を設定してサウンドループをシームレスに作成できます。
使用関数: get_patchname, render_patch, is_infinite, window_parameters
MAX/MSPパッチ
GSAPI_MetaParametersControl.maxpat
これは、Michael Iberによって提供されているコミュニティ パッチです。Max/MSP からGameSynthパッチを再生および制御できるようになります。パッチは、GameSynthリポジトリから、またはアーカイブに含まれるElectrical.gspatchテストファイルのようにローカルにロードできます。メタパラメータは、個々のスライダーまたはXYパッドを使用して調整できます。
tcp_forwarding.maxpat という名前のもう一つのMax パッチを使用すると、ネットワーク上の別のコンピューターから GameSynthを制御できるようになります。これらのパッチは、Sadam Libraryのオブジェクトに依存してTCP接続を確立します。したがって、ライブラリを使用する前に、Max/MSPのパッケージ マネージャーを介してライブラリをインストールしてください。
使用関数: play, stop, set_metavalue, load_patch, query_patch