MAX 7 サウンドプログラミング基礎3
p.169〜178
複数のメッセージ(リスト表記とカンマ表記)について。
さて、ここで非常に引っ掛けっぽい例を紹介したい。
まず、リスト表記については。右の左式の場合、[3 20]のリストメッセージが{* 5}オブジェクトへ流れ込むと、これは{*}オブジェクトの"第2インレットへ入った20"×"第1インレットへ入った3"の乗算と全く同じ働きであるため、 答は"60"である。
では次に、カンマ表記である[3, 20]の場合はどうか。こちらは、左から順番に{* 5}オブジェクトへと流れ込むため、printすると[15 100]と表記されるが、ナンバーボックスに反映されるのは最後に計算される100のみとなる。
・valueオブジェクト
valueオブジェクトは、同じアーギュメントを持っているものに対して、メッセージを記憶し、bangによって共通して出力させることができる(※bangが入力されなければ反映されない)。 右の式においては、[AA]と共通したアーギュメントをもつvalueオブジェクトは、一方に数値を入力し、bangを入力することで、一方の同じアーギュメントの出力にも同党の数値が反映する。
・sendオブジェクトとrecieveオブジェクト
パッチコードでアウトレットからインレットへ繋がなくとも、信号を送る方法がある。
sendオブジェクトとrecieveオブジェクトのそれぞれに同じアーギュメント内容を記しておけば、sendに入力されたメッセージや数値と同じ内容がreceiveオブジェクトから出力される。また、これは複数のreceiveオブジェクトがあっても同じ結果となる。
さらに、sendオブジェクトを使わなくとも、メッセージボックス内に、;(セミコロン)と改行を用いて、共通するアーギュメントのreceiveオブジェクトへメッセージを出力することもできる(右図参照)。
・数値計算
加算、減算、乗算、除算においては、アーギュメントとしての数値を省略した場合には、初期値としてゼロが用いられる(ただし、除算の場合のみ1)である。
・実数演算
実数で小数点以下も扱いたい場合には、各ナンバーボックスをfloatにすることと、演算オブジェクト内のアーギュメントに、例えば除算の場合は[/ 0.]のように打ち込んでおく必要がある。