動的に生成したパッチを繋ぐサンプル:Max/MSP , JavaScript

スクリーンショット 2012-12-15 4.03.31スクリーンショット 2012-12-15 4.04.42

スクリーンショット 2012-12-15 3.54.47

動的に(プログラム実行時に)生成したtoggleを繋いじゃいましょう!左上の数値を変更すると、makeToggleが呼ばれて、数値の数だけ繋がったtoggleが生成されます。clearToggleでtoggleを全部消すことが可能です。特に意味は無い、そこにMax6とJavaScriptがあったのと、夜眠れなくなったからやりました。

メタプログラミングという世界に突入だとコバルト爆弾αΩのΔが言ってました。夢が広がりそうな予感が!!!

余談ですが、ECMAscript5でArrayクラスに追加されたと噂のメソッドforEach使おうと思ったんですが、呼べなかったです。使えました!まさかMax6のJavaScriptは ECMAscript5 じゃない?3なのかな?調べたけれどわからなかったです。さらなる余談ですが4はActionScript3.0の原型らしいですね。どうりで似てるわけだ。

[javascript]
inlets = 1;
outlets = 0;

var p = this.patcher;
var toggles = new Array();

post(p);

function makeToggle(numPatch){

for(var i = 0 ; i < numPatch ; i++)
{
toggles.push( p.newdefault(Math.random() * p.wind.size[0],Math.random() * p.wind.size[1],"toggle") );

if(toggles[toggles.length-2] != null)
{
p.connect(toggles[toggles.length-1],0,toggles[toggles.length-2],0); //今生成したtoggleのoutletと一つ前に生成したtoggleのinletを繋ぐ
}
}
}

function clearToggle(){

for(var i = 0,length = toggles.length ; i < length;i++)
{
p.remove(toggles[i]);
}
}
[/javascript]

パッチ内にToggleを作成するJavaScriptパッチ:MaxMSP

makeToggleメッセージを送れば送るほど、toggleがパッチ内にランダムに生成されるパッチです。toggleがランダムに生成されるんですよ!!!!!!!’`,、(‘∀`) ‘`,、

以下のコードをjsオブジェクトをダブルクリックして開くエディターに記入して、試して見てください。
[javascript]

function makeToggle(){

//jsパッチが置いてあるパッチへの参照を取得
var p = this.patcher;

//position
//wind.size[0] は パッチの width , wind.size[1]は パッチのheight の取得
//Mathクラスのランダム関数によって、パッチウインド内の座標を適当に決定。
var x = Math.random() * p.wind.size[0];
var y = Math.random() * p.wind.size[1];

//Make Toggle
//上記で決めたx,yの位置にtoggleを作成
var t = p.newdefault(x,y,"toggle");

//toggleへbangを送る。= チェックが入る
t.bang();

}

[/javascript]

パッチをフルスクリーン化するJavaScriptパッチ:MaxMSP

フルスクリーン化前

フルスクリーン化後

JavaScript in Max の勉強中です。オライリーのサイ本も読んでるんですけど、クラス以外は型指定の無いActionScript3.0だと思えば、ほとんど同じようですね。ネットで見てきたJavaScriptのコードは、$マークのついた文法が多くて、「この言語、なんか読みづらいなぁ」くらいに思っていたのですが、それはjQueryのせいだったようです。

今日は、Patchをフルスクリーン化するJavaScriptパッチのサンプルです。以下のコードをjsパッチをダブルクリックして出てくるエディターに入力します。

これでtoggleをONにすると、パッチがフルスクリーンになります。this.patherで、このjsパッチを呼び出しているパッチオブジェクトへのインスタンスへ参照ができて、パッチオブジェクトで保持しているfullscreenメソッドを呼び出しているという事だと理解しました。

[javascript]

inlets = 1;

function fullscreen(onOff)
{
post("fullscreen:"+onOff);
post();
this.patcher.fullscreen(onOff);
}

[/javascript]

messageの文字数を返すjsパッチ : MaxMSP

Max6にてmessageの文字数を返すパッチが見当たらなかったので、最近勉強しているjsパッチで書いてみました。

jsパッチをダブルクリックして出てくるテキストエディターに以下のプログラムを書きます。

[javascript]

inlets = 1;
outlets = 1;

//symbolメッセージによって呼ばれる関数
function symbol(val)
{

post(val); //引数をMaxWindowに表示
post() //改行

outlet(0,val.length); //val.lengthで文字数取得し、outletの0から出力。
}

[/javascript]