UE4 Media SoundがComponentになってあたふたした話
今回は2018年3月17日に行われる
「第5回UE4勉強会 in 大阪」で登壇する際に
多分話す時間無いだろうなぁと思う(ずっと話してそうな)
Media Soundについて先に書いていきます。
今回は知見を共有するための記事なので、
使い方を解説しているものではありません。
(公式、別の方もしくは未来の私に期待しましょう)
また、あたふたはしましたが今回の変更で個人的に
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を生成するためのチェックボックスがあります。
4.18
なくなりました。
コンテンツブラウザのMediaタブにもサウンドに
関係のなさそうなものばかりでした。
一体どこに行ってしまったんでしょうか?
コンポーネントになってました
ブループリントのコンポーネントの中にMedia Soundというものがありました。
Media PlayerやMedia Textureは今まで通りの使い方が可能でしたが、
Media Sound Componentは少し扱いや、パラメータなどが変わったようです。
4.17
Media Playerと同時に生成されたMedia Soundをレベルに設置すれば、
関連付けたMedia Playerからの再生に合わせて音を出力します。
再生部分がAudio Componentなので、
ブループリントからの制御や、ボリュームの変更などはスムーズでした。
4.18
こちらもMedia Sound Componentを持つActorをレベル上に配置すれば、
4.17と同様に音を再生します。
しかしコンポーネントになったMedia Soundは
パラメータが大きく変わっていました。
まず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になるようです。
C++覗いてみた
C++のMediaSoundComponent.hを見てみると
USynthComponentの継承クラスのようです。
なのでブループリント上で、USynthComponentの関数である
Startや、Stop、IsPlayingなどが使えると思います。
(動作は未検証)
またUSynthComponentを継承している別のコンポーネントに
Modular Synth Componentがあります。
もしかすると、これらのコンポーネントと似たような機能が存在するかもしれません。
(まだサラッとしか読んでない)
エディタ上に公開されているMedia Sound Componentオリジナルの変数は
・チャンネル数を指定する「Channels」
・Media Playerを関連付けるための「MediaPlayer」
くらいじゃないかなと思います。
関数などはC++のみで扱えるものはありましたが、
ブループリントから扱えるものはありませんでした。
Media Sound Component単体に思ったより機能ないなって印象を受けました。
(まぁMedia Frameworkの主役はSoundじゃないし...)