MIDI键盘与Javascript

时间:2014-07-23 18:54:54

标签: javascript audio midi web-audio web-midi

我只想弄清楚将MIDI键盘连接到网络的整个过程。我已经在那里找到了东西,但他们已经3岁左右了,我认为从那时起,相当数量已发生变化。

为了有一个起点,我想创建一个网络应用程序,只需在我按下它时显示我在MIDI键盘上敲击的音符。

我找到了这个帖子并且让它全部工作:How to discover midi keyboard in web midi api?

我想我不知道如何注册笔记。我对这样的事情不熟悉,我能找到的任何答案对我来说都没有多大意义。感谢。

2 个答案:

答案 0 :(得分:0)

我发现这非常有用:http://webaudiodemos.appspot.com/monosynth/

我稍微添加了它以显示正在播放的音符:https://github.com/danhogan/monosynth

答案 1 :(得分:0)

您链接的主题显示了如何获取MIDI访问权限,但是一旦您获得访问权限,它就不会向您展示如何处理MIDI消息。这个例子中缺少的是这样的:

midiAccess.inputs()[0].onmidimessage = function(event){
    console.log(event.receivedTime, event.data)
    // do cool stuff with midi data here
}

我写了一个图书馆,Wad.js,在这种情况下,我认为这对你来说是完美的。 https://github.com/rserota/wad#midi-input

基本上,当Wad.js初始化时,它会自动检测所有连接的MIDI设备,然后将他们发送的所有MIDI信息记录到控制台。一旦您熟悉了设备的数据,您就可以编写MIDI事件处理函数来处理这些消息,例如

Wad.midiInputs[0].onmidimessage = function(event){
    console.log(event.receivedTime, event.data);
};
Wad.midiInputs[1].onmidimessage = anotherMidiHandlerFunction // If you have multiple MIDI devices that you would like to use simultaneously, you will need multiple MIDI handler functions.

在撰写本文时,我认为MIDI仅在Chrome中作为“实验性功能”提供,因此您必须手动启用它。此外,您还需要安装jazz-plugin(http://jazz-soft.net/doc/Jazz-Plugin/)才能为您的浏览器提供低级MIDI访问。如果您仍然无法检测MIDI