blog - Max/MSPのJavascriptへ引数リスト渡し

Max/MSPのJavascriptへ引数リスト渡し

カテゴリ : 
コンピュータ » Max/MSP
執筆 : 
kuha 2009-10-08 09:54
Max5になって、JavaScriptへの引数をリストで渡す際の個数が大幅にアップした。

従来のMax4.6までは、引数をリストで渡せるのは最大256個までだったので、たとえばマトリックスの全セルの要素の値をforループで計算するときも、16*16=256までのマトリックスが限界だった。それより大きいマトリックスはoffsetなどを指定して、セルを複数に分けてリスト渡しするしかなかった。

ところが、Max5で、リスト渡しできる最大個数が128*128=16384個にまで増えた。これで、128*128のマトリックスの全セルの計算がJavaScriptで一気に行える。

たとえば、matrixの全セルの値をjit.spillでリストに吐き出し、jsパッチでJavaScriptに渡して、セルの値の最大値とそのセル番号をリスト出力するのは、こんな感じ

inlets = 2; 
outlets = 1; 
var in01_; //input values of all cell as list(array)
var in02_; //input matrix dimmension x,y
function list()
{
    if ( inlet == 0 ) { in01_ = arguments; }
    if ( inlet == 1 ) { in02_ = arguments; }
    if ( inlet == 0 )
    {
        var n;
        var max_i; //最大値セルの番号
        var max_data = 0; //セルの最大値
        n = in02_[0] * in02_[1]; //マトリックスの全セル数
        var data00_ = new Array( n );
        var data01_ = new Array( 2 );
        for( var i = 0; i < n; i++){
            data00_[i] = in01_[i]; //入力リストを配列に格納
            if( max_data <= data00_[i] ){ //最大値とセル番号の格納
                max_data = data00_[i];
                max_i = i; 
            }
        }
        data01_[0] = max_i; //出力結果(セル番号)を入れる
        data01_[1] = max_data; //出力結果(セル最大値)を入れる
        outlet( 0, data01_ ); //結果の入った配列をoutletからリスト出力
        delete data00_;
        delete data01_;
    }

トラックバック

トラックバックpingアドレス http://www.kuhalabo.net/kxoops/modules/d3blog/tb.php/13