曲から別の曲へ遷移させる際に、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
の音がだんだんと大きくなっていき、滑らかに遷移します。
おまけ:ループ再生させつつ任意のタイミングで曲を変更したい場合