我是Max的新手,我正在努力了解如何使用数组和Javascript参数。
我有一个工作的js对象输出一个数组:
var inlets = 1;
var outlets = 1;
function getRandomChordProgression()
{
outlet(0, [1,4,5]);
return [1,4,5];
}
然后我想在另一个js对象中使用该数组,它接受一个数组和一个整数:
var inlets = 2;
var outlets = 1;
function getCurrentChord(chords, barNumber)
{
var chord = chords[barNumber % 3];
outlet(0, chord);
return chord;
}
我尝试了下面的内容,但是js得到了未定义的输入。
答案 0 :(得分:0)
首先要注意的是,在Max Msp中,为了将列表分配给单个符号,您需要使用" tosymbol"宾语。即使列表在Max Msp中被有效地视为单维数组,为了被javascript理解,它们首先需要被转换。将列表转换为符号后,我们可以使用来自数字框的整数将其加入,使用getCurrentChord消息将其打包并将其提供给getCurrentChord.js对象。
您将看到,通过将列表转换为符号,数组中的每个字符(包括空格)都被视为数组的一部分。因此,使用您的示例,由3个整数组成的数组将占用5个位置,从0到4.为了使其工作,在第二个.js脚本内,模数运算符需要设置为5才能达到最大值余数为4.这意味着通过将数字框设置为1或3,您将得到一个空输出。因此,您需要决定如何以及是否解析输入或输出以获得所需的值。
var inlets = 2;
var outlets = 1;
function getCurrentChord(chords, barNumber)
{
var chord = chords[barNumber % 5];
outlet(0, chord);
}

希望有所帮助!