【Unreal Engine】MetaSounds入門:鳴らしたまま音の高さを変える、エンジン音の実験

作成: 2026-07-20最終更新: 2026-09-06

Sound Cueとの違いから、MetaSound Sourceの作り方、トリガー・音声・データの役割まで。ループするエンジン音を作り、InputとAudio Componentを使ってNキーで音の高さを変えます。

アクセルを踏むとエンジン音が高くなり、離すと落ち着いた音へ戻る。ゲームの音は、素材を再生するだけでなく、操作に合わせて変化すると動きが伝わりやすくなります。

MetaSounds は、音の再生や加工をノードで組み立てる仕組みです。この記事では1つのエンジン音を鳴らし続け、キーを押している間だけ音を高くします。車の移動処理は用意せず、「ゲーム側の値が、鳴っている音へ届く」ところを小さく試しましょう。

Nキーを押すとエンジン音が高くなり、離すと元へ戻る実験

この記事でわかること

  • Sound CueとMetaSoundsの使いどころを比べる
  • 音を鳴らす合図・音声・設定値の線を読み分ける
  • エンジン音をループし、Nキーで高さを変える
  • 値の変化をなめらかにして、加速するような音にする

BlueprintでActorを作り、ノードをつなげられる方を想定しています。音素材をUEへ取り込むところから確認したい場合は、Sound WaveとSound Cueの記事を先にどうぞ。

Sponsored

Sound Cueとの違い:音をどこまで組み立てるか

Sound Cue は、用意した音素材を選ぶ、混ぜる、音量や高さを変える、といった鳴らし方を組むアセットです。「3種類の足音から1つ選ぶ」なら、少ないノードで作れます。

MetaSoundsでも同じように素材を鳴らせます。そのうえで、波形から音を作ったり、音声信号を加工したりするところまで、自分で組み立てられます。たとえば「エンジン音を高くしながら、風の音も混ぜる」といった複数の変化を、1つのグラフで扱えます。

Sound Cueは素材の鳴らし方、MetaSoundsは加工や合成まで組み立てる比較
作りたいもの選び方の目安
足音をランダムに選び、少し高さを変えるSound Cueでも作れる
波形やノイズから音を作り、加工を組み合わせるMetaSoundsを検討する
すでに問題なく鳴っているSound Cue必要な変更がなければ、そのまま使える

再生中に値を変えられるのはMetaSoundsだけ、という違いではありません。 Sound Cueにも、名前付きのパラメータで音の高さなどを変える仕組みがあります。今回は、MetaSoundsで音を組む第一歩として、数値を1つ受け取る方法を覚えます。

最初はSourceを作る

今回は Third PersonのBlueprintテンプレート で試します。素材には、一定の高さで鳴っているエンジン音の .wav を1つ用意してください。ループ用につなぎ目を整えた数秒程度の音が向いています。手元になければ、同じように伸びる機械音でも高さの変化を試せます。

説明をそろえるため、素材は Mono(音声が1チャンネル) を使い、取り込んだSound Waveを SW_EngineLoop と名付けます。Stereoの素材で進める場合は、後述のWave Playerと出力形式もStereoにそろえてください。

コンテンツブラウザの空白を右クリックし、「Audio > MetaSound Source」を選んで MS_EngineDemo を作ります。MetaSoundの項目がない場合は「Edit > Plugins」でMetaSoundプラグインの有効状態を確認します。

似た名前の MetaSound Patch は、他のMetaSoundから使う部品です。たとえば共通の風の加工をまとめ、複数の音へ組み込むときに使います。Sourceは再生する音、Patchはその中で使う部品 と分ければ、最初に選ぶものが分かります。

再生するMetaSound Sourceと、Sourceの中で共用するPatchの関係

Wave Playerで音をループする

MS_EngineDemo を開き、まずは高さを変えずに音を鳴らします。

  1. ツールバーの「MetaSound」を選び、詳細の「Output Format」を Mono にします。
  2. 「Interfaces」パネルで UE.Source.OneShot を外します。これは「1回鳴り終えたら終了する音」のための設定です。今回は止めるまで鳴らすため、使いません。
  3. グラフの空白を右クリックし、Wave Player (Mono) を追加します。
  4. 「Wave Asset」に SW_EngineLoop を選び、「Loop」をON、「Pitch Shift」を 0 にします。
  5. On Play の出力をWave Playerの Play へ、Wave Playerの Out Mono をグラフの Out Mono へつなぎます。
