目次

Wwiseプラグイン XML 記述ファイル

Wwise のオープンアーキテクチャは、次の3種類のプラグインをサポートしています:サウンドを生成するソースプラグイン、サウンドを向上させるエフェクトプラグイン、Wwise 内でのソース管理ソフトウェア使用を可能にするソース管理プラグイン。

最初の2種のプラグインは、デフォルトプロパティ値を含めた一部のプラグイン設定を、コードの再コンパイルなしですばやく変更することができる XML プラグイン記述ファイルを使用します。Wwise プラグイン DLL は、複数のプラグインを含めることが可能ですが、各プラグインが関連 XML ファイルで記述されている必要があります。

各 Wwise プラグインDLL の XML 記述ファイルは、XML ファイルの拡張子以外は DLL と同じ名前である必要があります。例えば、DLLが "MyPlugin.dll" という名前である場合、プラグイン記述ファイルは "MyPlugin.xml" という名前でなければなりません。

XML ファイルのコンテンツ

XML 記述ファイルには、以下のような Wwise プラグインのいくつかのアスペクトに関する情報が含まれています:

  • プラグイン名
  • 企業IDとプラグインID
  • 各プラットフォームでサポートされる機能
  • 以下のようなプロパティ定義:
    • プロパティ名(コード内および永続化ファイル内でプロパティ識別に使用される文字列)
    • プロパティタイプ
    • RTPC サポート
    • デフォルト値
    • サウンドエンジンプロパティID(プロパティをサウンドエンジンプラグイン内のコードにバインド)
    • 範囲の制限または列挙の制限
    • Dependencies on other properties
    • ユーザーインターフェース記述エレメント
  • 以下のようなインナーオブジェクトタイプ(Inner Object Type)の定義:
    • インナーオブジェクトタイプ名(インナーオブジェクトタイプ識別に使用される文字列)
    • インナーオブジェクトのプロパティ

例:XML定義ファイル

以下は、単純なプラグイン XML 定義ファイルの例です。

