如何将两个参数传递给js对象,包括一个数组?

时间:2017-05-21 10:33:49

标签: max-msp-jitter maxmsp

我是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得到了未定义的输入。

enter image description here

1 个答案:

答案 0 :(得分:0)

首先要注意的是,在Max Msp中,为了将列表分配给单个符号,您需要使用" tosymbol"宾语。即使列表在Max Msp中被有效地视为单维数组,为了被javascript理解,它们首先需要被转换。将列表转换为符号后,我们可以使用来自数字框的整数将其加入,使用getCurrentChord消息将其打包并将其提供给getCurrentChord.js对象。

Screenshot of Max-Msp patch using "tosymbol" object

您将看到,通过将列表转换为符号,数组中的每个字符(包括空格)都被视为数组的一部分。因此,使用您的示例,由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);
}




希望有所帮助!