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]

LiveAPIを使い、自分のトラックナンバーを得るパッチ:Javascript in Max, Max for Live

スクリーンショット 2013-04-09 1.14.11

[javascript]
//init
"use_strict";
inlets = 1;
outlets = 1;
autowatch = 1;

var api;// = new LiveAPI();

function loadbang(){

api = new LiveAPI();
}

//bangを受け取ると、このデバイスが刺さっているトラックナンバーを出力
function bang(){

//Loadbangの中で代入できない場合があった。
//LiveAPIの初期化は、非同期処理なのかな?
api.path = "this_device";

var pathStr = api.path;
var paths = pathStr.split(" ");
outlet(0,parseInt(paths[2]));
}

[/javascript]
LiveAPIを勉強してます。文字列処理は、Javascriptでやると簡単だと思う。