如何实现用于音符序列的MIDI.js MIDI播放器



我在项目中使用MIDI.js,这是我播放MIDI音符序列的代码

for (var repeat = 0; repeat < melodyrepititions; repeat++)
        {
            for (var i = 0; i < composition.length; i++)
            {
                for (var j = 0; j < composition[i].length; j++)
                {
                    if (composition[i][j] != 0)
                    {
                        MIDI.noteOn(0, composition[i][j] + scale, velocity,delay );
                        MIDI.noteOff(0, composition[i][j] + scale, delay+onlynotationsofeachbeatbracketdelay[i][j]);
                    }
                    else if (composition[i][j] == 0)
                    {
                       MIDI.noteOff(0, composition[i][j] + scale, delay);
                    }
                    delay = delay + onlynotationsofeachbeatbracketdelay[i][j];
                }
            }
        }

我想为这个序列实现MIDI.js播放器,以便在播放时开始、暂停、停止旋律。我不知道如何将MIDI.js播放器函数用于这样的序列。请引导。

使用https://github.com/surikov/SSSynthesiser.js而不是MIDI.js.

SSSsynthesizer.js可以完全控制正在播放的内容。您可以实时更改所有乐器样本、旋律等。

更新

这是一个古老的答案。

使用https://github.com/surikov/webaudiofont而不是它。

阅读文档,查看示例。请参阅此处的MIDI播放器示例https://surikov.github.io/webaudiofont/examples/midiplayer.html

我认为不可能直接将MIDI播放器实现为音符序列,所以我得到的解决方案是,需要将音符序列转换成MIDI文件&然后你可以输入MIDI文件到播放器。这是一个链接,它提供了更多关于MIDI文件转换的细节

http://mudcu.be/journal/2011/11/base64-soundfonts/

帮助转换MIDI文件中音符序列的库https://github.com/sergi/jsmidi

最新更新