用javascript连接midi键盘或其他实时midi输入?

用javascript连接midi键盘或其他实时midi输入?,javascript,midi,Javascript,Midi,我想创建一个简单的可视化工具,让我可以在屏幕上播放midi键盘。我演奏一种相对新颖的乐器类型,称为谐波表: 并希望构建工具来简化它们的使用,并教他人如何使用它们 然而,我找不到一个很好的方法将midi引入javascript环境(或者,就这一点而言,如果没有我力所能及的jiggery Poker的大量帮助,以及使用看起来相当陈旧和废弃的开源项目中的代码,我就找不到一个很好的方法将midi引入javascript环境(或者Flash或Java). 有没有我错过的合适的库或应用程序可以让我做到

我想创建一个简单的可视化工具,让我可以在屏幕上播放midi键盘。我演奏一种相对新颖的乐器类型,称为谐波表:

并希望构建工具来简化它们的使用,并教他人如何使用它们

然而,我找不到一个很好的方法将midi引入javascript环境(或者,就这一点而言,如果没有我力所能及的jiggery Poker的大量帮助,以及使用看起来相当陈旧和废弃的开源项目中的代码,我就找不到一个很好的方法将midi引入javascript环境(或者Flash或Java).


有没有我错过的合适的库或应用程序可以让我做到这一点?

大多数浏览器不允许访问除键盘和鼠标以外的任何硬件-出于明显的安全原因,因此您不太可能访问midi设备,除非它作为这些设备之一插入


您可以尝试找到一个将midi输出转换为按键的驱动程序,然后在浏览器中处理这些驱动程序,但这只是一个单一的计算机解决方案。

同时搜索另一个解决方案(基于Flash,使用Red5开源Flash服务器的功能-非常难看,但我现在非常绝望)我发现有人使用Java与硬件接口,完全满足了我的需要。他们从一个flash解决方案开始,最近移植到Javascript。耶

不要让关于“概念验证”的警告令您气馁:基本功能看起来很可靠,至少在我所能提供的一切方面是如此

<>现在我在路上,其他人都想构建基于JavaScript的MIDI接口/合成器/你有什么?
我可以用javascript操作实时midi!这比飞车和喷气式飞机要好得多。

我制作了一个NPAPI浏览器插件,可以让你用Javascript与MIDI设备进行通信

目前,它可以在Chrome和Safari中的OSX上运行,也可以在Chrome中的Windows上运行

我正在致力于支持其他浏览器(Firefox、Internet Explorer)和其他操作系统(Linux、Android、iOs)


请看:

我对即将到来的比赛感到非常兴奋。据我所知,它只是在讨论中,还没有进入任何浏览器

结合已经开始在某些浏览器中实现的Web音频API,可以在浏览器中实现完整的软件合成。激动人心的时刻。

编辑:

我最近发布了这个模块,它是一个node.js模块,可以监听midi,并通过socket.io进行广播。因此,如果您有幸与客户端一起在本地运行node.js服务,您可能会从中获得一些乐趣

~~~~~

其他一些方便的链接,我订购了一些我认为对您最重要的链接:


编辑:刚刚意识到这个线程很旧,希望这些链接能帮助一些人(:

因为Web MIDI API仍然是一个草稿,所以无法在浏览器中直接访问MIDI事件


一个简单的解决方法是编写一个小型服务器,在其中注册MIDI事件,并使用websocket将它们与javascript进行通信。这在Python中可以很容易地完成。

Web MIDI API现在在Google Chrome 43+中是真实的。我甚至编写了一个库,使其更易于使用。如果您仍然感兴趣并且不介意,请尽管它目前只在Chrome中工作,但请查看:

现在的浏览器支持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;
        }

请参阅工作示例

谢谢您的回复,但这将是完全不可行的。没有速度,没有后触,没有连续控制器。幸运的是,在我发布此消息几小时后,我偶然发现了一个项目,完全解决了我的问题-请参阅下面的答案。哦,我的上帝。我爱你。请随时将你的项目链接到某个地方,当我开始进入Abumarkub时,我很想看看你是如何使用它的。我已经被其他东西转移了方向,而且还没走多远。但是我已经考虑了很多,并复习了相关的javax库。你愿意合作吗?你可以通过e l b I z r I dot等的用户233442与我联系。@Danny:我有合作的证据您可能会对一个类似Reaktor的javascript工具感兴趣:http//midibiz.firebaseapp.com(Fwiw,Windows canary chrome实现中有一个bug,但它在mac上的工作(大部分)与预期一样。)