On PlayをWave PlayerのPlayへ、Out Monoを音声出力へつないだ最小ループ

Wave Player は、Sound Waveを実際に再生するノードです。On Play は、このMetaSoundの再生が始まったときの合図。その合図でWave Playerが動き、出てきた音が Out Mono を通って聞こえます。

ツールバーの再生ボタンを押し、音が繰り返し鳴ればこの段階は成功です。停止ボタンで止めて保存します。つなぎ目でプツッと鳴る場合は、素材自体のループのつなぎ目も確認してください。LoopをONにするだけで、どんな素材も滑らかにつながるわけではありません。

線を読む:合図・音声・データ

グラフの線は、何を運んでいるかで読むと分かりやすくなります。先ほどの最小例にも、次の3つの役割があります。

役割運んでいるもの今回の例
Trigger(トリガー)「今、再生を始めて」という合図On Play → Play
Audio(音声)耳へ届く音そのものOut Mono → Out Mono
データ素材や設定値Wave AssetPitch Shift

トリガーは合図が出たときに働き、音声は再生中に流れ続けます。再生開始の合図をつなぐだけでは音は聞こえません。音声の出口もつなぐ 必要があります。

MetaSoundの線はTrigger・Audio・データの3種類。合図だけつないでも音は出ない

データにも型があり、Pitch ShiftFloat(小数を扱える数値) です。素材を指定する Wave Asset とは別の種類なので、ピンの名前と型を見てつなぎます。型の変換ノードが使える組み合わせもありますが、ここでは数値は数値へ、音声は音声へつなげば十分です。

Sponsored

Inputを作り、音の高さを試す

次は、Pitch Shift を外から変えられるようにします。Input は、MetaSoundが外部から値を受け取る入口です。「音の高さをどれだけずらすか」という入口を1つ用意します。

  1. Wave Playerの Pitch Shift 入力ピンから空白へドラッグし、「Promote to Graph Input」を選びます。
  2. 作られたInputを選び、詳細の「General > Input」で名前を PitchOffset にします。
  3. 型がFloat、既定値が 0 であることを確認し、「Is Constructor Pin」はOFFにします。

Constructor Pinは、再生前に値を決めておくための設定です。今回は鳴らしながら変えるため、OFFにします。また、外から受け取りたい値は「Variables」ではなく Inputs に置きます。

FloatのInput PitchOffsetをWave PlayerのPitch Shiftへ渡す接続

ピッチは音の高さ のことです。ここで扱う Pitch Shift の単位は 半音。ピアノの白鍵と黒鍵を含め、すぐ隣の鍵盤へ移る1つ分の高さに相当します。

PitchOffset聞こえ方
0元の高さ
6半音6つ分、高くなる
121オクターブ高くなる

「0にしたら無音になる」のではなく、高さをずらさない という意味です。Audio Componentの Pitch Multiplier は倍率で、元の高さが 1。名前が似ていますが、基準値が違います。

Blueprintを組む前に、音だけで試せます。PitchOffset を選び、「Editor Options > Widget」を「Slider」、範囲を 0~6 に設定してください。MetaSoundを再生したまま、Input上のスライダーを左から右へ動かします。音が高くなり、左へ戻すと元へ戻れば、InputからWave Playerまでつながっています。停止後、既定値を 0 に戻して保存します。

実践:Nキーで音を変える

今度はエディタのスライダーを、ゲーム中のキー操作へ置き換えます。Audio Component は、Actorに付ける音の再生部品です。鳴っている音に「この値へ変えて」と伝える相手にもなります。

音を鳴らすActorを置く

  1. Actorを親にしたBlueprint BP_EngineAudioDemo を作ります。
  2. 「Components > Add」から「Audio」を追加し、EngineAudio と名付けます。
  3. EngineAudio を選び、次のように設定します。
