コマンドアドオンで実現できる、ワークフローの改善

オーディオプログラミング / Wwiseの使い方やツール

継続的なワークフロー改善の努力を

あなたは、日常的タスクの最適なワークフローを追及するタイプですか?面倒な繰り返し作業を洗い出すのは、日常的な習慣として定着させるべきで、自分でワークフローを改善する時間を確保しておいたり、人に依頼したりすることに慣れるべきです。ゆくゆくは、これが時間の節約につながります。誰でも知っていることです。でも、実践できていますか?
仕事の一環として毎日、様々なツールを使います。中にはカスタマイズできるツールもあるでしょう。カスタマイゼーションは、ワークフロー改善の1つの方法です。今回のブログでは、これがテーマです。
さて、Wwiseをカスタマイズする方法はいくつかあります。簡単な方法もあれば、ファイルの変更や、ちょっとしたプログラミングが必要な場合もあります。今日は、Wwiseを自分専用にするためのテクニックをいくつか紹介します。

コマンドアドオンを試してみよう

Wwiseのコマンドは、ユーザーのリクエストで稼働する実行可能なフラグメントです。コマンドをトリガーするためのメカニズムは、いくつかあります:
  • キーボードショートカット(メニューからProject > Keyboard Shortcuts
  • コンテキストメニュー、メインメニュー
  • コントロールサーフェス
  • ak.wwise.ui.commands.execute を使ったWwise Authoring API (WAAPI)
Wwise 2018.1の時点でWwiseに組み込まれたコマンドは、200以上あります。コマンドは Keyboard Shortcutsダイアログで確認できるほか、そのほとんどが、 この一覧 に掲載されています。
Wwise 2018.1.2では、新しくコマンドアドオン(Command Add-ons)を追加しました。コマンドアドオンを使えば自分でWwiseコマンドを作成し追加できます。簡単にいうと、Wwiseから外部プログラムを実行できるようになりました。コマンドアドオンを定義するのは、以下の属性です:
  • id:人間が読めるユニークIDを定義。
  • displayName: ユーザーインターフェースに表示される名前を定義。
  • program: コマンドを実行したときに稼働するプログラム、またはスクリプトを定義。
  • args: プログラムを起動する引数を定義。
  • cwd: プログラムを実行するための、カレントワーキングディレクトリを定義。
  • defaultShortcut: デフォルトでこのコマンドに使うショートカットを定義。
  • startMode: Wwiseユーザーインターフェース側で複数選択した場合に、引数フィールドの変数をどのように拡張するのかを指定。
  • contextMenu: コンテキストメニューを定義。
  • mainMenu: メインメニューを定義。
幸い、args属性に使える変数が一式、Wwiseに組み込まれています。例えば、選択中のオブジェクトのid、name、pathまたはオリジナルwavファイルを取得し、実行するプログラムに対し引数として渡すことができます。実はこれが一番大事な部分で、Wwiseで自分のコードを実行するときに、現状(コンテキスト)に合った範囲におさめることができます。詳しくは後ほど...。

外部波形編集ソフトの、新しい追加方法

すでに知っているかもしれませんが、WwiseのExternal Editor機能(Project > User Preferences > External Editors)で、あなたのコンピュータ上の使い慣れた波形編集ソフトを選択し、Wwiseから直接起動することができます。Wwiseをカスタマイズする方法の1つですが、目の前の状況(コンテキスト)から離れずに、WAVファイルを素早く編集したいときに、非常に便利です。
コンテキストこそ、ワークフロー最適化の要です。コンテキストを切り替えると、オーバーヘッドが大幅に増えます。外部エディタを使わない場合を考えてください。WAVファイルを1つ編集するのに、どういった手順を踏む必要がありますか?
  1. WindowsのStart Menuで、お気に入りのWAVエディタを見つけます
  2. WAVエディタで、「ファイルを開く」を選びます
  3. WAVエディタで、「ファイルを開く」を選びます
  4. ファイルを編集します
  5. 保存します
External Editor機能を使えば、上記の手順3までを省略できる上に、ワークフローを中断させかねない「探して見つける」という作業を排除できるのです。探すのは頭を使うかなり手間のかかる作業で、意識を切り替えなければなりません。もしかわりにファイルの編集作業という一番大事なタスクに集中できれば、非常に助かります。
次に、前のセクションで説明したコマンドアドオンを使い、もう一歩先に進めます。コマンドアドオンを外部エディタの代わりに利用でき、柔軟性が大幅に向上します。ただし、多少の事前準備が必要です。初めて使うときの手順を説明します:
まず最初に、ディレクトリの構成を設定します。
  1. Windows:  %appdata%\Audiokinetic\Wwise を開きます
    Mac:  ~/Library/Application Support/Wwise2018/Bottles/wwise/drive_c/users/crossover/Application Data/Audiokinetic/Wwise を開きます
  2. ディレクトリ“Add-ons”を作成します
  3. ディレクトリ“Commands”を作成します

次の手順には、最近のテキストエディタであれば、何を使っても構いません。私は個人的にVisual Studio Codeを使っていますが、JSONエディタとして適しています。Commandsディレクトリの下に新しいファイルを作成します。ファイル名を mycommands.json とし、以下の内容をコピペしてください:
{
   "commands":[
       {
           "id":"ak.open_in_wavosaur",
           "displayName":"Edit in Wavosaur",
           "defaultShortcut":"W",
           "program":"c:\\portable\\Wavosaur.1.1.0.0-x64(en)\\Wavosaur.exe",
           "args":"${sound:originalWavFilePath}",
           "cwd":"",
           "contextMenu":{
                   "visibleFor":"Sound"
               },
           "mainMenu":{
                   "basePath":"Edit/WAV Editors"
               }
                   
       }    
   ]
}
 
次に、exeへのパスを修正します。今回の例では、ポータブルバージョンもある無料のWavosaurを使いました。JSONファイルのバックスラッシュをエスケープする必要があることを忘れないでください。すべてのバックスラッシュを倍にしないといけない、ということです。Macでは、シングルスラッシュを使います。また、私はこのコマンド用に、キーボードショートカットとして“W”を設定しました。これは、自由に変更してください。キーを組み合わせることも可能で、例えば“Ctrl+Alt+W”などとできます。ただしWwiseキーボードショートカットとしてすでに使われているキーであれば、あなたが設定するキーは無視されてしまいます。ここで、“args”:“${sound:originalWavFilePath}”が何をするのかを理解しておく必要があります。Wwiseはこの変数を、Wwiseで選択したアイテムに関連する実際のWAVファイルパスに、自動的に置き換えます。複数のオブジェクトが選択されている場合は、Wwiseが変数を自動的に拡張し、スペースで区切られたパスにします。この動作を変えるには、startModeを設定します。設定できるモードについて、詳しくはドキュメンテーションを確認してください。それでは、Wwiseを再起動し、試してみてください。右クリックすると、コンテキストメニューに新しい項目が表示されるはずです。
 

コマンド内でWAAPIをトリガーする

Wwiseから自由にプログラムを起動できるようになったところで、次はプログラムを書いてみては?手順を追って丁寧に説明してみます。この演習に使うのは、PythonとWAAPIです。
WAAPIの詳細は、  ここです
 WAAPI Python クライアント について。
このプロジェクト全体が、 github にあります。
 
Pythonのコードは、offset_property.pyにあります。スクリプトの最初の部分で、引数を扱っています。実行すると、実際にはスクリプトにWwiseのオブジェクトのID、つまりGUIDのリストが送られます。オブジェクトIDは、Wwise側の選択内容で決まります。
次に、スクリプトがWAAPIを使いWwiseに接続します。WaapiClient オブジェクトを作成すると、自動的に行われます:
# Connect (default URL)
client = WaapiClient()
次に、引数としてパスされるWwiseオブジェクトの現在のボリュームを取得します。そのためにはWAAPIクエリを使い、指定オブジェクトすべてのボリュームとオブジェクトIDを返すように伝えます。
# Retrieve the volume and id for the selected objects
query = { 'from': { 'id': args.id }}
options = { 'return': ['id', '@Volume']}
result = client.call("ak.wwise.core.object.get", query, options=options)
WAAPI のクエリ について。
最後に、新しいボリュームが計算された各オブジェクトに関して、setPropertyをコールします。
# Set new volumes
for object in result['return']:
   if '@Volume' in object:
       args = {
           'object': object['id'],
           'property': 'Volume',
           'value': object['@Volume'] + 1
       }
       client.call("ak.wwise.core.object.setProperty", args)
スクリプト全体が、 ここ にあります。

さて、次にこのスクリプトを、Wwiseからコマンドアドオンを使ってコールします。必ずWwise 2018.1.2以降のバージョンを使ってください:
1. あなたのコンピュータにPython 3がインストールされていることを確認します。
2. github にあるプロジェクトをクローンするか、ダウンロードします。
3. ファイル offset_property_commands.jsonを、以下にコピーします:
          a. Windows: %appdata%\Audiokinetic\Wwise\Add-ons\Commands
          b. Mac: ~/Library/Application Support/Wwise2018/Bottles/wwise/drive_c/users/crossover/Application                                                           Data/Audiokinetic/Wwise/Add-ons/Commands
4. ファイルを編集し、offset_property.pyへのパスを、あなたがgithubプロジェクトを入れたコンピュータ上の場所に変えます
5. Wwiseを再起動します
6. オブジェクトを選択し、ボリュームの増減に「-」や「=」キー使います。
 

スクリプト実行のためにコントロールサーフェスをセットアップ

それでは、もう少し先に進めます。デスクの上に放置された古いMIDIコントローラを使って、今つくった新しいコマンドをトリガーしてみます。ボリュームをボタンで変化させるのは実はおもしろくて、プロパティを微妙に徐々に変えることができます。
1. あなたのデバイスを、Control Surfaceのデバイスリストに追加し、接続します (Project > Control Surfaces):
Picture1
2. 次に、Control Surface Bindingsビューを開き、Default Control Surface Sessionを変更します。
3. Globalコマンドというタイプのグローバルバインディングを追加します。
 
Picture3

4. コマンドリストで“volume”を検索し(サーチはCtrl+F3)、Increase Volumeを選択します。OKをクリックします。
Picture4

5. コントロールサーフェスのaボタンを押します。
Picture5

6. Decrease Volumeコマンドに関しても、この手順を繰り返します
その結果、このような感じになるはずです:
Picture6
これで、Wwiseのどこからでも、自分のコントロールサーフェスが使えるようになり、どのオブジェクトを選択しても、コントロールサーフェスでトリガーするコマンドに反応します。

まとめ

この演習は、コマンドアドオンの機能のほんの一部を紹介しただけです。可能性は、実は無限大です。ほかにも、例えばこんなことが考えられます:
  • ワークユニットのファイルを、お気に入りのテキストエディタで編集
  • ゲームエンジンを、Eventでトリガー
  • あるサウンド用に、テキスト読み上げの音声合成をトリガー
  • WAVファイルへマスタリングエフェクトチェインを実行
  • 選択したオブジェクトの名前を使い、JIRAをサーチ
  • オブジェクトのNoteをクリップボードにコピー
  • 複雑なWwise構成の作成を自動化
  • 生成したSoundBankファイルをゲームディレクトリにコピー
  • ワークユニットに対し、gitコマンドをトリガー
 
あなたの他のツールはカスタマイズが可能ですか?あなたは、簡単なプログラミングをしたり、コンフィギュレーションファイルを変更したりできますか?チームのほかの人に頼んでも良し、独学でプログラミングの基礎を学んでも良し。オンラインのリソースを活用すれば、とても簡単にサポートしてもらえるはずです。
さて、今週はどのようなワークフロー改善を実現させますか?

ベルナール・ロドリグ(Bernard Rodrigue)

ベルナール・ロドリグ(Bernard Rodrigue)

AudiokineticDirector of DevelopmentBernard Rodrigueは、AudiokineticのDirector of Development(開発ディレクター)。2005年にAudiokinetic入社。Wwiseの基礎の開発に積極的に関わる。Wwiseの拡張と革新を進める複数のプロジェクトのリーダー。

 @decasteljau

コメント

Replyを残す

メールアドレスが公開されることはありません。

ほかの記事

ボイスの数に圧倒されないために - 最適化でCPU負荷を軽減(PART 1)

28.11.2017 - 作者 マチュー・ジャン(MATHIEU JEAN)

Wwise 2021.1向けAuthoringプラグイン | パート 1: 経緯と目標

14.4.2021 - 作者 ミシェル・ドネイ(MICHEL DONAIS)

ダイアログ|WwiseとUnreal Engineのナレーション

15.2.2022 - 作者 ジェイク・ガムリン(Jake Gamelin)

WAQL 2.0

WAQL(Wwise Authoring Query...

22.8.2023 - 作者 ベルナール・ロドリグ(Bernard Rodrigue)

Wwise Spatial Audio 2023.1の新機能 | 位相ずれの軽減

25.1.2024 - 作者 アレン・リー

AudioLinkと共に挑む冒険

11.4.2024 - 作者 ピーター・ドレッシャー (PDX)