目次

コマンドアドオンの定義

コマンドアドオンの概要

コマンドアドオンを使い、Wwise Authoringの新しいコマンドを定義できます。各コマンドが、Wwiseによってトリガーされる外部プログラムの1つに関連付けられています。プログラムが実行されると、選択中のオブジェクトから派生する、事前に定義された様々な引数を受領します。

アドオンしたコマンドのトリガー方法は、以下の通り、いくつかあります:

  • キーボードショートカット
  • コンテキストメニュー
  • メインメニュー
  • Control Surface
  • WAAPI で、 ak.wwise.ui.commands.execute を使用

アドオンしたコマンドを定義できるレベルが、いくつかあります:

  • ユーザーデータディレクトリ内の、"%APPDATA%\\Audiokinetic\\Wwise\\Add-ons\\Commands"の下
  • Installationフォルダ内の、"Authoring\\Data\\Add-ons\\Commands"の下
  • プロジェクトフォルダ内の、"Add-ons\\Commands"の下
  • ak.wwise.ui.commands.register を使用
Note.gif
注釈: IDのコンフリクトがある場合、最初にロードしたコマンドだけが登録されます。コマンドは、上記の順番でロードされます。
Note.gif
注釈: インスタレーションフォルダやユーザーデータディレクトリで指定したコマンドアドオンは、Wwise起動時にロードされます。プロジェクト下で指定したコマンドアドオンは、プロジェクトをロードするときにロードされます。

さらにWwiseでコマンドを実行する度に、WAAPIがサブスクライバーに対し ak.wwise.ui.commands.executed で通知し、選択されたオブジェクトをパスし、WAAPIリターンの設定に従います。 アドオンコマンドは実行するプログラムがなくても定義できるので、WAAPIクライアントで自分のコードを実行するためにパブリケーションイベントを使うこともできます。

コマンドアドオンの定義

定義するフィールド

コマンドの内容を以下のフィールドで定義します:

  • id: コマンドの、人間が読めるユニークIDを定義します。IDのコンフリクトの可能性を減らすために、作者名、プロダクト名、コマンド名のコンカチネーションを利用したIDにしてください。
  • displayName: ユーザーインターフェースに表示される名前を定義します。
  • program: コマンドを実行したときに稼働するプログラム、またはスクリプトを定義します。引数は 'args' で指定します。
  • args: 引数を定義します。サポートされているビルトイン変数に関しては、ドキュメンテーションを参照してください。なお、複数選択の場合は、startModeフィールドに従い変数を拡張します。
  • cwd: プログラムを実行するための、カレントワーキングディレクトリを定義します。
  • defaultShortcut: デフォルトでこのコマンドに使うショートカットを定義します。このショートカットでコンフリクトが発生する場合は、使用されません。このショートカットは、Keyboard Shortcut Managerで変更できます。
  • startMode: Wwiseユーザーインターフェースで複数選択した場合に、引数フィールドの変数をどのように拡張するのかを指定します。
  • SingleSelectionSingleProcess: 単一選択のみに対応し、プログラムを1回だけ起動します。
  • MultipleSelectionSingleProcessSpaceSeparated: プログラムは1回だけ起動し、変数が拡張され引数がスペースで区切られ、それぞれの引数をダブルクオーテーションマークで囲みます。
  • MultipleSelectionMultipleProcesses: プログラムは選択したアイテム毎に1回ずつ、並行して起動します。稼働中の各インスタンスが、それぞれ選択されたアイテムを1つずつ受領します。
  • contextMenu
    • basePath: 親サブメニュー用に、フォワードスラッシュで区切ったパスを定義します。空の場合は、メニューが最初のレベルにインサートされます。
  • enabledFor: このアイテムを有効にするオブジェクトタイプ名の、コンマで区切ったリストを定義します。サポートされるタイプ名のリストを確認するには、 Wwise Objects Reference を参照してください。空の場合は、すべてのタイプが許容されます。
  • visibleFor: このアイテムが見えるオブジェクトタイプ名の、コンマで区切ったリストを定義します。サポートされるタイプ名のリストを確認するには、 Wwise Objects Reference を参照してください。空の場合は、すべてのタイプが許容されます。
  • mainMenu
    • basePath: 親サブメニュー用に、フォワードスラッシュで区切ったパスを定義します。少なくともトップメニューに関連する1つのレベルだけは、定義する必要があります。

引数の変数

事前に定義された以下の変数(variable)を、 args フィールド (program arguments) で使うことができます。複数選択を利用する場合にこれらの変数をどのように活用するかについて知るには、 startMode を参照してください。