<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright (C) 2006 Audiokinetic Inc. -->
<PluginModule>
    <EffectPlugin Name="Wwise Parametric EQ" CompanyID="0" PluginID="105">
        <PluginInfo>
            <PlatformSupport>
                <Platform Name="Windows">
                    <CanBeInsertOnBusses>true</CanBeInsertOnBusses>
                    <CanBeInsertOnAudioObjects>true</CanBeInsertOnAudioObjects>
                    <CanBeRendered>true</CanBeRendered>
                    <CanBeInsertForFeedback>false</CanBeInsertForFeedback>
                </Platform>
                <Platform Name="Mac">
                    <CanBeInsertOnBusses>true</CanBeInsertOnBusses>
                    <CanBeInsertOnAudioObjects>true</CanBeInsertOnAudioObjects>
                    <CanBeRendered>true</CanBeRendered>
                    <CanBeInsertForFeedback>false</CanBeInsertForFeedback>
                </Platform>
                <Platform Name="iOS">
                    <CanBeInsertOnBusses>true</CanBeInsertOnBusses>
                    <CanBeInsertOnAudioObjects>true</CanBeInsertOnAudioObjects>
                    <CanBeRendered>true</CanBeRendered>
                    <CanBeInsertForFeedback>false</CanBeInsertForFeedback>
                </Platform>
                <Platform Name="Xbox360">
                    <CanBeInsertOnBusses>true</CanBeInsertOnBusses>
                    <CanBeInsertOnAudioObjects>true</CanBeInsertOnAudioObjects>
                    <CanBeRendered>true</CanBeRendered>
                    <CanBeInsertForFeedback>false</CanBeInsertForFeedback>
                </Platform>
                <Platform Name="XboxOne">
                    <CanBeInsertOnBusses>true</CanBeInsertOnBusses>
                    <CanBeInsertOnAudioObjects>true</CanBeInsertOnAudioObjects>
                    <CanBeRendered>true</CanBeRendered>
                    <CanBeInsertForFeedback>false</CanBeInsertForFeedback>
                </Platform>
                <Platform Name="PS3">
                    <CanBeInsertOnBusses>true</CanBeInsertOnBusses>
                    <CanBeInsertOnAudioObjects>true</CanBeInsertOnAudioObjects>
                    <CanBeRendered>true</CanBeRendered>
                    <CanBeInsertForFeedback>false</CanBeInsertForFeedback>
                </Platform>
                <Platform Name="PS4">
                    <CanBeInsertOnBusses>true</CanBeInsertOnBusses>
                    <CanBeInsertOnAudioObjects>true</CanBeInsertOnAudioObjects>
                    <CanBeRendered>true</CanBeRendered>
                    <CanBeInsertForFeedback>false</CanBeInsertForFeedback>
                </Platform>
                <Platform Name="Wii">
                    <CanBeInsertOnBusses>false</CanBeInsertOnBusses>
                    <CanBeInsertOnAudioObjects>false</CanBeInsertOnAudioObjects>
                    <CanBeRendered>true</CanBeRendered>
                    <CanBeInsertForFeedback>false</CanBeInsertForFeedback>
                </Platform>
            </PlatformSupport>
        </PluginInfo>
        <Properties>
            <Property Name="OnOffBand1" Type="bool" SupportRTPCType="Exclusive" ForceRTPCCurveSegmentShape="Constant">
                <UserInterface DisplayName="Band 1 Enable" />
                <DefaultValue>true</DefaultValue>
                <AudioEnginePropertyID>4</AudioEnginePropertyID>
            </Property>
            <Property Name="FilterTypeBand1" Type="int32" SupportRTPCType="Exclusive" ForceRTPCCurveSegmentShape="Constant">
                <UserInterface DisplayName="Band 1 Filter Type" />
                <DefaultValue>5</DefaultValue>
                <AudioEnginePropertyID>10</AudioEnginePropertyID>
                <Restrictions>
                    <ValueRestriction>
                        <Enumeration Type="int32">
                            <Value DisplayName="Low Pass">0</Value>
                            <Value DisplayName="High Pass">1</Value>
                            <Value DisplayName="Band Pass">2</Value>
                            <Value DisplayName="Notch">3</Value>
                            <Value DisplayName="Low Shelf">4</Value>
                            <Value DisplayName="High Shelf">5</Value>
                            <Value DisplayName="Peaking">6</Value>
                        </Enumeration>
                    </ValueRestriction>
                </Restrictions>
                <Dependencies>
                    <PropertyDependency Name="OnOffBand1" Action="Enable">
                        <Condition>
                            <Enumeration Type="bool">
                                <Value>1</Value>
                            </Enumeration>
                        </Condition>
                    </PropertyDependency>
                </Dependencies>
            </Property>
            <Property Name="GainBand1" Type="Real32" SupportRTPCType="Exclusive" DataMeaning="Decibels">
                <UserInterface DisplayName="Band 1 Gain" Step="0.5" Fine="0.1" Decimals="1" />
                <DefaultValue>0</DefaultValue>
                <AudioEnginePropertyID>1</AudioEnginePropertyID>
                <Restrictions>
                    <ValueRestriction>
                        <Range Type="Real32">
                            <Min>-24</Min>
                            <Max>24</Max>
                        </Range>
                    </ValueRestriction>
                </Restrictions>
                <Dependencies>
                    <PropertyDependency Name="OnOffBand1" Action="Enable">
                        <Condition>
                            <Enumeration Type="bool">
                                <Value>1</Value>
                            </Enumeration>
                        </Condition>
                    </PropertyDependency>
                </Dependencies>
            </Property>
        </Properties>   
    </EffectPlugin>
</PluginModule>

XML ファイルの様々な部分を詳しく見てみましょう。

XML 定義ファイルヘッダ

XML ファイルのヘッダ部分を詳しく見てみましょう。

<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright (C) 2006 Audiokinetic Inc. -->

すべての XML ファイルの最初の行では、XMLバージョンとエンコーディングが定義されます。ここでは、XMLバージョンは1.0で、エンコーディングは UTF-8 です。Wwise プラグイン記述ファイルの最初の行も、これと全く同様である必要があります。2行目は XML コメントになりますが、ここでは著作権表示です。必要に応じて、XML ファイルの色々な場所にコメントを導入することができます。

