我在项目中使用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