MAX 7 サウンドプログラミング基礎4
p.183〜190
・ランダム関数
ランダムな数値を生成するには、下記のオブジェクトを用いる。
・randomオブジェクト.......ランダムな数値を出力
・urnオブジェクト .......重複しないようにランダムな数値を出力
・drunkオブジェクト .......直前の値を基準として、一定範囲で増減する数値を出力
・decideオブジェクト .......ランダムに"0"か"1"を出力
※drunkオブジェクトは、第2アーギュメントで指定した数値よりも1小さい範囲で増減するような数値を出力する。例えば、[drunk 250 3]であれば、0から250までの数値を、0〜2段階(-2 -1 0 +1 +2)の範囲で増減していくこととなる。
・multislider
右動画において、multisliderとrandomオブジェクトを使用した簡単なグラフを作成した。縦軸のレンジに則って、指定された数値をランダムにスライダやポイント、ライングラフとして表示することができる。
ちなみに、ドラッグ&ドロップでスライダー事態を拡大しても、インスペクター上の範囲が変わらなければ、どのサイズでもいっぺんのサイズはその絶対値として機能する。
・その他の数値処理オブジェクト
[abs]...入力された数値の絶対値
[pow]...アーギュメントまたは第二インレットの数値を指数として、べき乗を出力。
[sqrt]...入力される数値の平方根を出力
[ftom]...周波数をMIDIノートナンバーに変換して出力
[mtof]...MIDIノートナンバーを周波数に変換して出力

[atodb]...振幅値をデシベル値に変換して出力
[maximum]...2つの数値(第1インレット第2インレット)のうち大きい数値、またはリスト中の最大値を出力
[minimum]...2つの数値(第1インレット第2インレット)のうち小さい数値、またはリスト中の最小値を出力
[mean]...入力される数値の平均値を出力
[peak]...入力された複数の数値から、最大値を出力
[through]...入力された複数の数値から最小値を出力
[past]...特定の数値を超えると、bangが出力される。
[accum]...第2インレットへ入力される数値を全て順番に加算し、第1インレットへbangが入力された時点で合計の数値を出力する。また、第3インレットでは加算ではなく乗算となる。
[scale/zmap]...アーギュメントや第2インレット以降で指定した入力範囲と出力範囲に従って、入力される数値をスケーリングして出力
[clip/split]...アーギュメントや第2インレットで指定した範囲に収まるように、入力される数値をクリッピングして出力
・exprオブジェクト
exprオブジェクトを用いることで、オブジェクト内に任意の数式演算を使用することができる。
演算式には、"$i1"や”$i2”という記号(iは整数、実数ならば$f1となる)を使用し、アーギュメントとして記述する。$i1は第1インレット、$i2は第2インレットから入力される数値に置き換えられる。

また、exprオブジェクトに表記する演算式には、演算の優先順位があり、右図の例の場合、左側の式では[$i2*4]×[$i3]が優先されるのに対し、右側では()内の[$i1*3]+[$i2*4]から計算されることになる。
さらに、関数の中には、powのように複数のアーギュメントを必要とする関数もあり、このような場合にはカッコ内に\,(バックスラッシュとカンマ)で区切ってアーギュメントを記述する(MAX7においては、\なしでも演算可能のようである)。

・vexprオブジェクト
exprオブジェクトのインレットへの入力は、単一の数値であるが、vexprオブジェクトにおいては、リストを扱うことが出来、結果もリストとして出力される。
下の図を見てみよう。
左側では第1インレットへ入ったリストの数値それぞれが*4されたリストとなって出力される。
右側では、リストのそれぞれの平方根が、右・中央・左のリスト同士で加算されて、リストとして出力されている。