PluginModule タグ

<PluginModule>
    ...
</PluginModule>

このドキュメント内に記載されているメイン XML タグは、 PluginModule という名前で、ファイルで定義されている様々なプラグインのための全情報を囲んでいます。

EffectPlugin タグと SourcePlugin タグ

    <EffectPlugin Name="Wwise Parametric EQ" CompanyID="0" PluginID="105" SupportsIsSendModeEffect="false">
        ...
    </EffectPlugin> 

EffectPlugin タグは、シングルエフェクトプラグイン定義のためのメインタグで、SourcePlugin はソースプラグインのタグ名です。

これらのタグには、3つの必須属性が含まれています:

  • Name(必須):この文字列は、Wwise に表示されるプラグイン名を指定します。
  • CompanyID (必須):この文字列は、以下の範囲を尊重する正の整数を表している必要があります:
    • 64~255:社内で開発・使用されるプラグインに対して自由に使用することができます。 外部配布用のプラグイン向けではありません。
    • 256~4095:商用プラグイン用です。Audiokinetic によってサードパーティーデベロッパに割り当てられます。この範囲内の値の割り当てを受けている場合は、64~255 の範囲の値の代わりに使用してください。それ以外の場合は、これらの値を使用しないでください。
    • 0~63:利用不可。Audiokinetic 用です。
  • PluginID (必須):この文字列は 0~65535 の範囲の正の整数でなければなりません。各 PluginID は、指定された CompanyID に対して一意である必要があります。
  • SupportsIsSendModeEffect (オプション):(エフェクトプラグインのみ)この bool 型値は、初期化部分で AK::IAkEffectPluginContext::IsSendModeEffect() を照会することにより、プラグインがセンドモードをサポートしているかどうかを示します。IsSendModeEffect() が true を返した場合、プラグインはドライ信号を出力するべきではなく、ドライレベルのプロパティを無視する必要があります。

例えば、社内使用目的のみでソースプラグイン2つおよびエフェクトプラグイン1つを開発している場合、64 から 255 の間の任意の CompanyID および 0 から 65535 の間の任意の PluginID を3つ選ぶことができます。数字が連続している必要はありません。

Caution.gif
Caution: Audiokinetic 提供のサンプルプラグインをプラグインのベースにする場合(サンプルプラグイン)、CompanyID と PluginIDs を適切なものに変更することを忘れないようにしてください。公式 CompanyID が割り当てられている場合は、これを使用してください、それ以外の場合は、64 から 255 の間の数字を使用してください。この CompanyID に対して、同じ PluginID が繰り返されていないことを確認してください。

同じ CompanyID に対して、2つ以上の PluginID が同一である場合、Wwise は起動時にエラーメッセージを表示します。これが発生した場合は、新規プラグイン用に ID を変更してください。

Caution.gif
Caution: 既存プラグインの CompanyID または PluginID を 決して変更しないでください。CompanyID と PluginID は、ソースプラグインまたはエフェクトプラグインの各インスタンスと永続化され、ファイルがロードされた時に適切なプラグインのインスタンスを再作成するために使用されます。

CompanyID と PluginID 属性は、これらの関数に渡されたパラメータに対応してプラグインを識別します:

Note.gif
Note: DLL に複数のプラグインが実装されている場合、XML ファイルは複数の EffectPlugin と/または SourcePlugin エントリを含みます。

