Javascript 检测MIDI连接事件

Javascript 检测MIDI连接事件,javascript,node.js,midi,Javascript,Node.js,Midi,我希望能够支持本地和远程MIDI流媒体模式的网络客户端。 前者很容易做到: navigator.requestMIDIAccess().then(函数(访问){ const inputs=access.inputs.values() for(输入的常量输入){ if(input.name==“罗兰数字钢琴MIDI 1”){ input.onmidMessage=消息=>{ //处理事件。。。 } } } access.onstatechange=函数(e){ //处理断开/重新连接。。。 } }

我希望能够支持本地和远程MIDI流媒体模式的网络客户端。 前者很容易做到:

navigator.requestMIDIAccess().then(函数(访问){
const inputs=access.inputs.values()
for(输入的常量输入){
if(input.name==“罗兰数字钢琴MIDI 1”){
input.onmidMessage=消息=>{
//处理事件。。。
}
}
}
access.onstatechange=函数(e){
//处理断开/重新连接。。。
}
})
我找不到一个好的跨平台库可以做到这一点(尝试了基于rtmidi的库,但它没有提供任何关于断开连接状态的信息)

在js、python或任何其他语言中,有没有办法做到这一点



如果要将其转发到浏览器,则需要某种服务器。您的问题是如何从Node.js访问MIDI?或者仅仅是如何将两个基于web的客户端连接在一起?@Brad我已经有了一个Node.js(和一个python)工作版本,可以通过WebSocket将其流式传输到前端。我只是无法检测到断开/重新连接,所以每次我关掉钢琴,再打开它,它就会停止工作,无法恢复。我想知道Node.js/pythonthi是否也有相同的WebMIDI功能(特别是onstatechange),这取决于您在其中使用的API,也可能取决于平台。值得一提的是,我发现即使在浏览器中,
statechange
也不是那么可靠。(至少,不在Chrome中。)它在85%的时间内都能工作,而在其他时间,有些东西卡住了。我还不能确定问题是出在Chrome、Windows、USB MIDI驱动程序还是其他方面。重点是。。。无论如何,你可能不得不求助于轮询。如果你想把它转发给浏览器,你需要某种服务器。您的问题是如何从Node.js访问MIDI?或者仅仅是如何将两个基于web的客户端连接在一起?@Brad我已经有了一个Node.js(和一个python)工作版本,可以通过WebSocket将其流式传输到前端。我只是无法检测到断开/重新连接,所以每次我关掉钢琴,再打开它,它就会停止工作,无法恢复。我想知道Node.js/pythonthi是否也有相同的WebMIDI功能(特别是onstatechange),这取决于您在其中使用的API,也可能取决于平台。值得一提的是,我发现即使在浏览器中,
statechange
也不是那么可靠。(至少,不在Chrome中。)它在85%的时间内都能工作,而在其他时间,有些东西卡住了。我还不能确定问题是出在Chrome、Windows、USB MIDI驱动程序还是其他方面。重点是。。。无论如何,你可能不得不求助于投票。