首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用midi.js的数组/循环

使用midi.js的数组/循环
EN

Stack Overflow用户
提问于 2015-07-07 19:40:45
回答 1查看 326关注 0票数 2

我希望在midi.js中使用一个播放声音函数来循环一个数组,我选择的和弦可能是4个不同的和弦。但我想不出来。我可以让它做一个单一的数组,但不是多个数组,它不会循环,只播放我设置的时间量(现在是8)。

代码语言:javascript
复制
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;

}
EN

回答 1

Stack Overflow用户

发布于 2015-09-03 03:51:40

你的代码应该可以工作了,除了为了达到预期的工作时间,我发现你必须在调用成功回调之后等待一段时间。如果您在加载后立即调用,则音符播放不规律且顺序混乱。

我推荐使用下面的playChords这样的函数,并在加载后通过按下按钮调用该函数进行测试。例如,此函数以1/2秒的间隔播放三个不同的和弦,总共播放9次。

代码语言:javascript
复制
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);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31267575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档