我想创建一个简单的可视化工具,它可以代表我在屏幕上播放midi键盘。我演奏了一种相对新颖的乐器类型,称为谐波表:
http://en.wikipedia.org/wiki/Harmonic_table_note_layout
http://www.soundonsound.com/newspix/image/axis49.jpg
并希望构建工具以简化其使用并教会其他人如何使用它们。
但是,我找不到一个很好的方法来获得midi进入javascript环境(或者,就此而言,Flash或Java没有大量帮助jiggery-pokery稍微超出我的范围,并且使用来自什么看起来相当陈旧和废弃的开源项目。在任何情况下,我都不太热衷于为这个项目工作。
是否有我错过的合适的图书馆或应用程序,这将使我能够做到这一点?
答案 0 :(得分:13)
在寻找另一种解决方案时(基于Flash,使用Red5开源闪存服务器的功能 - 真的很难看,但我现在很绝望)我发现有人做了我需要用Java接口的东西与硬件。他们开始使用闪存解决方案,最近移植到Javascript。耶!
http://www.abumarkub.net/abublog/?p=505
不要让关于'概念证明'的警告劝阻你:基本功能似乎是坚实的,至少我能够投入的一切。
所以现在我正在路上,所以其他任何想要构建基于javascript的midi接口/合成器的人/你有什么。
我可以在javascript中操作实时midi!这比飞行汽车和喷气式飞机要好得多。
答案 1 :(得分:10)
我制作了一个NPAPI浏览器插件,可让您通过Javascript与MIDI设备进行通信。
目前,它适用于Chrome和Safari中的OSX以及Chrome中的Windows。
我正致力于支持其他浏览器(Firefox,Internet Explorer)和其他操作系统(Linux,Android,iOs)
答案 2 :(得分:8)
编辑:
我最近发布了这个模块https://github.com/hems/midi2funk这是一个node.js模块,它监听midi并通过socket.io广播它,所以如果你有幸在本地与你的客户端一起运行node.js服务可能会从中获得一些乐趣...
~~~~~
其他一些方便的链接,我认为对我来说最重要的是:
编辑:刚刚意识到线程已经老了,希望链接可以帮助某人(:
答案 3 :(得分:5)
Web MIDI API现已在Google Chrome 43+中使用。我甚至写了一个库,以便更容易使用它。如果您仍然感兴趣并且不关心它目前仅适用于Chrome,请查看:https://github.com/cotejp/webmidi
答案 4 :(得分:1)
出于明显的安全原因,大多数浏览器不允许访问除键盘和鼠标之外的任何硬件,因此除非将其作为其中一个设备插入,否则您不太可能访问midi设备。
您可以尝试找到一个将midi输出转换为按键的驱动程序,然后在浏览器中处理这些驱动程序,但这只是一个单机解决方案。
答案 5 :(得分:1)
我对即将到来的Web MIDI API感到非常兴奋。据我所知,它只是在讨论中,尚未进入任何浏览器。
结合已经开始在某些浏览器中实现的Web Audio API,可以在浏览器中进行完整的软件合成。激动人心的时刻。
答案 6 :(得分:1)
由于Web MIDI API仍然是草稿,因此无法直接访问浏览器中的MIDI事件。
一个简单的解决方法可能是编写一个小型服务器,您可以在其中注册MIDI事件并使用websocket将它们传递给您的javascript。这可以在Python中轻松完成。
答案 7 :(得分:0)
现在的浏览器都支持MIDI收听。您只需要
navigator.requestMIDIAccess().then(requestMIDIAccessSuccess, requestMIDIAccessFailure);
和听键
function requestMIDIAccessSuccess(midi) {
var inputs = midi.inputs.values();
for (var input = inputs.next(); input && !input.done; input = inputs.next()) {
console.log('midi input', input);
input.value.onmidimessage = midiOnMIDImessage;
}
midi.onstatechange = midiOnStateChange;
}
请参阅工作示例here