2014年7月28日月曜日

Cycling '74 Max 関連の記事を扱うサイト集

日本のMax人口はとても少ない印象を覚えます。

Maxに関する記事を書くブログも、数えるほどだと思うので、ここにメモしていこうと思います。

mirrorboy - 秋葉系インタラクション
http://mirror.boy.jp/

Maxを利用したアプリケーションの記事が多めです。
記事へはサイドバーから。

memorandum
http://satcy.net/blog/archives/cat_maxmspjitter.php

Maxを利用したツールの配布がいくつか行われています。少しレガシー。
ブログ移転したようですが、ここのほうが情報はわかりやすいです。

yoppa.org
http://yoppa.org/ssaw11

Maxの講義資料が置いてあります。パッとドキュメントを読んで理解できないことがたくさん書いてある。入門に適しています。

Katsuhiro Chiba
http://audiooo.com/max-patches

Maxのパッチをいくつか公開しています。青い。

Akihiko Matsumoto Web
http://akihikomatsumoto.com/maxmsp/max.html

少しだけ解説が載っています。あまり参考にならないかも・・・?


2014年7月27日日曜日

Maxでよく使うオブジェクト集【備忘録】

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"に省略出来ます。忘れやすいので注意。

【Max】gateで値をせき止める【備忘録】





gateは第一インレットの数字で出力を指定でき、0を指定すると出力が止まります。

従って、上記図のようにトグルスイッチと組み合わせれば、スイッチのON/OFFで第二インレットの値をせき止めたり、そのまま流したりを選択することが出来ます。