UE5 MetaSound プロシージャルな音を作る 04 ~BPMでテンポとリズムを作る~ #UE5 #MetaSounds
【今回のポジティブワード】
努力は必ず報われる。
もし報われない努力があるならば、それはまだ努力と呼べない。
~王貞治~
未来形でよく「努力します」と言ってしまいます。
現在形で今日もアウトプットを出すために「努力しています」。
過去形で「努力したんですね」と言われたときに「楽しかったからですよ」と言えるようになるまで続けます。
未来形で語るのは自分のことを奮い立たせるために重要だけど簡単です。
現在形で「努力してます」というのは承認欲求なのかもしれません。
続けていくのは大変ですが、反応が少しずつ増えていくので楽しいです。
楽しいから続ける、続けるから楽しいのループが「努力」というアウトプットにつながるのではないでしょうか。
MetaSoundを始めてから毎日が楽しいです。
【前回】
前回は【音をクリアにする】について書きました。
今回は【BPMでテンポとリズムを作る】について書いてみます。
単音で音を再生していましたが、特定のテンポで再生できるようにします。
前回からの続きになります。
1. BPMでテンポとリズムを作る
1.1. Trigger Repeatで一定間隔のテンポで再生する
今日使用するのは[BPM To Seconds],[Trigger Repeat],[Trigger Counter]ノードです。
前回作成した MetaSoundを複製して、[MS_Procedual04]を作成します。
リズムを刻むので、単音がクリアに聞こえるように各ノードの数値を調整します。
[Trigger Repeat]を追加します。
[Trigger Repeat]を[Input:On Play]と[AD Envelope(Audio)]の間に実行されるように接続します。
[Ountput:On Finished]が呼び出されると停止してしまうので、[AD Envelope(Audio):On Done]と[Ountput:On Finished]の接続を解除して、ループするようにします。
Stopを制御するInput Triggerを作成します。
[Trigger Repeat:Stop]からドラッグ&ドロップし、[Promote To Graph Input]を選択します。
Input Nameを[On Stop]に変更します。
再生時に変化を確認しやすように、[Trigger Repeat:Period]をInput化します。
[Trigger Repeat:Repeat]からドラッグ&ドロップし、[Promote To Graph Input]を選択します。
Input Nameを[Period]に変更します。
[Input:On Stop]で[Trigger Repeat:Stop]で[Trigger Repeat]を停止させてから再び[Trigger Repeat:Start]を呼び出せるように[Input:On Replay]というTriggerInputを追加します。
[Input:On Play]からドラッグ&ドロップし、 [Trigger Any(2)]を追加します。
[Trigger Any(2):In 1]からドラッグ&ドロップし、[Promote To Graph Input]を選択します。
Input Nameを[On Replay]にします。
[Play]をクリックして再生します。
[Input:Period]の[Default]を[1.0]に変更すると、1秒間隔で音が再生されます。
[Trigger Repeat:RepeatOut]はPeriodの値が[1.0]を1秒として、Periodで指定した時間(秒)で繰り返し実行されます。
ノードのパラメータをInput化しておくと、Play後に値を変えて音を確認出来るのでInput化は非常に便利です。
[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]ノードを使用します。
[Trigger Repeat]ノードを組み込んだ状態です。
1.3. BPM To SecondsでBPMを指定できるようにする
[BPM To Seconds]ノードは指定したBPM(Beat Per Minutes)の秒数を取得できるノードです。
【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の動きを確認できるようにノードを組んでいきます。
[Trigger Repeat:Period]からドラッグ&ドロップし、[BPM To Seconds]を追加します。
[Input:Period]はもう使用しないので削除します。
[BPM To Seconds]のパラメータをすべてInput化します。
Input化したら、それぞれInput Nameを変更します。
[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 Counter:On Reset]からドラッグ&ドロップし、[Random(Int)]を追加します。
Random(int)のValueをMIDI Note Noとして使用するように設定します。
[Trigger Conter]
Reset Count:4
[Randam(int)]
Min:60
Max:70
Reset Countを4にすると、5拍目が1拍目にリセットされます。
MIDI Note No. 60~71はド4~シ4なので、Random (int)に60~71になる値を設定しています。
[Trigger Counter]ノードを組み込んだ状態です。
これで、1小節ごとにTrigger CounterのResetが実行されRandomなMIDI Note Noが再生されるようになります。
まとめ
テンポが付いて、MIDI Note Noがランダムに変わるだけでも少し、不思議なメロディが出来てきました。Sound Waveアセットを使わなくてもノードだけでも音を作っていけるのがプロシージャルの音作りの醍醐味ですね。
色々なテクニックを覚えたので、もう少しノードを追加してノードについて理解したり、音を複雑にしてみます。
この記事が気に入ったらサポートをしてみませんか?