前の記事
バージョン
Version 8.1.5(9359645)(64-bit windows)
鍵盤を弾いた強さはどうやって取得するの?
noteinオブジェクトのVelocityから取ってくるぞい!
一番弱く弾いた時のVelocityの値は1、逆に一番強く弾いた時の値は127でごわす。
キーボード番号とベロシティをセットにしたメッセージにしてあげる必要あり
味噌になるのが pack オブジェクト。
packオブジェクトでキーボード番号とベロシティを一つにまとめてあげないといけない。
『キーボード番号を第1引数、ベロシティを第2引数にして音を作る部品に渡す』という風に作るとうまくいかなかった(´・ω・`)
音を作る部品を呼び出す側はこんな感じ
print オブジェクト(=Maxコンソールに出力するやつ)に繋げるとpackが何をしているのかが分かるっ!
60番の鍵盤を116の強さで弾いた時の例。コンソールは2行にならずに1行にまとまってる。
packされたメッセージを受け取った側ではpackの逆を
ベロシティの値にはscaleとdbtoaをかませる
ベロシティの値を単純に÷127せずに、まずはデシベルに変換します。
その為に scale オブジェクトを使う!
んでもってデシベルを音の大きさをコントロールする値に変換!
dbtoa オブジェクト。
参考サイトさん https://music.arts.uci.edu/dobrian/maxcookbook/use-midi-velocity-amplitude-envelope
参考サイトさん https://natuch.com/2014/12/26/decibel/
音を作る部品はこんな感じ
(音を作る部品はsynth_cycle.maxpatという名前のファイルにしています)