PluginInfo タグ

    <PlatformSupport>
           <Platform Name="Windows">
              <CanBeInsertOnBusses>true</CanBeInsertOnBusses>
              <CanBeInsertOnAudioObjects>true</CanBeInsertOnAudioObjects>
              <CanBeRendered>true</CanBeRendered>
              <CanBeInsertForFeedback>false</CanBeInsertForFeedback>
           </Platform>
           <Platform Name="Mac">
              <CanBeInsertOnBusses>true</CanBeInsertOnBusses>
              <CanBeInsertOnAudioObjects>true</CanBeInsertOnAudioObjects>
              <CanBeRendered>true</CanBeRendered>
              <CanBeInsertForFeedback>false</CanBeInsertForFeedback>
           </Platform>
           <Platform Name="iOS">
              <CanBeInsertOnBusses>true</CanBeInsertOnBusses>
              <CanBeInsertOnAudioObjects>true</CanBeInsertOnAudioObjects>
              <CanBeRendered>true</CanBeRendered>
              <CanBeInsertForFeedback>false</CanBeInsertForFeedback>
           </Platform>
           <Platform Name="Xbox360">
              <CanBeInsertOnBusses>true</CanBeInsertOnBusses>
              <CanBeInsertOnAudioObjects>true</CanBeInsertOnAudioObjects>
              <CanBeRendered>true</CanBeRendered>
              <CanBeInsertForFeedback>false</CanBeInsertForFeedback>
           </Platform>
           <Platform Name="XboxOne">
              <CanBeInsertOnBusses>true</CanBeInsertOnBusses>
              <CanBeInsertOnAudioObjects>true</CanBeInsertOnAudioObjects>
              <CanBeRendered>true</CanBeRendered>
              <CanBeInsertForFeedback>false</CanBeInsertForFeedback>
           </Platform>
           <Platform Name="PS3">
              <CanBeInsertOnBusses>true</CanBeInsertOnBusses>
              <CanBeInsertOnAudioObjects>true</CanBeInsertOnAudioObjects>
              <CanBeRendered>true</CanBeRendered>
              <CanBeInsertForFeedback>false</CanBeInsertForFeedback>
           </Platform>
           <Platform Name="PS4">
              <CanBeInsertOnBusses>true</CanBeInsertOnBusses>
              <CanBeInsertOnAudioObjects>true</CanBeInsertOnAudioObjects>
              <CanBeRendered>true</CanBeRendered>
              <CanBeInsertForFeedback>false</CanBeInsertForFeedback>
           </Platform>
           <Platform Name="Wii">
              <CanBeInsertOnBusses>false</CanBeInsertOnBusses>
              <CanBeInsertOnAudioObjects>false</CanBeInsertOnAudioObjects>
              <CanBeRendered>true</CanBeRendered>
              <CanBeInsertForFeedback>false</CanBeInsertForFeedback>
           </Platform>
      </PlatformSupport>

PluginInfo/PlatformSupport セクションは、プラグインにサポートされているプラットフォームを定義します。これは、1つ以上の Platform タグを含むことが可能で、それぞれのタグは各プラットフォームのプラグインにサポートされる様々な機能を指定します。次のような機能を指定可能です:

  • CanBeInsertOnBusses は、エフェクトのコントロールまたはマスターバスへの適用が可能かどうかを決定します。通常、サラウンドオーディオ構成をサポートするエフェクトを必要とします。
  • CanBeInsertOnAuxBusses は、エフェクトのコントロールまたはマスター AUX バスへの適用が可能かどうかを決定します。通常、サラウンドオーディオ構成をサポートするエフェクトを必要とします。CanBeInsertOnBusses が既に設定されている場合、エフェクトが既に AUX バス上で使用可能な状態です。
  • CanBeInsertOnAudioObjects は、エフェクトが SFX へのインサートとして適用可能かどうかを決定します(モノラルおよびステレオ処理の両方をサポートしている必要があります)。
  • CanBeRendered は、エフェクトがオフラインレンダリングに使用可能かどうかを決定します。
  • CanBeInsertForFeedback は、エフェクトがモーション SFX に適用可能かどうかを決定します。

以下は、Wwise の現バージョンで可能な Platform タグの値です:

  • Windows
  • Xbox360
  • XboxOne
  • PS3
  • PS4
  • Wii
  • Mac
  • iOS

お使いのプラグインは、Wwise 内で指定されたプラットフォーム上でのみ利用可能になります。

Properties タグ

        <Properties>
            ...
        </Properties>

Properties セクションは、ご使用プラグインのプロパティを定義します。これらのプロパティは、プラグインのユーザーインターフェースでユーザーが操作できる(スライダやチェックボックスなどの)コントロールおよびサウンドエンジンプラグインコードが計算に使用できる値に対応しています。

プロパティは通常以下のように定義されます:

