UE4初心者が頑張ってるブログ

Unreal Engine4を使用した開発メモ、及びそれに関連することについて不定期に書いています。

UE4 Media SoundがComponentになってあたふたした話

今回は2018年3月17日に行われる
「第5回UE4勉強会 in 大阪」で登壇する際に
多分話す時間無いだろうなぁと思う(ずっと話してそうな)
Media Soundについて先に書いていきます。

ue4study-osaka.connpass.com

 

今回は知見を共有するための記事なので、

使い方を解説しているものではありません。

(公式、別の方もしくは未来の私に期待しましょう)

 

また、あたふたはしましたが今回の変更で個人的に

Media Frameworkは使いやすくなったんじゃないかなと思います。

 

本題に入ります。

 

Media Soundとは

Media SoundはMedia Frameworkの中にある、

サウンドを再生するためのものです。

 

4.17(Media Framework2.0)のときまでは

Media Player生成時に同時に生成できたのですが、

4.18(Media Framework3.0)からそうではなくなりました。

 

どこが変わったのか

4.17

Media TextureとMedia Soundを生成するためのチェックボックスがあります。

f:id:MozPaca:20180312162645p:plain

 

4.18

なくなりました。

f:id:MozPaca:20180312162638p:plain

 

コンテンツブラウザのMediaタブにもサウンドに

関係のなさそうなものばかりでした。

f:id:MozPaca:20180312163410p:plain

 

一体どこに行ってしまったんでしょうか?

 

コンポーネントになってました

ブループリントのコンポーネントの中にMedia Soundというものがありました。

f:id:MozPaca:20180312162910p:plain

 

Media PlayerやMedia Textureは今まで通りの使い方が可能でしたが、

Media Sound Componentは少し扱いや、パラメータなどが変わったようです。

 

4.17

Media Playerと同時に生成されたMedia Soundをレベルに設置すれば、

関連付けたMedia Playerからの再生に合わせて音を出力します。

f:id:MozPaca:20180312163739p:plain

 

再生部分がAudio Componentなので、

ブループリントからの制御や、ボリュームの変更などはスムーズでした。

f:id:MozPaca:20180312164442p:plain

 

4.18

こちらもMedia Sound Componentを持つActorをレベル上に配置すれば、

4.17と同様に音を再生します。

 

しかしコンポーネントになったMedia Soundは

パラメータが大きく変わっていました。

f:id:MozPaca:20180312164629p:plain

まずAttenuationやConcurrencyの設定は今まで通りです。

Attenuationのパラメータが少し豊富になった?

 

ボリュームの変更がなくなりました。

--追記 探してみましたがなさそうです。

MediaSoundComponent.h、cppを見てみましたが、

Volumeに関係ありそうなものは見つかりませんでした。

恐らく親クラスの関数にあるとは思うのですが、今回はここまで。

 

幸いSound Classが設定できるので、

Sound Classから音量を変更できますが

ちょっと試したいというときは少し不便に感じます。

 

Effect ChainやSubmixも使えるようです。

 

また再生チャンネルを1(mono)、2(stereo)、7.1(Surround)に

変更できるようになっていました。

--追記 なってませんでした。

 ソースコードを見たところ、チャンネル1とチャンネル2は

サポートされているようですが、チャンネル7を選択した場合

自動的にチャンネル2になるようです。

f:id:MozPaca:20180312172027j:plain

 

C++覗いてみた

C++のMediaSoundComponent.hを見てみると

USynthComponentの継承クラスのようです。

なのでブループリント上で、USynthComponentの関数である

Startや、Stop、IsPlayingなどが使えると思います。

(動作は未検証)

 

またUSynthComponentを継承している別のコンポーネント

Modular Synth Componentがあります。

もしかすると、これらのコンポーネントと似たような機能が存在するかもしれません。

(まだサラッとしか読んでない)

 

エディタ上に公開されているMedia Sound Componentオリジナルの変数は

・チャンネル数を指定する「Channels」

f:id:MozPaca:20180312173134p:plain

 

・Media Playerを関連付けるための「MediaPlayer」

f:id:MozPaca:20180312173433p:plain

くらいじゃないかなと思います。

 

関数などはC++のみで扱えるものはありましたが、

ブループリントから扱えるものはありませんでした。

 

Media Sound Component単体に思ったより機能ないなって印象を受けました。

(まぁMedia Frameworkの主役はSoundじゃないし...)