見出し画像

UE5 MetaSound プロシージャルな音を作る 04 ~BPMでテンポとリズムを作る~ #UE5 #MetaSounds

【今回のポジティブワード】
努力は必ず報われる。
もし報われない努力があるならば、それはまだ努力と呼べない。
~王貞治~

未来形でよく「努力します」と言ってしまいます。
現在形で今日もアウトプットを出すために「努力しています」。
過去形で「努力したんですね」と言われたときに「楽しかったからですよ」と言えるようになるまで続けます。

未来形で語るのは自分のことを奮い立たせるために重要だけど簡単です。
現在形で「努力してます」というのは承認欲求なのかもしれません。
続けていくのは大変ですが、反応が少しずつ増えていくので楽しいです。
楽しいから続ける、続けるから楽しいのループが「努力」というアウトプットにつながるのではないでしょうか。
MetaSoundを始めてから毎日が楽しいです。

【前回】

前回は【音をクリアにする】について書きました。
今回は【BPMでテンポとリズムを作る】について書いてみます。
単音で音を再生していましたが、特定のテンポで再生できるようにします。
前回からの続きになります。

1. BPMでテンポとリズムを作る

1.1. Trigger Repeatで一定間隔のテンポで再生する

今日使用するのは[BPM To Seconds],[Trigger Repeat],[Trigger Counter]ノードです。

[BPM To Seconds] [Trigger Repeat] [Trigger Counter]

前回作成した MetaSoundを複製して、[MS_Procedual04]を作成します。

MS_Procedual03を右クリック > Duplicate

リズムを刻むので、単音がクリアに聞こえるように各ノードの数値を調整します。

各ノードの設定を調整した開始時の状態

[Trigger Repeat]を追加します。

右クリック > Trigger Repeat

[Trigger Repeat]を[Input:On Play]と[AD Envelope(Audio)]の間に実行されるように接続します。
[Ountput:On Finished]が呼び出されると停止してしまうので、[AD Envelope(Audio):On Done]と[Ountput:On Finished]の接続を解除して、ループするようにします。

Trigger Repeatが実行されるように接続、On Finishedを呼び出さないようにしてループさせる

Stopを制御するInput Triggerを作成します。
[Trigger Repeat:Stop]からドラッグ&ドロップし、[Promote To Graph Input]を選択します。

Trigger Repeat:Stopからドラッグ&ドロップ > Promote To Graph Input

Input Nameを[On Stop]に変更します。

Input Name:On Stop

再生時に変化を確認しやすように、[Trigger Repeat:Period]をInput化します。
[Trigger Repeat:Repeat]からドラッグ&ドロップし、[Promote To Graph Input]を選択します。

Trigger Repeat:Periodからドラッグ&ドロップ > Promote To Graph Input

Input Nameを[Period]に変更します。

Input Name:Period

[Input:On Stop]で[Trigger Repeat:Stop]で[Trigger Repeat]を停止させてから再び[Trigger Repeat:Start]を呼び出せるように[Input:On Replay]というTriggerInputを追加します。
[Input:On Play]からドラッグ&ドロップし、 [Trigger Any(2)]を追加します。

Input:On Playからドラッグ&ドロップ > Trigger Any(2)

[Trigger Any(2):In 1]からドラッグ&ドロップし、[Promote To Graph Input]を選択します。

[Trigger Any(2):In 1]からドラッグ&ドロップ > Promote To Graph Input

Input Nameを[On Replay]にします。

Input Name:On Replay

[Play]をクリックして再生します。
[Input:Period]の[Default]を[1.0]に変更すると、1秒間隔で音が再生されます。
[Trigger Repeat:RepeatOut]はPeriodの値が[1.0]を1秒として、Periodで指定した時間(秒)で繰り返し実行されます。
ノードのパラメータをInput化しておくと、Play後に値を変えて音を確認出来るのでInput化は非常に便利です。

Period 1.0の時、1秒ごとにTrigger Repeat:RepeatOutが実行される

[Play]後に、[Input:On Stop]のSimulateボタンをクリックすると[Trigger Repeat:Stop]が実行され、Trigger Repeatが停止します。

