あっぷあっぷブログ

UnrealEngine(ゲーム用途)関連の備忘録です。

【UE5/MetaSound】再生中の曲から次の曲へ滑らかに移行させる

曲から別の曲へ遷移させる際に、AudioComponentを2つ使ったりしていたのですが、なんか面倒だったのでAudioComponent1つ使うだけで、MetaSound内で完結できないかなぁ。と思って実装してみました。

最初の曲をフェードアウトさせつつ、次の曲をフェードインさせる


全体の処理はこんな感じです。
簡潔にするために、3曲目を想定していない作りになっています。

次の曲へ移行させるためのトリガーを用意

ここが呼ばれたタイミングで次の曲を再生させます。
プレビュー中は矢印アイコンが表示されるので、こちらをクリックすれば、好きなタイミングでTriggerを実行できます。

「Next」を呼ぶために、BP側でこのように設定しています。

FadeさせるためにAD Envelopeを使用

値を0~1で滑らかに変化させたい場合に使えそうなノードなので使っています。
画像の設定では、アタックタイムアタックカーブに値を入れているため、エンベロープ出力値は0から1へ変化していきます。この値の変化をFadeInに見立てて使っています。
減衰時間減衰カーブの方に値を入れると、1から0へ値が変化していきます。

AD Envelopeの終了タイミングでエンベロープ出力は0になるため、On Done(完了時)ピンからTrigger Routeに繋げ、値を1に固定します。

Crossfade を使って再生中の曲から次の曲へ自然に切り替える

クロスフェード値が0に近いほど、In 0に入力した音の割合が大きくなり、In 1に入力した音の割合は小さくなります。

次の曲へ遷移させる際に、AD Envelopeの値を使ってクロスフェード値を0から1に変化させているので、In 0の音はだんだん小さく、In 1の音がだんだんと大きくなっていき、滑らかに遷移します。

おまけ:ループ再生させつつ任意のタイミングで曲を変更したい場合

コピペ用