kiyasuの日記

ハッピーうれピーよろしく哀愁

maxプログラミングの際に知っておきたいこと

プログラミングに慣れてる人ならさっさと頭の中でロジック組み始めちゃう人もいると思うんですが、maxにはmaxのやり方があります。

[tempo]

BPMやビート(16ビートなど)を指定してbangや数字を定期的に出す

[sel]

[sel 0]で0が入ってきた時だけbangを出す

[counter]

bangごとに指定した数字をループで出す。

[counter 0 3]なら0,1,2,3,0,1,2,3...といった具合

[click~]

bangが入ってきたら動かす

メトロノーム

これらを組み合わせてメトロノームが作れる。

f:id:mojo_nobu:20220227225400p:plain

[route]

入力値を値によって分岐させる。適切な使い方かわからないけどパッチャーのインレット直後に置けばメッセージで分岐してそれっぽくできる。

f:id:mojo_nobu:20220227225745p:plain

[togedge]

f:id:mojo_nobu:20220227231506p:plain

入力が0から1になるとき左から、1から0になるとき右からbangが出る。今パッと思い出せないが、これはだいぶ使える気がする。01に限らず、ある閾値を行ったり来たりするのを検知したい時はままある。

メッセージのアーギュメント

f:id:mojo_nobu:20220227225914p:plain

これで代入即出力ができる。

アトリビュートなど呼び出す

オブジェクトのインレットを右クリックすると指定可能なアトリビュートやメッセージが表示される。

f:id:mojo_nobu:20220227230403p:plain

ここから選択すると

f:id:mojo_nobu:20220227230450p:plain

こういう感じの便利そうなUIが出てくれる。

patcherローカル(#0トリック)

sendの宛先名などは全てのpatcherで共通なので、[send SetArg]みたいに書かれたpatcherを複数呼び出すと、全てのsend receiveが混ざり合っておかしなことになる。

#0は実行時にpatcherごとに一意の番号を振ってくれるので[send #0_SetArg]としておくと、実行時は[send #1057_SetArg]みたいにやってくれる。これで混ざることがなくなる。