<Property Name="GainBand1" Type="Real32" SupportRTPCType="Exclusive" DataMeaning="Decibels">
    <UserInterface DisplayName="Band 1 Gain" Step="0.5" Fine="0.1" Decimals="1" />
    <DefaultValue>0</DefaultValue>
    <AudioEnginePropertyID>1</AudioEnginePropertyID>
    <Restrictions>
        <ValueRestriction>
            <Range Type="Real32">
                <Min>-24</Min>
                <Max>24</Max>
            </Range>
        </ValueRestriction>
    </Restrictions>
    <Dependencies>
        <PropertyDependency Name="OnOffBand1" Action="Enable">
            <Condition>
                <Enumeration Type="bool">
                    <Value>1</Value>
                </Enumeration>
            </Condition>
        </PropertyDependency>
    </Dependencies>
</Property>

Property タグ自身は、2つの必須属性の他にいくつかの属性を含めることができます:

  • Name (必須):プロパティを識別するために Wwise プラグインで使用される文字列です。以下のような場所で使用されます:
    • コントロールへのプロパティのバインド:コントロールをプロパティにバインドするために、プラグインのダイアログリソース (Prop=<Property Name>) で指定する必要のある名前です。
    • 永続性:プロパティに関連するデータを永続化するために Wwise Project ファイルの Property タグに表示される名前です。
      Caution.gif
      Caution: 既存プロパティの名前を変更しないでください。プラグインを使用しているプロジェクトが、ユーザーがこのプロパティに対して設定した値、ランダマイザや RTPC を失うことになります。
    • 以下における in_szPropertyName パラメータ:
    Note.gif
    Note: Property Name は、UI に表示される名前ではありませんが、ユーザーが Project ファイル内で目にする可能性があるので有意味なものにする必要があります。UI に表示される名前は、UserInterface[DisplayName] 属性によって指定されます。
  • Type (必須):プロパティタイプです。次のような値が可能です:
    • bool : Bool型
    • int16 : 16ビット整数r
    • int32 : 32ビット整数
    • Real32 : 単精度浮動小数点(32ビット)
    • Real64 : 倍精度浮動小数点(64ビット)
    • string : ワイド文字列
  • SupportRTPCType (オプション):この値がない場合、プロパティは RTPC をサポートしません。ある場合には、これを、Exclusive に設定する必要があります。る値を完全にオーバーライドすることを意味します(このコントロールは無効にされ、もはやプロパティに対して影響を持たないことが Wwise ユーザーに知らされます)。 not have any effect on the property).
  • ForceRTPCCurveSegmentShape (オプション、SupportRTPCType と一緒に使用される):このプロパティ上の RTPC 曲線で使用可能なセグメントの形状を制限します。指定しない場合、ユーザーは曲線内のセグメントの形状を自由に変更することができます。指定した場合、可能な値は次のとおりです:
    • Constant: 曲線内のすべてのセグメントは一定補間(隣接する2点間でY値は対の最も左にある値と同じ)を使用。プロパティがブール型または列挙型のような控えめな値を表す場合にこれを使用してください。
  • DataMeaning (オプション):これが定義された場合、プロパティがデシベルなどの特別なタイプのデータを表すことを指定します。

    可能な値は以下のとおりです:

    • Decibels: このプロパティは、デシベルを表します。RTPC 曲線は、デフォルトではデシベルスケーリングを使用しますが、ユーザーはデシベルとリニアスケーリングの間で変更するオプションを持ちます。 デシベルスケーリングは、ポイント間で値が補間される方法に影響を与えます。例えば、0 dB および -96.3 dB のそれぞれにポイントがある場合、この2点間で正確に評価されたリニア曲線セグメントは、リニアスケーリング使用時には 48.15 dB の値、デシベルスケーリング使用時には約 -6 dB ほどの値を生成します(振幅の半分に相当)。
    • Frequency: このプロパティは、Hz 単位の周波数を表します。周波数スケーリングは、ポイント間で値が補間される方法に影響を与えます。例えば、1000 Hzおよび4000 Hz(2オクターブ上)のそれぞれにポイントがある場合、この2点間で正確に評価されたリニア曲線セグメントは、リニアスケーリング使用時には2500 Hzの値、周波数スケーリング使用時には2000 Hz(1オクターブ上)の値を生成します。
  • IsVisible (オプション):デフォルト値は true。これが存在しない場合、プロパティが一般的なエディタに表示されます。 ユーザーにとって、プロパティとその値が重要でない場合や、ユーザーによる一般的なエディタ(例えば List View など)での表示や変更を避けたい場合には、IsVisible を false に設定してください。 「機能する」とは、soundbank 生成中にエラーを引き起こさず再生し、例えば、Effect Editor を開くなど任意のアクションをユーザーに依存することなく実行可能であることを意味します。

