ブループリントAPI
ブループリントAPIについて
CRIWARE UE4プラグインには、CRIWAREの機能をブループリントから呼び出すためのAPIが用意されています。
利用可能な関数の一覧は以下のとおりです。
≪Atom≫
Play Sound at Location
Spawn Sound At Location
Spawn Sound Attached
Spawn Sound 2D
Create Rooted Atom Component
Pause Audio Output
Stop All Sounds
Load Atom Config
≪Atom Sound≫
Set Sound
Play
Stop
Pause
Is Paused
Is Playing
Get Status
Get Time
Get Sequence Position
Set Volume
Set Sound Object
Set Pitch
Set Pitch Multiplier
Set Aisac By Name
Set Bus Send Level
Set Bus Send Level Offset
Set Next Block Index
Set Selector Label
Enqueue Sound
Get Num Queued Sounds
≪Atom Cue Sheet≫
Load Atom Cue Sheet
Is Loaded
GetAtomCueByName
GetAtomCueById
GetAtomCueByIndex
≪Atom Category≫
Set Volume By Name
Get Volume By Name
Pause By Name
Is Paused By Name
Set Aisac Control By Name
Stop By Name
≪Atom Asr Rack≫
Get Default Asr Rack
Attach Dsp Bus Setting
Detach Dsp Bus Setting
Apply Dsp Bus Snapshot
Set Bus Volume By Name
Set Bus Send Level By Name
≪CRIWARE≫
Load Acb
≪CRIWARE Function Library≫
Set Game Variable By Name
Set Global Label To Selector By Name
各関数の仕様は以下のとおりです。
Atom
ヘッダファイル:AtomStatics.h
Play Sound at Location
static void UAtomStatics::PlaySoundAtLocation(UObject* WorldContextObject, class USoundAtomCue* Sound, FVector Location, …);
UGameplayStatics::PlaySoundAtLocation互換のAPIです。
(再生する音声がAtomCueアセットである点が異なります。)
ループ音を再生すると、レベルアンロードなどで解放されない限り再生を続けます。そのため、ワンショット音に使用してください。
ループ音を再生する場合は、SpawnSoundAtLocation関数を使用してください。
Spawn Sound at Location
static UAtomComponent UAtomStatics::SpawnSoundAtLocation(UObject* WorldContextObject, class USoundAtomCue* Sound, FVector Location, …);
UGameplayStatics::SpawnSoundAtLocation互換のAPIです。
(再生する音声がAtomCueアセットである点が異なります。)
再生中のAtomComponentを返すため、ループ音を再生しても停止することが可能です。
Spawn Sound Attached
static class UAtomComponent* UAtomStatics::SpawnSoundAttached(class USoundAtomCue* Sound, class USceneComponent* AttachToComponent, …);
UGameplayStatics::SpawnSoundAttached互換のAPIです。
(再生する音声がAtomCueアセットである点が異なります。)
本関数はUE4側の仕様変更に伴い、PlaySoundAttached関数からリネームされました。
互換性維持のためPlaySoundAttached関数は残されていますが、将来的には削除されます。
PlaySoundAttached関数を使用している場合は、SpawnSoundAttached関数へ移行してください。
Spawn Sound 2D
static class UAtomComponent* UAtomStatics::SpawnSound2D(const UObject* WorldContextObject, USoundAtomCue* Sound, float PitchMultiplier, float StartTime, bool bPersistAcrossLevelTransition, bool bAutoDestroy);
UGameplayStatics::SpawnSound2D互換のAPIです。
(再生する音声がAtomCueアセットである点が異なります。)
注意:
[Persist Across Level Transition] をONに設定した場合、レベルがアンロードされたとしても音声が再生され続けます。
この場合、 [Auto Destroy] をONに設定するか、またはユーザが生成されたAtomComponentを明示的に破棄しない限り、リソースが解放されずに残り続けることになるので、ご注意ください。
Create Rooted Atom Component
static class UAtomComponent* UAtomStatics::CreateRootedAtomComponent(const UObject* WorldContextObject, bool bAutoDestroy);
レベルがアンロードされても破棄されないAtomComponentを作成します。
AISACコントロール値の指定など、発音開始前に設定が必要な音声をレベルをまたいで再生したい場合に使用します。
(UAtomStatics::SpawnSound2Dとの違いは、コンポーネントの作成と同時に自動で発音を開始しない点のみです。)
Pause Audio Output
static void UAtomStatics::PauseAudioOutput(bool bPause);
ゲーム中の音声全て一時停止、再開します。
[Pause]にtrueを指定すると一時停止します。falseを指定すると、再生を再開します。
備考:
ポーズ中にレベルを移動した場合、レベル移動時にポーズが解除されます。
注意:
本関数とUAtomComponent::Pauseは独立して制御されます。
UAtomStatics::PauseAudioOutput(false)を実行しても、AtomComponentの一時停止は解除されませんのでご注意ください。
Stop All Sounds
static void UAtomStatics::StopAllSounds();
ゲーム中の音声全て停止します。
Load Atom Config
static bool UAtomStatics::LoadAtomConfig(USoundAtomConfig* AcfObject);
Atom Configアセットをロードします。
既にAtom Configアセットがロード済みの場合、既存の設定をアンロードし、 [Acf Object] で指定されたものに変更します。
Atom Sound
ヘッダファイル:AtomComponent.h
Set Sound
void UAtomComponent::SetSound(USoundAtomCue* NewSound);
AtomComponentに対し、再生するキューを指定します。
[Target]には再生に使用するAtomComponentを指定します。
[New Sound]には、再生するキューアセットを指定します。
注意:
音声再生中にUAtomComponent::SetSound関数を呼び出した際、音声が停止する場合があります。
詳しくはFAQの「
SetSoundを行うと音声が止まってしまいます。
」をご覧ください。
Play
void UAtomComponent::Play(float StartTime);
AtomComponentでキューの再生を開始します
[Target]には再生に使用するAtomComponentを指定します。
[StartTime]を指定することで、音声データを途中から再生することも可能です。
注意:
本関数を実行する前に、あらかじめAtomComponentに対し再生するデータを指定しておく必要があります。
Stop
void UAtomComponent::Stop();
AtomComponentによるキュー再生を停止します。
[Target]には再生に使用するAtomComponentを指定します。
Pause
void UAtomComponent::Pause(bool Pause);
AtomComponentによるキュー再生を一時停止、再開します。
[Target]には再生に使用するAtomComponentを指定します。
[Pause]にtrueを指定すると一時停止します。falseを指定すると、再生を再開します。
Is Paused
bool UAtomComponent::IsPaused();
AtomComponentに対してPause操作が行われたかどうかを判定します。
[Target]には再生に使用するAtomComponentを指定します。
AtomComponentが一時停止中の場合は[Return Value]がtrueに、再生中の場合はfalseになります。
Is Playing
bool UAtomComponent::IsPlaying();
AtomComponentに対してPlay操作が行われたかどうかを判定します。
[Target]には再生に使用するAtomComponentを指定します。
AtomComponentが再生中の場合は[Return Value]がtrueに、停止中の場合はfalseになります。
Get Status
EAtomComponentStatus UAtomComponent::GetStatus();
音声の再生状態を取得します。返り値はEAtomComponentStatus列挙型で、以下の値を取ります。
Stop : 停止中
Prep : 再生準備中
Playing : 再生中
PlayEnd : 再生終了
Error : エラー
[Target]には再生状態を取得するAtomComponentを指定します。
Get Time
float UAtomComponent::GetTime();
音声再生開始からの経過時間を取得します。単位は秒です。
[Target]には時刻取得の対象となるAtomComponentを指定します。
Get Sequence Position
float UAtomComponent::GetSequencePosition();
音声の再生位置を取得します。単位は秒です。
[Target]には再生位置取得の対象となるAtomComponentを指定します。
備考:
Get TimeとGet Sequence Positionは、Atom Craft上でシーケンスによるループを作成した場合にのみ動作が異なります。
具体的には、以下のとおりです。
Get Timeは、ループに関係なく再生開始からの経過時間を返します。
(時刻の値は常に増加し続けます。)
Get Sequence Positionは、ループで再生位置が巻き戻った際、時刻も巻き戻ります。
Set Volume
void UAtomComponent::SetVolume(float Volume);
AtomComponentの音量を変更します。
[Target]には再生に使用するAtomComponentを指定します。
[Volume]にはボリューム値を0.0f〜1.0fの範囲の値で指定します。
ボリューム値は音声データの振幅に対する倍率です。
(1.0fがキュー本来の音量、0.0fが無音です。)
Set Sound Object
void UAtomComponent::SetSoundObject();
AtomComponentにサウンドオブジェクトを設定します。
[Target]には対象とするAtomComponentを指定します。
[Sound Object]にはサウンドオブジェクトを指定します。
Set Pitch
void UAtomComponent::SetPitch(float Pitch);
AtomComponentのピッチを変更します。
[Target]には再生に使用するAtomComponentを指定します。
[Pitch]にはセント単位のピッチ変更量を指定します。
Set Pitch Multiplier
void SetPitchMultiplier(float NewPitchMultiplier);
AtomComponentのピッチを変更します。
ピッチを倍率で指定する点がUAtomComponent::SetPitch関数と異なります。
[New Pitch Multiplier]に2.0を指定した場合、倍のピッチ(1オクターブ高い音)で再生されます。
[New Pitch Multiplier]に0.5を指定した場合、半分のピッチ(1オクターブ低い音)で再生されます。
Set Aisac By Name
void UAtomComponent::SetAisacByName(FString ControlName, float ControlValue);
AtomComponentのAISACコントロール値を指定します。
[Target]には再生に使用するAtomComponentを指定します。
[Control Name]にはCRI Atom Craftで作成したAISACコントロール名を指定します。
指定したAISACコントロールに適用する値を[Control Value]に指定します。
AISACの初期値はアクタのパラメータとして指定することも可能です。
具体的な設定箇所については「
音源データの配置
」を参照してください。
Set Bus Send Level
void UAtomComponent::SetBusSendLevel(int32 BusId, float Level);
AtomComponentのバスセンドレベルを変更します。
[Target]には再生に使用するAtomComponentを指定します。
[Bus Id]には出力先バスのIDを指定します。
指定したバスにセンドするレベルを[Level]に指定します。
[Level]で指定した値は、あらかじめCRI Atom Craftで指定したバスセンドレベルに対して
掛け算適用
されます。
バスセンドレベルが0のデータに対してバスセンドレベルを追加したい場合、[Set Bus Send Level Offset]コンポーネントを使用してください。
Set Bus Send Level Offset
void UAtomComponent::SetBusSendLevelOffset(int32 BusId, float LevelOffset);
AtomComponentのバスセンドレベルを変更します。
[Target]には再生に使用するAtomComponentを指定します。
[Bus Id]には出力先バスのIDを指定します。
指定したバスにセンドするレベルを[Level]に指定します。
[Level]で指定した値は、あらかじめCRI Atom Craftで指定したバスセンドレベルに対して
足し算適用
されます。
あらかじめCRI Atom Craftで設定済みのバスセンドレベルに対してレベル補正したい場合、[Set Bus Send Level]コンポーネントを使用してください。
Set Next Block Index
void UAtomComponent::SetNextBlockIndex(int32 BlockIndex);
AtomComponentで次に再生するブロックを指定します。
[Target]には再生に使用するAtomComponentを指定します。
[Block Index]には次に再生するブロックの番号を指定します。
ブロックインデックスの初期値はアクタのパラメータとして指定することも可能です。
具体的な設定箇所については「
音源データの配置
」を参照してください。
Set Selector Label
void UAtomComponent::SetSelectorLabel(FString Selector, FString Label);
AtomComponentのセレクタラベルを設定します。
[Selector]にはセレクタ名を指定します。
[Label]にはセレクタラベルを指定します。
トラックにセレクタラベルが指定されているキューを再生した場合、本関数で指定したセレクタラベルと一致したトラックだけを再生します。
Enqueue Sound
void UAtomComponent::EnqueueSound(USoundAtomCue* NewSound);
シームレス連結再生用に、AtomComponentに新たな音声データを追加します。
本関数で指定された音声は、AtomComponent::SetSound関数でセットされた音声に続けて再生されます。
Get Num Queued Sounds
int32 UAtomComponent::GetNumQueuedSounds();
シームレス連結再生用にAtomComponentに積まれている音声データの数を取得します。
本関数が 0 を返す状態(未再生の音声データが残っていない状態)で再生が終了すると、AtomComponentのステータスがPlayEndに遷移します。
Atom Cue Sheet
ヘッダファイル:AtomCueSheet.h
Load Atom Cue Sheet
static USoundAtomCueSheet* USoundAtomCueSheet::LoadAtomCueSheet(USoundAtomCueSheet* CueSheet);
Atom Cue Sheetアセットをロードします。
[Cue Sheet]には、ロードするAtom Cue Sheetアセットを指定します。
本関数でロードしたAtom Cue Sheetは、レベルを抜ける際に自動的に開放されます。
例外的に、以下に該当する場合はレベルを抜けてもAtom Cue Sheetは解放されません。
関数の戻り値をUPROPERTYとしてアプリケーションで保持している場合。
キューシートに含まれるキューを、Persist Across Level Transitionを有効にしてUAtomStatics::SpawnSound2Dで再生している場合。
備考:
Atom Cue Sheetアセットは音声再生開始時に自動でロードされますが、本関数を使用して明示的にロードさせることも可能です。
再生時に処理がブロックされるのが気になる場合、シーン切り替え時等に本関数でAtom Cue Sheetアセットをロードしてください。
注意:
本関数は同期関数です。
Atom Cue Sheetアセットのロードが完了するまで、処理がブロックされます。
ゲーム実行中に非同期でAtom Cue Sheetアセットをロードする必要がある場合には、Atom Cue Sheet Loader Componentの使用をご検討ださい。
(Atom Cue Sheet Loader Componentの詳細は、「
Atom Cue Sheetアセットの非同期ロード
」をご確認ください。)
Is Loaded
bool USoundAtomCueSheet::IsLoaded();
アセットがロード済みかどうかをチェックします。
戻り値が true の場合、キューシートは既にロード済みです。
戻り値が false の場合、キューシートはまだロードされていません。
(追加でUSoundAtomCueSheet::LoadAtomCueSheet関数を実行する必要があります。)
注意:
UE4標準の非同期ロード機能を使用してAtom Cue Sheetアセットをロードしたとしても、 その時点ではAtom Cue Sheetアセットは使用可能な状態にはなっていません。
(Atomライブラリへの通知や、AWBファイルの紐づけ等を明示的に行う必要があります。)
UE4標準の非同期ロード機能を使用する場合、Atom Cue Sheetアセットをロード後に追加で USoundAtomCueSheet::LoadAtomCueSheet関数を実行してください。
Get Atom Cue By Name
USoundAtomCue* USoundAtomCueSheet::GetAtomCueByName(FString CueName);
ロード済みのAtom Cue Sheetアセットに対し、キュー名を指定してAtom Cueを取得します。
本機能を使用することで、アプリケーション中で動的にAtom Cueを生成することが可能です。
(Atom Cue Sheetアセットのみをパッケージに加えておけば、Atom Cueアセットなしに音声の再生が可能となります。)
Get Atom Cue By Id
USoundAtomCue* USoundAtomCueSheet::GetAtomCueById(int32 CueId);
ロード済みのAtom Cue Sheetアセットに対し、キューIDを指定してAtom Cueを取得します。
キューIDを指定する点以外は、USoundAtomCueSheet::GetAtomCueByName関数と同じ機能です。
Get Atom Cue By Index
USoundAtomCue* USoundAtomCueSheet::GetAtomCueByIndex(int32 CueIndex);
ロード済みのAtom Cue Sheetアセットに対し、キューインデックスを指定してAtom Cueを取得します。
キューインデックスを指定する点以外は、USoundAtomCueSheet::GetAtomCueByName関数と同じ機能です。
Atom Category
ヘッダファイル:AtomCategory.h
Set Volume By Name
void UAtomCategory::SetVolumeByName(FString CategoryName, float Volume);
カテゴリ名指定でボリュームの変更を行います。
[Category Name]で指定したカテゴリのボリュームが[Volume]に設定されます。
[Volume]には 0.0f 〜 1.0f の範囲でボリューム値を指定します。
Get Volume By Name
float UAtomCategory::GetVolumeByName(FString CategoryName);
カテゴリに設定されたボリューム値を取得します。
[Category Name]で指定したカテゴリのボリュームが返されます。
Pause By Name
void UAtomCategory::PauseByName(FString CategoryName, bool bPause);
カテゴリ名指定でポーズ制御を行います。
[Pause]にtrueを設定すると、[Category Name]で指定したカテゴリの音声が全てポーズされます。
[Pause]にfalseを設定すると、[Category Name]で指定したカテゴリの音声のポーズが解除されます。
Is Paused By Name
bool UAtomCategory::IsPausedByName(FString CategoryName);
カテゴリのポーズ状態を取得します。
[Category Name]には、状態を取得したいカテゴリの名前を指定します。
ポーズ中の場合はtrueが、ポーズ中でない場合はfalseが返されます。
Reset All Aisac Control By Id
bool ResetAllAisacControlById(int32 CategoryId);
任意のIDのカテゴリの全てのAISACコントロールをリセットします。
[Category Id]で指定したカテゴリの範囲で、全てのカテゴリAISACコントロールにデフォルトコントロール値(AtomCraftで設定)をセットします。
デフォルトコントロール値が1つも設定されていないカテゴリAISACコントロールには値がセットされないため、ご注意ください。
Reset All Aisac Control By Name
bool ResetAllAisacControlByName(FString CategoryName);
任意の名前のカテゴリの全てのAISACコントロールをリセットします。
[Category Name]で指定したカテゴリの範囲で、全てのカテゴリAISACコントロールにデフォルトコントロール値(AtomCraftで設定)をセットします。
デフォルトコントロール値が1つも設定されていないカテゴリAISACコントロールには値がセットされないため、ご注意ください。
Get Num Attached Aisacs By Id
int32 GetNumAttachedAisacsById(int32 CategoryId);
ID指定でカテゴリにアタッチされているAISAC数を取得します。
[Category Id]には、カテゴリのIDを指定します。
Get Num Attached Aisacs By Name
int32 GetNumAttachedAisacsByName(FString CategoryName);
名前指定でカテゴリにアタッチされているAISAC数を取得します。
[Category Name]には、カテゴリの名前を指定します。
Get Attached Aisac Info By Id
void GetAttachedAisacInfoById(int32 CategoryId, int32 AisacAttachedIndex, bool & IsSuccess, FAtomAisacInfo & AisacInfo);
ID指定でカテゴリにアタッチされているAISACの情報を取得します。
[Category Id]には、カテゴリのIDを指定します。
[Aisac Attached Index]には、何番目のAISACの情報を取得したいかを指定します。指定できる数値はゼロから「アタッチされているAISACの数-1」までです。
[Is Success]には、成功した場合trueが、失敗した場合falseがセットされます。 [Aisac Info]には、AISAC情報がセットされます。
Get Attached Aisac Info By Name
void GetAttachedAisacInfoByName(FString CategoryName, int32 AisacAttachedIndex, bool & IsSuccess, FAtomAisacInfo & AisacInfo);
名前指定でカテゴリにアタッチされているAISACの情報を取得します。
[Category Name]には、カテゴリの名前を指定します。
[Aisac Attached Index]には、何番目のAISACの情報を取得したいかを指定します。指定できる数値はゼロから「アタッチされているAISACの数-1」までです。
[Is Success]には、成功した場合trueが、失敗した場合falseがセットされます。 [Aisac Info]には、AISAC情報がセットされます。
Set Aisac Control By Name
void UAtomCategory::SetAisacControlByName(FString CategoryName, FString AisacName, float Value);
カテゴリに対してAISACコントロール値を指定します。
[Category Name]で指定したカテゴリに対し、[AisacName]で指定したAISACコントロールの値を[Value]に設定します。
Get Current Aisac Control Value By Id
float GetCurrentAisacControlValueById(int32 CategoryId, int32 AisacControlId);
ID指定でカテゴリAISACコントロールの現在値を取得。
[Category Id]には、カテゴリのIDを指定します。
[Aisac Control Id]には、カテゴリAISACコントロールのIDを指定します。
Get Current Aisac Control Value By Name
float GetCurrentAisacControlValueByName(FString CategoryName, FString AisacControlName);
名前指定でカテゴリAISACコントロールの現在値を取得。
[Category Name]には、カテゴリの名前を指定します。
[Aisac Control Name]には、カテゴリAISACコントロールの名前を指定します。
Stop By Name
static void UAtomCategory::StopByName(FString CategoryName);
カテゴリ名指定で音声を停止します。
ゲーム中で再生中の音声のうち、[Category Name]で指定したカテゴリに該当する音声が全て停止します。
Atom Asr Rack
ヘッダファイル:AtomAsrRack.h
Get Default Asr Rack
static UAtomAsrRack* UAtomAsrRack::GetDefaultAsrRack();
デフォルトのASRラックを取得します。
本関数で取得したASRラックに対し、適宜DSPバス設定のアタッチ等の操作を行う必要があります。
Attach Dsp Bus Setting
void UAtomAsrRack::AttachDspBusSetting(FString SettingName);
DSPバス設定を適用します。
[Target]にはDSPバス設定の適用対象となるAtomAsrRackを指定します。
[Setting Name]にはCRI Atom Craftで作成したDSPバス設定の名前を指定します。
Detach Dsp Bus Setting
void UAtomAsrRack::DetachDspBusSetting();
DSPバス設定を解除します。
[Target]にはDSPバス設定の解除対象となるAtomAsrRackを指定します。
Apply Dsp Bus Snapshot
void UAtomAsrRack::ApplyDspBusSnapshot(FString SnapshotName, int32 Milliseconds);
DSPバススナップショットを適用します。
[Target]にはDSPバススナップショットの適用対象となるAtomAsrRackを指定します。
[Snapshot Name]にはCRI Atom Craftで作成したDSPバススナップショットの名前を指定します。
スナップショットで設定したパラメータには、[Milliseconds]で指定した時間(単位はミリ秒)をかけて遷移します。
Set Bus Volume By Name
void UAtomAsrRack::SetBusVolumeByName(FString BusName, float Volume);
DSPバスのボリュームを変更します。
[Target]にはボリュームを操作するバスを含むAtomAsrRackを指定します。
[Bus Name]、[Voluem]にはボリューム変更の対象となるバスの名前とボリューム値を指定します。
Set Bus Send Level By Name
void UAtomAsrRack::SetBusSendLevelByName(FString SourceBusName, FString DestBusName, float Level);
DSPバス間のセンドレベルを変更します。
[Target]には、センドレベルを操作するバスを含むAtomAsrRackを指定します。
[Source Bus Name]にはセンド元のバス名、[Dest Bus Name]にはセンド先バス名、[Level]にはセンドレベルをそれぞれ指定します。
CRIWARE
ヘッダファイル:SoundAtomCueSheet.h
Load Acb
static USoundAtomCueSheet* USoundAtomCueSheet::LoadAcb(FName AcbName);
Atom Cue Sheetアセットをロードします。
[Acb Name] にロードするAtom Cue Sheetアセットの名前を指定する点以外は、USoundAtomCueSheet::LoadAtomCueSheet関数と同じ機能です。
Atom Cue Sheetアセットの名前には、拡張子を付ける必要はありません。
例えば、アセットのパスが /Game/Sound/MyAsset.MyAsset の場合、 USoundAtomCueSheet::LoadAcb 関数には /Game/Sound/MyAsset を指定します。
注意:
USoundAtomCueSheet::LoadAtomCueSheet関数と異なり、本関数は指定された名前をもとにアセットの検索を行い、アセットが見つかった場合にロードを行います。
アセットがメモリにロードされていない場合、ファイルシステムの検索により長時間処理がブロックされる可能性があります。
あらかじめロードするAtom Cue Sheetアセットが特定できている場合には、本関数ではなく、USoundAtomCueSheet::LoadAtomCueSheet関数を使用してください。
CRIWARE Function Library
ヘッダファイル:CriWareFunctionLibrary.h
Set Game Variable By Name
void UCriWareFunctionLibrary::SetGameVariableByName(FString GameVariableName, float Value);
ゲーム変数に値を設定します。
本関数でゲーム変数を設定しておくことで、以降 [Game Variable Name] で指定したゲーム変数を参照するキューは、 [Value] で指定した値に対応した動作をします。
Set Global Label To Selector By Name
void UCriWareFunctionLibrary::SetGlobalLabelToSelectorByName(FString SelectorName, FString LabelName);
セレクタラベルのデフォルト値を設定します。
本関数でセレクタラベルを設定しておくことで、以降 [Selector Name] で指定したセレクタを参照するキューは、 [Label Name] で指定したラベルに対応した動作をします。
Next:
サンプル
Copyright (c) 2012-2018 CRI Middleware Co., Ltd.
CRIWARE Unreal Engine 4 プラグインマニュアル SDKVer.2.10版