設定理由
SoundMS_EngineDemo先ほど作った音を使う
Auto ActivateONゲーム開始時に鳴らす
Volume Multiplier0.4聞き比べやすい控えめな音量から始める
Pitch Multiplier1.0高さはMetaSound側で変える
Allow SpatializationOFFこの実験では方向による変化を付けない
Attenuation SettingsNone距離で小さくしない
Override AttenuationOFF独自の距離設定も使わない
ActorのEngineAudioがMS EngineDemoを再生し、キーから来た値をその音へ渡す関係

「Class Defaults」で Auto Receive Input を検索し、Player 0 にします。このActorで1人目のプレイヤーのキー入力を受け取る設定です。コンパイル・保存後、BP_EngineAudioDemo をレベルに 1つだけ 置きます。

レベルをPlayして、音が鳴り続けることを確かめてから停止してください。ここで鳴らなければ、キーの処理を組む前に、MetaSound単体の試聴とAudio Componentの Sound を見直します。

押したら6、離したら0を送る

BP_EngineAudioDemo のEvent Graphで、空白を右クリックしてキーボードの N イベントを追加します。Pressed が押した瞬間、Released が離した瞬間です。

「Components」の EngineAudio をグラフへドラッグし、取得ノードを置きます。これは「どの再生部品に命令するか」を指定するための 参照 です。出力ピンから Set Float Parameter を作り、もう1つ同じノードを置きます。

まずPressed側をつなぎます。図中の角括弧は入力欄を表すので、名前には PitchOffset だけを入力してください。

NのPressedからSet Float Parameterを実行し、EngineAudioへPitchOffset 6を送る

続いて、同じNイベントのReleased側から、もう1つのSet Float Parameterへつなぎます。図は経路ごとに分けていますが、Nイベントを2つ作る必要はありません。

同じNのReleasedからもう1つのSet Float Parameterを実行し、PitchOffsetを0へ戻す
接続・設定押したときのノード離したときのノード
実行入力Nの Pressed からNの Released から
TargetEngineAudio の取得ノードから同じ EngineAudio から
In NamePitchOffsetPitchOffset
In Float6.00.0

Set Float Parameter は、名前を指定して数値を送るノードです。In Name にはMetaSoundのInput名をそのまま写し、In Float に値を入れます。Targetへ MS_EngineDemo のアセットを直接指定するのではなく、その音を鳴らしているEngineAudioへ送る のがポイントです。

聞き比べて、届く仕組みを確かめる

コンパイル・保存後、レベルをPlayし、ゲーム画面を一度クリックしてから N を押します。

  • 押していない間:元の高さで鳴る
  • 押している間:高い音になる
  • 離した瞬間:元の高さへ戻る

キーを押すたびに音を作り直す処理はありません。最初から鳴っている1つの音へ、06 を送っています。

仕組みを確かめるなら、押したときの In Float を一時的に 12 へ変えてみてください。さらに高く聞こえれば、数値が音へ届いています。次に In NamePitchOffset_Test へ変えると、対応するInputがないため高さは変わりません。試したら名前を PitchOffset、値を 6 へ戻します。

うまくいかない状態確認するところ
MetaSound単体でも無音Wave Assetの指定、On PlayからPlayへの線、Out Monoへの線
単体では鳴るがゲーム中は無音Actorをレベルへ置いたか、SoundとAuto Activateの設定
音は鳴るがNで変わらないAuto Receive Input、ゲーム画面の入力フォーカス、TargetとIn Name
Inputを変えても反応しないInputsに作ったか、Pitch Shiftへの線、Is Constructor PinがOFFか
キーを離しても高いままReleased側の実行線とIn Float=0
音が重なって聞こえる試聴を停止したか、Actorを複数置いていないか

キー入力が届くか迷ったら、Nイベントから一時的に Print String をつなぐと、音の問題か入力の問題かを分けられます。

Sponsored

急な変化をなめらかにする

このままだと、キーを押した瞬間に高さが切り替わります。少し時間をかけて高くすると、エンジンの回転が上がるような変化になります。

使うのはMetaSoundの InterpTo。今の値から目標の値へ、指定した時間をかけて近づけるノードです。このように値の間を埋めることを 補間 と呼びます。

MS_EngineDemo で、PitchOffset から Pitch Shift へ直結していた線を外し、間にInterpToを挟みます。

PitchOffsetからInterpToのTargetへ、ValueからPitch Shiftへつなぎ、0.2秒で高さを変える
  • PitchOffset → InterpToの Target
  • Interp Time = 0.2
  • InterpToの Value → Wave Playerの Pitch Shift

