Maxはビジュアルプログラミング言語であるという性質上、一度組まれたパッチが理解しにくくなりやすいです。
理由の一つに、オブジェクト一つ一つの機能を忘れてしまうことがあります。調べるためにドキュメントを見なおしているうちに、時間が刻一刻と過ぎてしまう・・・。
よく使うオブジェクトを、以下に書いていこうと思います。久しぶりにMaxを触る時は、見直すといいでしょう。
gate
第二インレットのメッセージを第一インレットで指定したアウトレットに出力します。
"gate 2"のように使い、指定した数字の数だけアウトレットを作成出来ます。
"gate 3 2"のように、3つのアウトレットのうち、第二アウトレットに最初出力するというような指定も可能です。
if
if文です。
if (条件式) then (出力メッセージ) else (出力メッセージ)
条件式には、"$(数字の型)(任意の数字)"のような変数を使うことが出来ます。
数字の型には
i : 整数
f : 実数
s : シンボル
が利用出来ます。
任意の数字に従って、扱いたいインレットの場所を示すことが出来ます。
例えば、"$i1"と書くと、第一インレットから受け取った整数を示します。
条件式には
!=
<
<=
==
>
>=
が利用出来ます。
条件を満たした場合の出力メッセージがthen~で、満たさない場合がelse~です。
int
int型の整数を格納するオブジェクトです。
第一インレットに整数を入れると、値を格納+出力します。
第二インレットに整数を入れると、値を格納するのみです。
第一インレットにbangを入れると、格納されている値が出力されます。
loadbang
パッチを読み込むと同時にbangを出力します。
パッチのロック中にこれをダブルクリックすることでも出力可能です。
pack
複数のインレットから値を受け取り、リスト型(スペース区切りのメッセージ)に変換します。
"pack"の後に記入する値の個数でインレットの数を制御出来ます。
pak
packは第一インレットにbangメッセージを送信する必要がありましたが、こちらはアーギュメントの値を変更した時にもbangメッセージと同様の効果が現れます。
それ以外の機能については、packと変わりません。
prepend
送信された値の前にメッセージを追加します。
"prepend wish upon a"だと、インレットに"star"が入った時、"wish upon a star"が出力されます。
インレットに"set clear 20"のように、"set"で始まるメッセージを送信すると、"prepend"の後の挿入予定のメッセージを上書きすることが出来ます。
print
コンソールにインレットの値を出力します。デバッグ用オブジェクトです。
コンソールを見るのが面倒なときは、 "print @popup 1"とすると、その場で値を参照できます。
qmetro metro
指定した時間の長さ毎に、bangメッセージを出力可能に出来ます。
単なる数字を指定した場合は、ms(千分の一)の長さが指定されます。
上記の例だと、2ms毎にbangメッセージを出力します。
route
switch文の代わりです。
インレットに入ったデータを参照し、指定した値に従って、どのアウトレットから出力するかを振り分けます。
指定した値の個数+1つのアウトレットが現れます。1つ目の値と同じものは第一アウトレット、2つ目は第二アウトレット・・・といった具合に順番に対応するアウトレットにデータを振り分け、指定した値に一致しない場合は、最後のアウトレットにデータを出力します。
select (sel)
routeと同様に、インレットに入ったデータを振り分けますが、こちらが出力するのはbangメッセージのみです。どの指定値にも一致しない場合に振り分ける最後のアウトレットからは、データがそのまま出力されます。
send receive (s r)
コードをつなげることなくメッセージの送信が行えます。
"send elsewhere"のように名前をつけ、同じ"elsewhere"の名前を持つ"receive elsewhere"にメッセージを送信出来ます。
これらは"s"、"r"にそれぞれ省略が出来ます。
trigger (t)
プログラミングでいうキャストです。インレットに入った値を、指定したタイプに従って変換し、アウトレットから出力します。
タイプの指定は"trigger"の後に"b"等、アルファベットで指定します。これは複数指定出来、アウトレットもそれに従い複数あらわれます。
基本タイプとして
i : 整数値に変換
f : 実数値に変換
b : bangに変換
l : リストに変換
s : シンボルに変換
があり、その他メッセージをベタ打ちすることで、送信が出来ます。
オブジェクト名"trigger"は、"t"に省略出来ます。忘れやすいので注意。
0 件のコメント:
コメントを投稿