JSオブジェクトにて、list関数を呼び出す場合は、引数listの1つ目の要素は数値にする:Cycling’74 Max, JavaScript

スクリーンショット 2013-09-24 23.45.53

jsオブジェクトで1つハマりました。

デフォルトで使えるlist関数を呼びだそうとしても、どうしてもanything関数しか呼んでくれない。どうしてだと調べてみると、jsパッチでlist関数を呼ぶには、引数listの1つ目の要素は数値にする必要があったようです。先頭が文字列のリストは、単なるメッセージ扱いになってしまうみたいです。たぶんmessageによる関数呼び出しと区別つかないから仕方ない事だと思われます。皆様もお気をつけなすって!

jsオブジェクト コード

[javascript]</pre>
autowatch = 1;
inlets = 1;

function list(){

post("list:" + arrayfromargs(messagename,arguments));
post();
}

function anything(){

post("anything:" + arrayfromargs(messagename,arguments));
post();
}
<pre>[/javascript]

Genの内部パラメーターを取得するサンプルパッチ:Cyclint’74 Max, Gen

スクリーンショット 2013-09-16 22.04.06

スクリーンショット 2013-09-16 22.04.00

Genの内部で利用しているパラーメーターを取得する場合に、@dumpoutlet 1 でdump用のoutletを指定し、get + パラメーター名で取得する事が可能でした。(内部で計算した後の値に名前の付け方を調べなければ・・・)

指定Folder以下のFileを列挙するJavaScript:Cycling’74 Max, Max/MSP

スクリーンショット 2013-09-11 22.24.02

スクリプト

[javascript]
"use_strict";
inlets = 1;
outlets = 0;
autowatch = 1;

function read(folderPath){

postFile(folderPath);

}

function postFile(folderPath){

var f = new Folder(folderPath);
f.next();

while(!f.end){

if(f.filetype != "fold"){

post("filename:" + f.filename);
post();

}else{

postFile(f.filename);
}

f.next();
}

f.close();
}
postFile.local = 1;

[/javascript]

補足

file名の取得などは、Folderオブジェクトを使うと便利です。post()してる部分の処理を変えれば、色々できると思います。ちなみに、ファイル名が128文字以上の場合に、Maxが有無を言わさず即落ちるバグがありましたので、ご注意ください。Max ver.6.1.3 で確認しました。