我在我的项目中使用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播放器功能用于此类序列。请指导。
答案 0 :(得分:1)
使用https://github.com/surikov/SSSynthesiser.js代替MIDI.js。
SSSynthesiser.js可以完全控制正在播放的内容。您可以实时更改所有乐器样本,旋律等。
更新
这是老答案。使用https://github.com/surikov/webaudiofont代替它。
阅读文档,查看示例。请参阅此处的MIDI播放器示例https://surikov.github.io/webaudiofont/examples/midiplayer.html
答案 1 :(得分:0)
我认为不可能将MIDI播放器直接用于音符序列,所以我得到的解决方案是, 需要将音符序列转换为MIDI文件&amp;然后你可以输入MIDI文件到播放器。这是链接,提供有关MIDI文件转换的更多详细信息
http://mudcu.be/journal/2011/11/base64-soundfonts/
库有助于转换MIDI文件中的音符序列 https://github.com/sergi/jsmidi