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

时间:2015-06-22 12:50:33

标签: javascript midi.js

我在我的项目中使用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播放器功能用于此类序列。请指导。

2 个答案:

答案 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