目次

SoundFrame の統合方法

関連ファイル

SoundFrame を使用するには、次のファイルが必要になります:

  • include/AK/SoundFrame/SF.hinclude/AK/SoundFrame/SFObjects.h
    これらのファイルを、SoundFrame クライアント用に含める必要があります。
  • lib/Debug/SFLib.lib
    このファイルは SoundFrame クライアントのデバッグライブラリです。
  • lib/Release/SFLib.lib
    このファイルは SoundFrame クライアントのリリースライブラリです。

以下のサンプルも利用可能です:

  • samples/SoundFrame/SFTest/*
    これらのファイルは SoundFrame Test サンプルアプリケーションと関連しています。
  • samples/SoundFrame/CarSim/*
    これらのファイルは CarSim サンプルアプリケーションと関連しています。

SoundFrame での作業

以下の例は、SoundFrame クライアントの基本的なコード構造です:

#include <AK/SoundFrame/SF.h>

class SoundFrameClient
    : public AK::SoundFrame::IClient
{
    AK::SoundFrame::ISoundFrame * m_pSoundFrame;
public:

    SoundFrameClient()
        : m_pSoundFrame( NULL )
    {
        AK::SoundFrame::Create( this, &m_pSoundFrame );
        
        if ( m_pSoundFrame )
            m_pSoundFrame->Connect();
    }

    ~SoundFrameClient()
    {
        if ( m_pSoundFrame )
            m_pSoundFrame->Release();
    }

    // SoundFrame::IClient methods

    virtual void OnConnect( bool in_bConnect ) {}
    virtual void OnEventNotif( Notif in_eNotif, AkUniqueID in_eventID ) {}
    virtual void OnDialogueEventNotif( Notif in_eNotif, AkUniqueID in_dialogueEventID ) {}
    virtual void OnSoundObjectNotif( Notif in_eNotif, AkUniqueID in_soundObjectID ) {}
    virtual void OnStatesNotif( Notif in_eNotif, AkUniqueID in_stateGroupID ) {}
    virtual void OnSwitchesNotif( Notif in_eNotif, AkUniqueID in_switchGroupID ) {}
    virtual void OnGameParametersNotif( Notif in_eNotif, AkUniqueID in_gameParameterID ) {}
    virtual void OnTriggersNotif( Notif in_eNotif, AkUniqueID in_triggerID ) {}
    virtual void OnArgumentsNotif( Notif in_eNotif, AkUniqueID in_argumentID ) {}
    virtual void OnEnvironmentsNotif( Notif in_eNotif, AkUniqueID in_environmentID ) {}
    virtual void OnGameObjectsNotif( Notif in_eNotif, AkGameObjectID in_gameObjectID ) {}
}
Caution.gif
Caution: SoundFrame が Wwise オーサリングツールからのメッセージを受信するためには、AK::SoundFrame::ISoundFrame::Connect が Window を作成する必要があります。関数はアプリケーションのメッセージポンプと同じスレッドから呼び出される必要があります。

クライアントは、ISoundFrame インターフェースを保有している間、これを以下の方法で Wwise と相互作用するために使用することができます:

Wwise オブジェクトの使用

SoundFrame は、Wwise オブジェクトのアプリケーションへの統合を可能にします。SoundFrame 使用により、イベント再生、スイッチ割り当て、環境設定などのタスクを実行することができます。以下の Wwise オブジェクトは、SoundFrame での使用が可能です:

  • イベント
  • ダイアログイベント
  • ステート
  • スイッチ
  • ゲームパラメータ
  • トリガー
  • 引数
  • 環境エフェクト

Wwise オブジェクトの参照

Wwise オブジェクトをアプリケーションで使用する場合には、これらのオブジェクトを参照する方法を知っておくことが重要です。Wwise オブジェクトを参照する方法には2通りあります:

  • 名前で参照 — 文字列を含んだサウンドバンクを使用するゲームに好ましい方法。
  • AudioEngine ID で参照 — 文字列を含まないサウンドバンクを使用するゲームに好ましい方法。

アプリケーションへの Wwise オブジェクトの統合

Wwise オブジェクトをアプリケーションへ統合する場合には、次のいずれかの方法を利用してこの機能を有効にできます:

  • Wwise の Send to SoundFrame コマンド(イベントの場合のみ)
    IClient::OnEventNotif で Notif_Push 通知をリッスン。
  • ドラッグ·アンド·ドロップ
    ISoundFrame::GetDnDType とドラッグ·アンド·ドロップ·ハンドラ内の様々なドラッグ·アンド·ドロップ·プロセスメソッドを使用。

減衰を使用した作業

プロジェクトに減衰(アッテネーション)が含まれている場合、アプリケーションに表示される Wwise が定義する最大減衰値を見ると便利です。SoundFrame を使用して、減衰値を表示し、これらの値が Wwiseで変更された場合に通知を受けられるよう登録することができます。

減衰の表示

SoundFrame から見ると、減衰はサウンドオブジェクトのプロパティです(詳細は ISoundObject を参照)。 アプリケーション内に減衰値を表示するには以下を行ってください:

  • イベントから次のパスに従います:IEvent > IActionList > IAction > ISoundObject

減衰変更通知の登録

アプリケーションを、適切に減衰値を表示するよう適応させた後は、減衰変更通知の登録を行うことをお勧めします。

減衰変更通知を登録するには:

これにより、Wwise で減衰値が変更された際に AK::SoundFrame::IClient::OnSoundObjectNotif の Notif_Changed 型通知を受信できるようになります。

減衰変更通知の登録を解除するには:

SoundEngine API での作業

SoundFrame によって、大部分の Sound Engine API にアクセスすることが可能です。これにより、イベント再生の有効化およびアプリケーション内のステート、スイッチ、RTPC、トリガーと環境の変更を行うことができるようになります。この API を使用すると、作動ゲームエンジンやサウンドバンク生成をも必要とせずに実際のゲームシナリオを Wwise で直接シミュレートすることができます。

イベント再生の有効化

ユーザーがアプリケーション内からイベントを再生できるようにしたい場合は、次のようにイベント再生を有効にする必要があります:

  • ISoundFrame::PlayEvents を呼び出します。
Note.gif
Note: アプリケーションが Play モードになると、多数のイベントが長いシーケンスで   。従って、再生中は ISoundFrame::SetPlayBackMode を使用して再生モードを True に設定することをお勧めします。再生が終了したら、再生モードの設定を False に戻すことができます。再生モードを False に設定すると、Wwise 内のすべての再生が停止されます。

ゲームステートとスイッチの変更

SoundFrame の使用により、アプリケーション内のアクティブなステートおよびスイッチを変更して、実際のゲームシナリオをシミュレートすることができます。これは、次のメソッドにより可能です:

  • ISoundFrame::SetCurrentState
  • ISoundFrame::SetCurrentSwitch

ゲームオブジェクトの作成とその位置の変更

SoundFrame により、ゲームオブジェクトを作成または削除し、これらのオブジェクトの位置を3次元で(立体的に)変更できるメソッドへのアクセスができます。また、リスナーを定義し、これらをアプリケーション内の任意の場所に配置することができます。これを行うには、次のメソッドを使用します:

  • ISoundFrame::RegisterGameObject
  • ISoundFrame::UnregisterGameObject
  • ISoundFrame::SetActiveListeners
  • ISoundFrame::SetPosition
  • ISoundFrame::SetListenerPosition
  • ISoundFrame::SetListenerSpatialization

RTPC、トリガー、環境の変更

SoundFrameにより、よりリアルなゲームシミュレーション作成のために、RTPCおよび環境の変更を行い、また、インタラクティブミュージックトリガーを起動することができます。更に、ゲームオブジェクトのオブストラクションおよびオクルージョンレベルを定義することも可能です。これを行うには、次のメソッドを使用します:

  • ISoundFrame::SetRTPCValue
  • ISoundFrame::PostTrigger
  • ISoundFrame::SetGameObjectAuxSendValues
  • ISoundFrame::SetGameObjectOutputBusVolume
  • ISoundFrame::SetEnvironmentVolume
  • ISoundFrame::BypassEnvironment
  • ISoundFrame::SetObjectObstructionAndOcclusion

SoundFrame でのサウンドバンクを使用した作業

Wwise ユーザーは、SoundBank Manager を使用してサウンドバンクの作成およびイベントの投入を行うことができます。

ただし、イベントをゲームに統合するために3Dアプリケーションやレベルエディタのようなほかのアプリケーションを使用する場合、その使用アプリケーションから SoundBank 定義ファイルを生成し、これを Wwise にインポートして自動的にサウンドバンクを作成およびイベントの投入を行うことができます。

SoundBank 定義ファイルの形式

定義ファイルは、ゲーム内の全てのイベントをサウンドバンク別に分類しリストしたテキストファイルです。定義ファイルには、タブ区切りされたサウンドバンクの名前と対応するイベント名が含まれている必要があります。次の図は、Wwiseで読み込み可能になるように定義ファイルを記述する方法を示しています。

SoundBankDefinitionFile_Strings.gif

定義ファイルは、サウンドバンクにパッケージされるプロジェクト要素のタイプを定義する特別なキーワードも含むことができます。次のようなキーワードの使用が可能です:

  • Event: イベント情報がサウンドバンクとパッケージされることを指定。
  • Structure: サウンドおよびミュージック構造情報がサウンドバンクとパッケージされることを指定。
  • Media: オーディオメディアファイルがサウンドバンクとパッケージされることを指定。

定義ファイルでは、これらのキーワードのうちの1つまたは複数を、タブ区切りでイベント名の後に追加することができます。定義ファイルにキーワードが含まれていない場合は、すべてのプロジェクト要素とメディアがサウンドバンクにパッケージされます。次の図は、定義ファイル内でこれらのキーワードを使用する方法を示しています。

SoundBankDefinitionFile_Options.gif

ゲームがイベント名に文字列を使用しない場合は、定義ファイル内のイベント定義に次のシステムのいずれかを使用することができます:

  • 16進数(Hexadecimal)
  • 10進数(Decimal)

次の図は、異なるシステムによる定義ファイル内のイベントの定義方法を示しています。

SoundBankDefinitionFile_StringGUIDHexDec.gif

Event ID は、SoundFrame を介して色々な関数で入手可能です:

詳細は、AKSoundFrame::IEvent, AK::SoundFrame::IClient and AK::SoundFrame::ISoundFrame をご覧ください。

Importing SoundBank 定義ファイルの Wwise へのインポート

SoundBank 定義ファイルは、手動または SoundFrame を介してインポート可能です。

SoundFrame を介した SoundBank 定義ファイルのインポート

アプリケーションが SoundBank 定義ファイルを生成したら、新しい定義ファイルをインポートする必要があることを Wwise に通知するための呼び出しを行います。

Wwise に新しい SoundBank 定義ファイルをインポートする必要があることを通知するには:

Note.gif
Note: 定義ファイルで作成されたサウンドバンクは、デフォルト SoundBank Work Unit に配置されていることに注意してください。別のワークユニットにサウンドバンクを作成するには、Wwise で定義ファイルを手動でインポートする必要があります。

アプリケーションが SoundBank 定義ファイルを生成しない場合は、サウンドバンクの再生成が必要であることを Wwise に知らせるための呼び出しを行うことができます。

Wwise にサウンドバンクを再生成する必要があることを通知するには:

手動での SoundBank 定義ファイルのインポート

定義ファイルをインポートしてサウンドバンクを作成または更新するには以下を行います:

  1. Project Explorer の SoundBanks タブからワークユニットを右クリックしてコンテキストメニューを開き、"Import SoundBank Definition ..." を選択。 Open ダイアログボックスが表示されます。
  2. 定義ファイルが作成された場所に移動します。
  3. Openをクリック。
    Import Definition Log ダイアログボックスが表示されます。
  4. ログ内のインポートアクティビティを確認します。インポートアクティビティは、以下のいずれかになります:
    • SoundBank Created — 新しいサウンドバンクが作成されました。
  • Event Added — 既存または新しいサウンドバンクに新しいイベントが追加されました。
  • Event Deleted — 既存のサウンドバンクからイベントが削除されました(詳細は以下の注を参照)。
  • Event Missing — ファイルにリストされているイベントがもはやプロジェクト内に存在しないか作成されていない。
  • No Change Detected — インポートされたサウンドバンクが、既に Wwise 内に存在するバンクと同一である。
  1. Closeをクリック。
    定義ファイルで定義されているサウンドバンクが Wwise 内で作成および/または更新されます。
Note.gif
Note: Wwise は、イベントが手動でユーザーにより追加されたか、SoundBank 定義ファイルのインポートにより自動的に追加されたかを記憶しています。後の定義ファイルインポート時には、定義ファイルのインポートにより追加されたイベントのみが削除されます。手動で追加されたイベントは、定義ファイルにリストされていない場合でもサウンドバンクから削除されません。