プラグインによって生成されたサウンドまたはエフェクトが Wwise ユーザーによって設定され、これがゲーム中に変更されないようにするには、RTPC をサポートするよう設定しないでください。

DefaultValue タグは、プロパティのデフォルト値を指定します。このデフォルト値は、新規インスタンス作成時の初期値、ユーザーが CTRL キーを押しながらプロパティのコントロールをクリックした時にプロパティがリセットされる値を示します。この値は、プロパティの(Property タグの Type 属性で指定されている)タイプおよび範囲(下記)と一致する必要があります。

Tip.gif
Tip: XMLファイルは、任意のテキストエディタまたはXMLエディタで編集可能です。このファイルは、メイン Wwise インストールフォルダ下の "plugins" フォルダ内にある、プラグインDLLのフォルダと同じフォルダにあります。カスタムプラグインを持っている Wwise ユーザーは、使用プラグインの XMLファイルを編集して、プラグインの再コンパイルなしでプラグインプロパティのデフォルト値を変更可能です。この変更を行うのに、デベロッパの専門知識は必要ありません。

AudioEnginePropertyID タグは、Sound Engine でこのプロパティを識別します。これは、0~32767 の範囲の正の整数である必要があります。AudioEnginePropertyID タグで設定した値は、AK::IAkEffectParam::SetParam() 内の AkFXParamID パラメータに対応するため、プロパティIDが AK::IAkEffectParam::SetParam() の実装とプラグイン記述ファイル間で同期していることを確認してください。

UserInterface

UserInterface エレメントは、ユーザーインターフェースの動作と外観に関連する属性を定義します。 次の属性はすべてオプションであり、UserInterface エレメントに設定可能です:

  • DisplayName (タイプ:文字列、デフォルト:空):Wwise内の色々な場所で表示される、Property の表示名を定義します。 この属性は、AK::Wwise::IAudioPlugin::DisplayNameForProp 関数に優先します。これにより、Wwise はプラグインのインスタンスがなくても、Display Name を照会できます。
  • Decimals (タイプ:整数、デフォルト:0):小数点以下に表示する桁数を定義します。この値は、非負の整数でなければなりません。0に設定されている場合は、小数点以下の数字および小数点は表示されません。
  • Step (タイプ:フロート、デフォルト:1):スライダを移動するときに数値が変化する量を定義します。 この値は、コントロールがバインドされているプロパティのタイプによって、整数または小数を指定できます。
  • Fine (タイプ:フロート、デフォルト:1):SHIFT キーを押しながらスライダを移動するときに数値が変化する量を定義します。この値は、コントロールがバインドされているプロパティのタイプによって、整数または小数を指定できます。
  • SliderType (タイプ:整数、デフォルト:0):スライダ範囲全体に渡る値のマッピングを定義します。

    • 0: リニア(デフォルト)
    • 1: 擬似対数、-96.3dB から 0dB まで
    • 2: 擬似対数、-96.3dB から 96.3dB まで
    • 4: 擬似対数、20 Hz から 20000 Hz まで
    • 5: 擬似対数、20 Hz から 12000 Hz まで
    • 6: 擬似対数、-96.3dB から 12dB まで
    • 11: 擬似対数、 0.02 Hz から 20000 Hz まで
    • 12: 擬似対数、 0.02 Hz から 20 Hz まで
    • 15: 擬似対数、 -24dB から 24dB まで
    • 16: 擬似対数、 -96.3dB から 24dB まで

  • Mid (タイプ:フロート、デフォルト:0):ニュートラルとみなされる [min,max] 範囲を定義します。この値は、スライダコントロールの描画に影響を与えます。
  • UIMin (タイプ:フロート、デフォルト:範囲の最小値):スライダを使用して最初に設定される最小値を定義します。この値が、 Min 属性で指定された値より大きい場合、ユーザーは、この属性により指定された値より小さい値を入力して、より低い値に強制し、コントロールの範囲を拡大することが可能です。
  • UIMax (タイプ:フロート、デフォルト:範囲の最大値):スライダを使用して最初に設定される最大値を定義します。この値が、Max 属性で指定された値より小さい場合、ユーザーは、この属性により指定された値より大きい値を入力して、より大きな値に強制し、コントロールの範囲を拡大することが可能です。
  • AutoUpdate (タイプ:ブール、デフォルト:false):スライダを移動している間に値が更新されるかどうかを定義します。値の更新時に、あまりにも頻繁にこの属性をfalseに設定すると、オーディオグリッチの問題を引き起こします。
  • LRMixDisplay (タイプ:ブール、デフォルト:false):値が特殊な左右(Left-Right)バランス範囲スタイルで表示されるかどうかを定義します。0 が Center の時、値の範囲は -100 から +100 の間で、Left から Right バランス/ミックスにマッピングされている必要があります。
