0

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

在此处输入图像描述

4

1 回答 1

0

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

使用 Max-Msp 补丁的屏幕截图

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

希望有帮助!

于 2017-06-13T16:54:31.253 回答