[Play]後に、[Input:On Stop]のSimulateボタンをクリックすると
[Trigger Repeat:Stop]が実行され、Trigger Repeatが停止

[Input:On Replay]のSimulateボタンを実行すると、[Trigger Repeat:Start]が実行され、再び[Trigger Repeat]が再生します。
[Input:On Play]はPlayボタンが押された時に1度だけ実行される特別なノードので、再生後にStart、StopをTriggerで実行したい時には、[Trigger Any]ノードを使用します。

[Input:On Replay]のSimulateボタンを実行すると、
[Trigger Repeat:Start]が実行され、再び[Trigger Repeat]が再生

[Input:On Play]はPlayボタンが押された時に1度だけ実行される特別なノード

[Trigger Repeat]ノードを組み込んだ状態です。

[Trigger Repeat]ノードを組み込んだ状態

1.3. BPM To SecondsでBPMを指定できるようにする

[BPM To Seconds]ノードは指定したBPM(Beat Per Minutes)の秒数を取得できるノードです。

BPMは、曲の速さで4分音符を1分間に打つ回数のことをいいます。

DTM音楽用語辞典078「BPM」とは?

【BMP To Secondsノードのインプットについて】
BPM:BPMの指定(1分間に何回4分音符を打つか)
Divisions of Whole Note:4で4分音符、8で8分音符、16で16分音符
Beat Multipier:Secondsで出力する値に掛ける値 
例)Secondsが1.0(秒)を出力する結果の時、Beat Multiplierが2.0の場合、Secondsは1.0 x 2.0 = 2.0(秒)になる

BPM To Seconds

BPM To Secondsの動きを確認できるようにノードを組んでいきます。
[Trigger Repeat:Period]からドラッグ&ドロップし、[BPM To Seconds]を追加します。

Trigger Repeat:Periodからドラッグ&ドロップ > BPM To Seconds

[Input:Period]はもう使用しないので削除します。

Input:Periodは削除

[BPM To Seconds]のパラメータをすべてInput化します。

[BPM To Seconds]のパラメータをすべてInput化

Input化したら、それぞれInput Nameを変更します。

Input Nameを変更する

[BPM To Seconds]ノードを組み込んだ状態です。

[BPM To Seconds]ノードを組み込んだ状態

1.4. Trigger CounterでMIDI Noteを1小節ごとにRandomに変更する

1小節ごとにMIDI Note Noをランダムに変更できるように組んでいきます。
[Input:On Play]から[Trigger Repeat]までの処理を左側に移動します。
[Trigger Repeat:RepeatOut]からドラッグ&ドロップし、[Trigger Counter]を追加します。

[Trigger Repeat:RepeatOut]からドラッグ&ドロップ > [Trigger Counter]を追加

[Trigger Counter:On Reset]からドラッグ&ドロップし、[Random(Int)]を追加します。

[Trigger Counter:On Reset]からドラッグ&ドロップ > [Random(Int)]を追加

Random(int)のValueをMIDI Note Noとして使用するように設定します。
[Trigger Conter]
Reset Count:4

[Randam(int)]
Min:60
Max:70

Random(int)のValueをMIDI Note Noとして使用するように設定

Reset Countを4にすると、5拍目が1拍目にリセットされます。

Reset Count 4の時のTrigger Counterの動き

MIDI Note No. 60~71はド4~シ4なので、Random (int)に60~71になる値を設定しています。

MIDI Note Noの音階一覧(ド4~ド5まで)

[Trigger Counter]ノードを組み込んだ状態です。
これで、1小節ごとにTrigger CounterのResetが実行されRandomなMIDI Note Noが再生されるようになります。

[Trigger Counter]ノードを組み込んだ状態

まとめ

テンポが付いて、MIDI Note Noがランダムに変わるだけでも少し、不思議なメロディが出来てきました。Sound Waveアセットを使わなくてもノードだけでも音を作っていけるのがプロシージャルの音作りの醍醐味ですね。
色々なテクニックを覚えたので、もう少しノードを追加してノードについて理解したり、音を複雑にしてみます。


この記事が気に入ったらサポートをしてみませんか?