2017-05-21 42 views
0

我對Max完全陌生,並且很難理解如何使用數組和Javascript參數。如何將兩個參數傳遞給js對象,包括數組?

我有輸出陣列的一個工作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

回答

0

要注意的第一件事是,在最大複用段以一個列表分配給單個符號,你需要使用「tosymbol」對象。即使列表被有效地視爲Max Msp中的單維數組,爲了被javascript理解,它們首先需要被轉換。一旦列表被轉換爲符號,我們可以將其與來自數字框的整數一起加入,並將其與getCurrentChord消息一起打包並將其提供給getCurrentChord.js對象。

Screenshot of Max-Msp patch using "tosymbol" object

你會看到,在陣列中的每個字符轉換列表轉換爲符號,包括空格,被看作是陣列的一部分。因此,使用你的例子,一個由3個整數組成的數組將有5個位置被佔用,從0到4.爲了做到這一點,在第二個.js腳本中,模運算符需要被設置爲5以便具有最大值這意味着通過將數字框設置爲1或3,您將有一個空輸出。因此,您需要決定如何以及如何解析輸入或輸出以獲得所需的值。

var inlets = 2; 
 
var outlets = 1; 
 

 
function getCurrentChord(chords, barNumber) 
 
{ \t 
 
\t var chord = chords[barNumber % 5]; 
 
\t outlet(0, chord); 
 
}

希望幫助!