再びPlayしてNを押したり離したりすると、上がるときも戻るときも少し滑らかになります。Interp Time1.0 にすれば変化がゆっくりになり、違いを聞き取りやすくなります。Blueprintから毎フレーム送り直す必要はありません。送り先の目標値が変わった後は、MetaSound内で値が変化します。

おまけ:ランダムな足音と次の使い道

単発の足音では、選んでから鳴らす

ループするエンジン音と、1回で終わる足音では、終わり方が違います。足音用に別のSource MS_FootstepRandom を作るなら、UE.Source.OneShotを残し、Wave Playerの On Finished をグラフの On Finished へつなぎます。「素材を鳴らし終えたので、この音も終了してよい」と伝えるためです。ここでもOutput FormatはMono、素材はMonoの足音3種類を使います。

複数の素材から選ぶには Random Get (WaveAsset:Array) を使います。配列は、SW_Footstep_01~03 のような素材を並べたリストです。Next で1つ選び、選んだ素材を Value、選び終えた合図を On Next から出します。

Random Getの選択結果をWave Assetへ、選び終えたOn NextをPlayへ渡し、単発音の終了もつなぐ

足音用Sourceの「Members > Variables」で変数 Footsteps を追加し、型をWaveAsset、配列をONにします。既定値の要素を3つ追加して素材を設定し、Footstepsをグラフへドラッグして In Array へつなぎます。On Play → NextOn Next → PlayValue → Wave Asset の順に組み、Wave PlayerのLoopはOFFにします。音声のOut Mono同士もつなぎます。

「どの音を選んだか」と「選び終えた合図」は別の線 です。これを分けて読めると、トリガーの役割がつかめます。No Repeats = 1 は直前に選んだ要素を避ける設定です。足音を毎回別の再生として鳴らす場合は、選択履歴を共有する Enable Shared State もONにします。

保存して試聴すると、足音が1回鳴って終了します。アニメーションの足が着く瞬間に鳴らす方法は、Sound Cueの記事の足音の実践と共通です。そこで再生するSoundに、このSourceを指定できます。

Audio Componentの用意の仕方は1つではない

今回はActorへAudio Componentを追加しました。必要なときに Spawn Sound 2DSpawn Sound Attached で音を鳴らし、その戻り値のAudio Componentを使う方法もあります。Play Sound 2DPlay Sound at Location にはこの戻り値がないので、後から操作するなら、最初からAudio Componentを手元に残せる鳴らし方を選びます。

数値以外に「今、この処理を始めて」という合図も送れます。MetaSoundにTrigger型のInputを作り、Audio Componentへ Execute Trigger Parameter で同じ名前を指定します。音量や高さの調整はFloat、1回の合図はTrigger、と役割で分けます。

ゲームの値を音につなぐ

Nキーの 0 / 6 を、車の速度やアクセル量から求めた値へ置き換えれば、操作に合わせたエンジン音へ発展できます。音を車の位置から聞かせる段階では、距離減衰と3Dサウンドの記事へ進んでください。

また、同じInputの仕組みで複数の音の音量を変えると、探索中は静かで、戦闘に入ると楽器が増えるBGMにも使えます。インタラクティブミュージックの記事では、その組み立て方を扱います。

今回は「入口の名前」「送り先のAudio Component」「変えたい数値」の3つがそろうと、鳴っている音を操作できました。自分のゲームなら、どの値を音へつなぐと動きが伝わるかを考えてみてください。

まとめ

  • Sound Cueは「用意した音を選んで鳴らす」、MetaSoundsは「音そのものを組み立てる」
  • 合図(実行)・音声・設定値で、線の意味が違う
  • 外から値を渡せば、鳴らしながら高さや速さを変えられる
  • 急な変化はなめらかにすると、機械らしさが減る

選ぶときの問いかけは、「鳴らし方を変えたいのか、音自体を作りたいのか」 です。前者ならCueで足ります。

素材と設計図の違いは Sound WaveとSound Cue、距離や音量の調整は Attenuationとミキシング へ。

参考:MetaSounds Quick StartMetaSounds Reference GuideMetaSound Function NodesSound Cue Reference

Unreal Engine このセクションのノート98