我希望在midi.js中使用一个playound函数来循环一个数组,我选择了和弦,也许是4个差异。但我无法弄明白。我可以让它做一个单独的数组,但不是多个,并且它不循环,只播放我设置它的时间(现在是8)。
window.onload = function () {
MIDI.loadPlugin({
soundfontUrl: "../MIDI.js/examples/soundfont/",
instrument: "acoustic_grand_piano",
onprogress: function(state, progress) {
console.log(state, progress);
},
onsuccess: function () {
for (var i = 0; i < 9; i++){
playsound([37,59,61,71,80])}
}});
var delay =1;
function playsound($chords)
{
var velocity = 127;
MIDI.setVolume(0, 127);
MIDI.chordOn(0, $chords, velocity, delay);
MIDI.chordOff(0, $chords, delay+1);
delay += 1;
}
答案 0 :(得分:0)
你的代码应该可以工作,除了为了预测工作的时间,我发现在调用成功回调之后你必须等一下。如果您在加载后立即拨打电话,则会不定期地播放音符。
我建议使用下面playChords
之类的功能,并在加载后通过按下按钮调用该功能来测试。例如,此功能以1/2秒的间隔播放三种不同的和弦,总共9次。
chords = [[37,59,61,71,80],[38,60,62,72,81],[39,61,63,73,82]];
function playChords() {
for (var i = 0; i < 9; i++){
playChord(i/2, chords[i%chords.length]);
}
}
function playChord(delay, chord) {
MIDI.chordOn(0, chord, 127, delay);
MIDI.chordOff(0, chord, delay+1);
}