Variable Type Description
${id} string オブジェクトID (GUID)。
${name} string オブジェクト名。
${notes} string オブジェクトの備考。
${type} string オブジェクトタイプ。使用可能なタイプについては Wwise Objects Reference を参照。
${path} string プロジェクトのルートからのオブジェクトパス。例: '\\Actor-Mixer Hierarchy\\Default Work Unit\\Sound1'
${isPlayable} boolean オブジェクトをTransportで再生可能であれば、True。
${shortId} integer オブジェクトのショートID。
${classId} integer オブジェクトのクラスID。
${category} string オブジェクトカテゴリ。例: 'Actor-Mixer Hierarchy'
${filePath} string オブジェクトが入っているファイルへのパス。パスは、Work Unitファイル、またはプロジェクトファイル。
${childrenCount} number このオブジェクトの、子の数。
${sound:originalWavFilePath} string 元のWAVファイルの絶対パス。これはSoundオブジェクトやAudio Sourceオブジェクトに限り、有効。
${sound:convertedWemFilePath} string 変換されたwemファイルの絶対パス。選択肢からプラットフォームを指定。これはSoundオブジェクトやAudio Sourceオブジェクトに限り、有効。
${soundbank:bnkFilePath} string SoundBankオブジェクトに関連する、生成されたSoundBankファイルの絶対パス。これはSoundBankオブジェクトに限り、有効。
${workunit:isDefault} boolean このWork Unitがデフォルトであれば、True。
${workunit:type} string Work Unitのタイプ。なお、Work Unitsと同様に、物理フォルダにも"WorkUnit"というタイプがあります。物理フォルダの場合は、workunit:type "folder" です。
可能な値: "folder", "rootFile", "nestedFile"
${workunit:isDirty} boolean Work Unitやプロジェクト (wprojファイル) がダーティであれば、つまり変更されたあとに保存されていなければ、True。

コマンドアドオンの例

定義するフィールド

新しいコマンドを作成するには、 コマンドアドオンの定義 に記載されたディレクトリの1つの下にJSONファイルを作成します。 なお、このディレクトリには、複数のサードパーティがファイルを作成することができるので、注意してください。 ファイル名のコンフリクトの可能性を減らすために、ファイル名の命名規則として、次を推奨します: companyname_productname.json

例: mycompany_myproduct.json

{
    "commands":[
        {
            "id":"ak.edit_in_vscode",
            "displayName":"Edit in Visual Studio Code",
            "defaultShortcut":"C",
            "program":"code",
            "startMode":"MultipleSelectionSingleProcessSpaceSeparated",
            "args":"${filePath}",
            "cwd":"",
            "contextMenu":{
                    "basePath":"Editors",
                    "enabledFor":"Sound,ActorMixer,SwitchContainer,RandomSequenceContainer"
                },          
            "mainMenu":{
                    "basePath":"Extra"
                }
        },
        {
            "id":"ak.open_in_wavosaur",
            "displayName":"Edit in My Wav Editor",
            "defaultShortcut":"W",
            "program":"c:\\MyWavEditor\\WavEditor.exe",
            "args":"${sound:originalWavFilePath}",
            "cwd":"",
            "contextMenu":{}
        }          
    ]
}

WAAPIを使った例

上記と全く同じJSONコマンドコードを、WAAPI ak.wwise.ui.commands.register にパスすれば、現在のWwiseプロセスに新しいコマンドを追加できます。

なお、 ak.wwise.ui.commands.register で追加したコマンドは永続化されません。このWwiseプロセスが終了するまで、残ります。 次回は、再度登録する必要があります。

WAAPIと合わせてアドオンコマンドを使う

アドオンコマンドを使って、WAAPIスクリプトやプログラムを実行することができます。これを使えば、Wwise機能やプロジェクトデータにアクセスできます。WAAPIで何ができるかについては、 Wwise Authoring API (WAAPI)を使用する を参照してください。

Macでアドオンコマンドを使う

Macでアドオンコマンドを実行するのに使うのは

 /bin/sh -c

. どのような実行ファイルやスクリプトでも、 program で直接指定できます。アプリを開くには、まず open コマンドを使います。スペースのあるパスは、シングルクオーテーションマークで囲むものとします。

例: mycompany_myproduct_forMac.json

{
    "commands":[
        {
            "id":"ak.edit_in_audacity",
            "displayName":"Open wav in Audacity",
            "defaultShortcut":"A",
            "program":"open -n -a /Applications/Audacity.app",
            "startMode":"SingleSelectionSingleProcess",
            "args":"${sound:originalWavFilePath}",
            "cwd":"",
            "contextMenu": {
                "basePath":"Editors",
                "enabledFor":"Sound"
            }
        },
        {
            "id":"ak.edit_in_script",
            "displayName":"Open in script",
            "defaultShortcut":"A",
            "program":"'/path/to/folder with spaces/myScript.sh'",
            "startMode":"SingleSelectionSingleProcess",
            "args":"${sound:originalWavFilePath}",
            "cwd":"",
            "contextMenu": {
                "basePath":"Editors",
                "enabledFor":"Sound"
            }
        }
    ]
}