Tip.gif
Tip: UIMin および UIMax 属性の目的は、プロパティ範囲が非常に大きい場合にコントロールのスライダの初期範囲をより使いやすくすることです。プロパティのいずれかが大きな理論的範囲を持っているが、一般的にユーザーはより制限された範囲を使用する場合には、Min/Max 属性を使用して real 範囲を、 UIMin/UIMax 属性を使用して、スライダの初期範囲を設定してください。

制限

プロパティは、必要に応じてデータ値に対する次の2つの制限のいずれかを有することができます。

Range 制限(Restrictions/ValueRestriction/Range セクション)では、数値プロパティの範囲を定義することができます。

Enumeration 制限(Restrictions/ValueRestriction/Enumeration セクション)では、可能な値のリストとそれぞれの値の表示名を定義することができます。

例:

<Restrictions>
    <ValueRestriction>
        <Enumeration Type="int32">
            <Value DisplayName="Low Pass">0</Value>
            <Value DisplayName="High Pass">1</Value>
            <Value DisplayName="Band Pass">2</Value>
            <Value DisplayName="Notch">3</Value>
            <Value DisplayName="Low Shelf">4</Value>
            <Value DisplayName="High Shelf">5</Value>
            <Value DisplayName="Peaking">6</Value>
        </Enumeration>
    </ValueRestriction>
</Restrictions>

bool and string properties do not need a range. この範囲は、Y軸上のグラフ範囲を定義するために、RTPC Curve Editor など Wwise の様々な場所で使用されます。

このファイルの形式は、メイン Wwise インストールフォルダ下の "/Authoring/Data/Schemas" フォルダにある Plugin.xsd XML スキーマファイルにおいて正式に記述されています。

依存関係

プロパティはゼロまたは多くの依存関係を持つことができます。依存関係がプロパティを結びつけるので、他のプロパティの値に基づいて、あるプロパティを有効または無効にすることができます。

依存関係は現在次のコンテキストのみの使用されることに注意してください:

  • List View
  • Query View
  • Reference View

依存関係は、Effect Editorでは使用されていません。当面、有効または無効なステートに影響を与えるプロパティの依存関係は、プラグインのユーザーインターフェイスに実装する必要があります。

次の例では、"GainBand1"から"OnOffBand1"への依存を追加しています。The "GainBand1" プロパティは、"OnOffBand1"に "True"をセットすると有効になります。

<Property Name="GainBand1" ...>
    <...>
    <Dependencies>
        <PropertyDependency Name="OnOffBand1" Action="Enable">
            <Condition>
                <Enumeration Type="bool">
                    <Value>True</Value>
                </Enumeration>
            </Condition>
        </PropertyDependency>
    </Dependencies>
</Property>

Condition 要素は、Enumeration 要素または Range 要素のいずれかを含むことができます。PropertyDependency 要素で特定された Action 属性は「Enable (有効)」である必要があり、条件があった場合、特定したプロパティが有効になることを指定します。

Enumeration 条件:

