[Max備忘録4]Hot inletとCold inlet

Inletとは

さて、前回とは変わって今回はMaxの処理系の話になります。
それぞれオブジェクトを作ってインレットとアウトレットにパッチコードを繋げると言う話を一番始めの回(こちら)でしたと思いますが、インレットには2種類あるのです。
マウスオーバー(マウスカーソルを上に合わせること)をすると赤いリングが出るものと青いリングが出るもの二つがあると思います。それぞれ赤い方を「ホットインレット(hot inlet)」青い方を「コールドインレット(cold inlet)」と呼びます。

ホットとコールド、その違い

大多数のオブジェクトはホットインレットを一つ持ち、その他のインレットがコールドになっています。(但し最後に”~”がつくシグナル系のオブジェクトは除いて)では、ホットとコールドで何が違うのか。それを理解するために簡単なパッチを組んでみましょう。

さて、このように足し算をするパッチを組んでみましたが…上のnumberオブジェクトを動かしてみましょう。
左のオブジェクトを動かすと計算結果が変わったと思います。今度は右側のnumberを動かすと…あれ、変わりませんね。ここで”+”オブジェクトのインレット二つに注目してみましょう。
左側が赤く、右側は青いと思います。これが「ホットインレット」と「コールドインレット」です。

こいつらの違いはというとホットインレットに入力があると計算してアウトレットから出力するのに対し、コールドインレットは値を受け取るところまでしかしない、と言うところです。
右側のnumberを動かした後に左側のnumberを動かすと右+左が計算されたと思います。では右を動かしたときにも計算させるのにはどうしたら良いでしょうか?

三つの方法

一つ目は右のインレットからボタンを介して”+”のホットインレットにパッチコードを繋ぐことです。実際にやってみましょう。

このように配置すると、右側のnumberオブジェクトを上下させる度にbuttonオブジェクトが細かく点灯するのが分かるかと思います。これはbuttonオブジェクトが信号を受けとったときにそれをbang信号に変換して出力するためです。右側のnumberオブジェクトを操作すると”+”オブジェクトのコールドインレットに値がいくと共に、buttonオブジェクトでbangに変換された信号がホットインレットに行くので、計算のトリガーとなるわけです。bangは数値を持ちませんから、数字はそのまま最後に入力された数値が使われます。

 

二つ目は”trigger”オブジェクトを使う方法。
“trigger”は送られてきた信号から任意の型のデータを取り出すオブジェクトで、オブジェクト名は”t”を使い、アーギュメントに”b(bang)”,”i(integer)”,”f(float)”,”s(string)”,”l(list)”などをとります。(”integer”は「整数」、”float”は「浮動小数点数」、”s(string)”は「文字列」、”l(list)”は「リスト」を表しています。)このままでは分からないと思うので下の画像を見てみましょう。

と、このようになります。
真ん中に挟んである”t”オブジェクトでそれぞれ左と右のアウトレットから”b(bang)”と”i(integer)”のデータが出力されています。ですので一個目と同じようにbangと整数がそれぞれ”+”オブジェクトに入っています。

三つ目は”bondo”を使う方法です。ジェームズ・ボンドではないですよ。
さて、このオブジェクトなのですがお気づきでしょうか。インレットが二つとも赤く…つまりどちらもホットインレットになっています。さて、このボンドはどんな働きをしてくれるのでしょうか。

答えは単純で、どちらのアウトレットからも出力されるようになる、でした。
bondoは値を保持し、インレットに信号が来た時、もう一方のインレットから入ってきていたメッセージも同時に出力します。ちょっとわかりにくいとは思いますが上の例でたとえば左のnumberを動かしたときはボンドの左のアウトレットからその数値が出力されると共に、右のアウトレットからも記録されていた数値が出力されます。左右が逆転していても同じように動きますので、下の”+”オブジェクトで正しく計算されます!

 

以上、ホットインレットとコールドインレットがもたらす処理の差とその対処法でした。
ではまた次回。

SNSでもご購読できます。

最近のコメント

    アーカイブ

    コメントを残す