関連ブログ
- [UE5]マテリアルで頂点をカメラ方向に移動させて、Zファイトを解消してみる。 2024.11.20UE
- [UE5] Soundscapeプラグインを使ってみる 2024.11.13UE
- [UE5] Batch Renamerを使って一括でアセット名をリネームしよう! 2024.11.06UE
CATEGORY
2024.06.05UE/ Audioその他
執筆バージョン: Unreal Engine 5.4
|
ヘイガイズ!エンジニアの片平です!
今回は UE5.4 で追加となった「Harmonix」プラグインを使用して、
プレイヤーの操作に対してBGMに合ったメロディを再生する仕組みをご紹介します。
「Unreal Engine 5.4 の新機能である Harmonix プラグインは、音楽ゲームプレイの作成に使用できる一連のツールとランタイム機能を提供します。」とあります。
主にUE5でMIDIを扱う機能と新たなサンプラー(Fusion Sampler)が提供されるようです。
Fusion Sampler は置いておいて、今回はMIDIを活用した実装例のご紹介です。
例によってベータな機能ですので、今後のアップデートによっては仕様が変更される可能性があります。ご留意ください。
なお、MetaSound の基本的な機能については当ブログの下記記事にてご紹介しております。
再生や出力などの機能の詳細については省略いたしますので、下記記事をご参照ください。
(音量にご注意ください。)
プレイヤーが白いアイテムを取得したタイミングでBGMに合ったメロディが流れています♪
ThirdPersonTemplate から新規のプロジェクトを作成します。
Audio -> Harmonix を探して、有効化しましょう。
Unreal Editorの再起動を求められるため再起動します。
今回はメロディが分かりやすい曲をご用意しました。(音量にご注意ください。)
この曲のメロディを抜いてBGMとします。
またメロディとして使うベルの単音も用意しました。C4(下から4番目のドの音)を鳴らしています。
BGMとベルの音をインポートします。
メロディのみを書き出したMIDIファイルをインポートします。
Audio -> MetaSound Sourceから新しいMetaSoundを作成します。
名前は「MS_BGM」とします。
「MS_BGM」を開き、Outupt Format を Stereo に変更します。
下記の画像の通りにノードを組みます。
WaveAsset は先ほどインポートした BGM を選択します。
再生するとシンプルにBGMが鳴るMetaSoundができました。
「BP_ThirdPersonGameMode」 を開き、下記のようにノードを組みます。
これでゲーム中でBGMを鳴らすことができました。
一度、MIDI再生の仕組みを理解するために
単純にMetaSound内でベル音でメロディを鳴らすように組んでみます。
ノードが長くなるので2回に分けて解説します。
MS_BGMを開いて下記のようにノードを組みます。
次にMIDI Playerに続けて下記のようにノードを組みます。
MetaSoundの再生ボタンを押すと「bell」の音でメロディが奏でられます。
任意のタイミングでメロディを鳴らすために GameMode と MetaSound を編集します。
WavePlayerの再生中に音程を変えたくないので、メロディの音程をBP側に一時的に保存して、
メロディの再生タイミングと同時に音程を設定するように実装します。
まず、「MS_BGM」を開き、下記のInputs、Outputsを追加します。
MIDI Note Trigger ~ WavePlayer のノードを下記のように組み替えます。
「BP_ThirdPersonGameMode」を開き、赤枠のノードを追加します。
OutputWatchingに関しては過去記事でもご紹介しています。
続けて下記のようなイベントを実装します。
OutputName、InName は MetaSound で設定した名前を正しく設定してください。
新規Actorを作成します。 名前は「BP_Item」とします。
BPエディタを開き、Sphere コンポーネントを追加します。
Sphere コンポーネントのDetailsを編集します。
Sphere の OnComponentHit イベントを下記のように組みます。
作成した「BP_Item」をレベルに大量に配置します。
冒頭の動画と同じものが出来上がります!
今回のようなプレイヤー自身の操作で音楽が奏でられる実装は、
楽器演奏に似た気持ちよさを生み出せて面白いかなと思います。
記事を作っていて思いましたが、アイテム取得だとプレイヤーがボタンを押したタイミングではないので、
UI操作等で同様の演出が入っているほうがより気持ち良いかもですね。
UE5.0 で MetaSound が実装されてはや2年、やっっっっと公式でMIDIが扱えるようになりました!
MIDI対応によって出来ることはかなり増えたと思うので、是非工夫して面白い演出を作ってみてください!