<Enumeration Type="int32">
    <Value>0</Value>
    <Value>1</Value>
</Enumeration>

Range 条件:

<Range Type="Real32">
    <Min>-24</Min>
    <Max>24</Max>
</Range></span>

インナーオブジェクト

InnerTypes セクションは、インスタンス化しプラグイン内で使用することができる Inner Object Type を定義します。InnerTypes セクション内で、複数の InnerType を定義することができます。各 InnerTypeは、一意の名前とプラグイン ID を持っている必要があります。InnerTypeセクションには、Properties セクションが含まれていて、ここでプラグインプロパティを定義するのと全く同じ方法でプロパティを定義することができます。

Inner Types は、プラグイン内のオブジェクトの複数インスタンスを持つ必要がある場合に実用的です。例えば、可変数の EQ バンドを持っている際に、EQ プラグインに対してInner Type Bandを定義することができます。それぞれのバンドは、各バンドごとに異なる値で、同一プロパティ定義を持ちます。

<PluginModule>
    <EffectPlugin ...>
        <PluginInfo ...>
            ...
        </PluginInfo>
        <Properties>
            ...
        </Properties>
        <InnerTypes>
            <InnerType Name="Band" CompanyID="X" PluginID="Y">
                <Properties>
                    ...
                </Properties>
            </InnerType>
        </InnerTypes>
    </EffectPlugin>
Note.gif
Note: Inner Type のプロパティは、RTPC をサポートしません。従って、SupportRTPCType 属性と AudioEnginePropertyID エレメントを使用することはできません。
Note.gif
Note: InnerTypes は、ソースおよびエフェクトプラグイン内でのみサポートされます。

プラグインコードで Inner Type インスタンス(インナーオブジェクト)を操作するには、プラグインの初期化時に AK::Wwise::IAudioPlugin::SetPluginObjectStore() が呼び出される時に、フレームワークに提供される  AK::Wwise::IPluginObjectStore ポインタを使用する必要があります。AK::Wwise::IPluginObjectStore インターフェースは、インナーオブジェクトを作成および削除するための機能を提供します。作成されたオブジェクトは、挿抜関数を使用して名前付きリストに格納される必要があります。

例えば、Bandタイプのインナーオブジェクトを作成して、BandList に格納することが可能です:

    // Create a new band
    AK::Wwise::IPluginPropertySet* pBand = GetObjectStore()->CreateObject( L"Band" );

    // Insert the new band in the "BandList" (at the end)
    GetObjectStore()->InsertObject( L"BandList", (unsigned int)-1, pBand );
Note.gif
Note: インナーオブジェクトは、単一リスト内にのみ格納可能です。

以下のトピックを参照してください:

オブジェクトストアにインナーオブジェクトを追加すると、関連付けられた Undo(アンドゥ)メカニズムが Wwise 内に自動的に作成されます。 ご自分で、アンドゥシステムを実装する必要はありません。しかし、アンドゥイベントを正常にサポートするために、フレームワークからの通知受信時にのみユーザーインターフェースを更新する必要があります。例えば、 IPluginObjectStore 上に InsertObject を呼び出した後には、UI を直ちに更新しないでください。プラグインに通知 AK::Wwise::IAudioPlugin::NotifyInnerObjectAddedRemoved が呼び出されるのを待ってください。この通知は、リストへのオブジェクトの追加または削除を知らせるものです。この通知は、ユーザーまたは Undo メカニズムからのアクションにより発行されます。

また、インナーオブジェクト内でプロパティ値が変化した時に呼び出される AK::Wwise::IAudioPlugin::NotifyInnerObjectPropertyChanged もご参照ください。

プロジェクトワークユニットの永続性は、Wwise により自動的に処理されます。ただし、SoundBank 内および Sound Engine データのインナーオブジェクトのシリアル化を実装する必要があります。AK::Wwise::IAudioPlugin::GetPluginData および AK::Wwise::IAudioPlugin::GetBankParameters 内のインナーオブジェクトをシリアル化してください。

トラブルシューティング

問題が発生した場合は、Wwise ソースプラグインおよびエフェクトプラグインのトラブルシューティングガイド を参照してください。