![見出し画像](https://assets.st-note.com/production/uploads/images/67266423/rectangle_large_type_2_522cb99f416e00ebfee26d2f1a79214b.png?width=1200)
UE5 MetaSound プロシージャルな音を作る 02 ~エンベロープを使ってアタック音を再生する~ #UE5 #MetaSounds
【今回のポジティブワード】
1年後の成功を想像すると日々の地味な作業に取り組むことができる
僕はその味をしめてしまったんですよ
~本田圭佑~
MetaSoundのノードは1つのノードに複数の音の知識が無いと何をしているのか分からないです。何をやっているか分からないけど見様見真似で音を再生することが出来るのですが、コントロール出来ないと自分の出したい音が出せません。地道に1つ1つのノードを丁寧に学習していくのが近道です。
今日はよく使いそうだけど全然分からないノードが沢山あるので勉強のしがいがあります。MetaSoundのノード数は多くは無いから、1年後の成功を想像して地味な作業に取り組みましょう。
【前回】
前回は【MIDI Note Noを指定してドの音を鳴らす】について書きました。今回は【エンベロープを使って短い音を再生する】について書いてみます。
「ド~」とずっと再生されてしまっているので、「ド」と単音を再生するようにノードを組んでいきます。
前回からの続きになります。
1. エンベロープを使ってアタック音を再生する
1.1 AD Envelope(Audio)でアタック音を再生する
前回作成した[MS_Procedual01]を複製して、[MS_Procedual02]を作成します。
![](https://assets.st-note.com/img/1638842097872-MVEUOzaL4Z.png?width=1200)
[AD Envelope(Audio)]を追加します。
![](https://assets.st-note.com/img/1638842265078-R92caSkcxL.png)
[Input:On Play]と[AD Envelope(Audio)]を接続します。
Print Log(Float)は削除します。
![](https://assets.st-note.com/img/1638842726889-90clwnsSOe.png)
[AD Envelope(Audio):Out Envelope]と[Sine:Audio]を掛け算(Multiply)する処理を実装します。
[AD Envelope(Audio):Out Envelope]からドラッグ&ドロップし、[Multiply(Audio)]を追加します。
![](https://assets.st-note.com/img/1638842930194-dprGRZkm20.png)
[AD Envelope(Audio):Out Envelope]と[Sine:Audio]を掛け算(Multiply)した結果を[Output:Audio]に接続します。
![](https://assets.st-note.com/img/1638843001157-rJBe9VOEtY.png?width=1200)
AD Envelopeを使った時のドレミ
— ポジTA (@posita33) December 7, 2021
Envelope エンベロープhttps://t.co/AG2aOVVmPK#UE5 #MetaSound pic.twitter.com/wvqJybUWCm
AD Envelopeの[Attack Time]と[Decay Time]を分かりやすくした図です。
Attack Time:Envelope Valueが1.0になるまでの時間
Decay Time:Envelope Valueが1.0になってから、0.0になるまでの時間
![](https://assets.st-note.com/img/1638846186189-e8HF4cVXOJ.png?width=1200)
Sineノード単体では「ド~」とずっと再生されていました。
SineノードにAD Envelopeを掛け算することで「ド」と短い音(アタック音)が聞こえるようになります。
![](https://assets.st-note.com/img/1638863809380-mrbQQaLQAc.png?width=1200)
AD Envelopeの[Attack Curve]と[Decay Curve]を分かりやすくした図です。
デフォルト値の[1.0]はLinear(1.0)で数値が変化していきます。
[1.0]より値が小さくなるとカーブが[Logarithmic(対数)]のカーブに変わります。
[1.0]より値が大きくなるとカーブが[Exponential(指数関数)]のカーブになります。
![](https://assets.st-note.com/img/1638847957967-w8mC15eRbN.png?width=1200)
AD EnvelopeのCurveの値を変えた時の音の違い
— ポジTA (@posita33) December 7, 2021
微かに違う?#UE5 #MetaSound pic.twitter.com/4pjN9Dw7t8
最後に[Looping]のチェックボックスをチェックし、[On Finished]を呼び出さないようにします。
[AD Envelope(Audio):On Done]が呼ばれるタイミングで、再び[AD Envelope(Audio):Trigger]が呼ばれてLoopします。
![](https://assets.st-note.com/img/1638861865194-5G6YrV2Zxf.png?width=1200)
[AD Envelope(Audio):On Done]で[Output:On Finished]を呼び出すとMetaSoundを停止するのでループは行われません。
![](https://assets.st-note.com/img/1638862112703-cCN33TzcbQ.png?width=1200)
AD Envelopeは1度実行されるとOn Doneが実行されます。
— ポジTA (@posita33) December 7, 2021
Loopを有効にして、On DoneでOn Finishedを呼び出さなければ、On Doneを呼び出す状態になったタイミングでTriggerが呼ばれてループするようです。 pic.twitter.com/OIya4OUy8d
AD Envelopeは太鼓のバチで叩いた時のようなアタック音を再現する時に使うようです。
1.2 ADSR Envelope(Audio)でアタック音を再生する
Envelopeノードは[AD Envelope]と[ADSR Envelope]の2種類が用意されています。
[ADSR Envelope(Audio)]を試してみましょう。
![](https://assets.st-note.com/img/1638860392563-ZtYglUwv8N.png)
[ADSR Envelope(Audio):Audio]と[Sine:Audio]を掛け合わせた音を再生するように編集します。
[AD Envelope]より[ADSR Envelope]の方が細かく値を設定できることが分かります。
この状態で再生しても[ADSR Envelope(Audio):On Done]が実行されず、[Sine:Audio]が実行された状態になります。
![](https://assets.st-note.com/img/1638860641247-39vl6tAlvx.png?width=1200)
[ADSR Envelope(Audio):Trigger Release]を実行するように[Input:On Release]を追加しましょう。
![](https://assets.st-note.com/img/1638862794950-D31o2ouCcc.png)
[Input Name]を[On Release]に変更します。
![](https://assets.st-note.com/img/1638862917897-wyNHSF26pN.png?width=1200)
[Play]後に[On Release]をSimuleteすると、Trigger Release > On Done > On Finishが呼ばれて停止します。
![](https://assets.st-note.com/img/1638865045633-MSWTNEtq5h.png?width=1200)
Trigger Release > On Done > On Finishが呼ばれて停止する
ADSR Envelopeにも[Attack Time]と[Decay Time]があります。さらに[Sustain Level]と[ReleaseTime]が追加されています。[Attack][Decay][Sustain][Release]の頭文字をとると[ADSR]になります。
ADRのTimeとSustain Levelについて分かりやすい図を用意しました。
![](https://assets.st-note.com/img/1638864663345-zsglheq105.png?width=1200)
Trigger Releaseが呼ばれるまでSustain Levelの数値でSineのAudioが再生されるので、再生され続けていたことが分かりました。
![](https://assets.st-note.com/img/1638865612596-GzRj4hvZML.png?width=1200)
[Sustain]の状態にも時間を指定してみます。
[Trigger Delay]を追加します。
![](https://assets.st-note.com/img/1638865796792-ezAR5OdyPl.png)
Sustain Timeが[0.2(秒)]になるように[Trigger Delay:Delay Time]に[0.41]を設定します。
[Play]を押すと、[0.41]秒後に[ADSR Envelope(Audio):Trigger Release]が実行されるようになります。
Sustain Timeを求める数式です。
Sustain Time = Delay Time - (Attack Time + Decay Time)
0.2 = 0.41 - (0.01 + 0.2)
Inputに[Attack Time],[Decay Time],[Sustain Time]を作成して、Delay Timeを求めるように計算すると良いかもしれません。
Delay Time = Attack Time + Decay Time + Sustain Time
0.41 = 0.01 + 0.2 + 0.2
![](https://assets.st-note.com/img/1638866061523-pB3PhJoLEq.png?width=1200)
ADSR Envelopeでは[Attack Curve]と[Decay Curve]の他に[Release Curve]が追加されます。分かりやすくした図を作成しました。
デフォルト値の[1.0]はLinear(1.0)で数値が変化していきます。
[1.0]より値が小さくなるとカーブが[Logarithmic(対数)]のカーブに変わります。
[1.0]より値が大きくなるとカーブが[Exponential(指数関数)]のカーブになります。
![](https://assets.st-note.com/img/1638867570116-LkbQmWLPb9.png?width=1200)
ADSR Envelopeはピアノの鍵盤のように押した時に音が出て(Attack > Decay)、指を押させている間は音が出続け(Sustain)、指を鍵盤から離した時に徐々に音が消えていく(Release)という状態遷移を再現する時に使うようです。
まとめ
図を作って見てようやくEnvelopeの正体が見えてきました。1つ1つのノードの意味を調べるだけでもMetaSoundや音楽の奥深さに「よくできているなぁ~」と驚きを隠せません。MetaSound面白いです!
次回はSineから出るAudioをクリアに聞こえるように修正して、より音を聴こえやすくしてみます。
MetaSoundで鍵盤作れました🎶
— ポジTA (@posita33) December 6, 2021
ドレミの出し方が分かるだけでも色々出来て楽しくなってきました😆#UE5 #MetaSound pic.twitter.com/y0j3EG7rvD
ADSR Envelopeを学習したことでより音に深みを出せるようになりました。
朝作った鍵盤をAD EnvelopeからADSR Envelopeで制御するように変えたらピアノっぽい音になりました🎹
— ポジTA (@posita33) December 7, 2021
ノード1つでこれだけ変わるのは面白いです#UE5 #MetaSound pic.twitter.com/oksCk7i0vO
AD EnvelopeとADSR Envelopeはこの図を覚えておくと使いやすいです💪#UE5 #MetaSound pic.twitter.com/RiRkNK3RDj
— ポジTA (@posita33) December 7, 2021
この記事が気に入ったらサポートをしてみませんか?