top of page

MAX 7 サウンドプログラミング基礎13

P301〜P305

・selectオブジェクト

selectオブジェクトは、入力されたメッセージがアーギュメントに一致するかを調べるオブジェクトである。一致した場合はアーギュメントの順番に対応したアウトレットからbangを出力し、どのアーギュメントにも一致しない場合は、一番右のアウトレットから受け取ったメッセージをそのまま出力する。

また、各インレットに関しては、アーギュメント内の数値を変更できるもので、例えば下のパッチでは第2インレットは2、第3インレットは6、第4インレットは8をそれぞれ変えたい時にそれぞれのインレットへ違う数値を送ることで変更可能である。

また、リスト化されたメッセージから遷都の要素のみ一致を摘出することも出来る。左パッチの場合では、送られた[mammy daddy]メッセージのうち、先頭のものが摘出されるため、bangは第2アウトレットから出力されるというわけである。

・routeオブジェクト

routeオブジェクトは、selectオブジェクトと似ており、アーギュメント内の値と受け取ったメッセージの一致を調べる。

ただし、複数の要素からなるメッセージを受け取る場合には、アーギュメントと一致する数値がメッセージの先頭にあった場合、そのメッセージの2番目以降の要素を出力するところがselectとは大きく異なる。そしてメッセージ要素がもともと一つの場合にはbangメッセージのみが出力される。

例えば、左のパッチにおいては最初の[1 4 5]を受け取ると、第1アウトレットからは1を通過した[4 5]が出力され、[1]のみだと第1アウトレットからbangのみ(ちなみにbangは、当然他の全てにおいても出力されている)、次に[5 6 7 ]の場合には一致するものがないためこの場合は第4アウトレットからすべてのメッセージが出力される。

次の[2 wash the cat]では二つ目のアーギュメントに等しいため、2が通過して[wash the cat]が第3アウトレットから、[RD55]においても同じように第4アウトレットから[55]が出力されることとなる。

※routeとlist

また、下のパッチでは面白い結果が出る。

メッセージに、コンマでで区切った数値、リスト、文字などのメッセージを同時に入れてrouteメッセージをへ送るとどうなるか。

まず頭の50698という数値で試すと、bangのみが出力される。

次に[4 6 7 8 9 0 goodmorning]という数値をアーギュメントに入力すると、4の一致が通過して2番目以降の[6 7 8 9 0 goodmorning]が出力される。

そして次にlistを入力をしてみたところ、[4 6 7 8 9 0 goodmorning]というリストが丸々出力された。

最後に、[yahoo!]においては2番目以降がないため何も出力されなかった。

最新記事
アーカイブ
タグから検索
bottom of page