运用electron连接MIDI键盘服务
1.使用addEventListener监听浏览器navigator是否生成getUserMedia()服务
window.addEventListener('load', function () {
navigator.getUserMedia({ video: true, audio: true }, function onSuccess(stream) {
console.log('已点击允许,开启成功');
}, function onError(error) {
console.log("错误:", error);
});
});
2.然后声明一个函数将midi服务的方法映射到window对象中
var MIDIInterface = function () {
this.promise = navigator.requestMIDIAccess();
this.promise.then(
function (acc) {
window.midi.access = acc;
window.midi.internalFunctionAccessGranted();
console.log('MIDI服务 Is Ready.');
}
);
//键值绑定
this.internalFunctionAccessGranted = function () {
var it = this.access.inputs.entries();
var cango = true;
while (cango) {
var input = it.next();
if (input.value) {
var isstr = true;
var i = 0;
while (isstr) {
if (typeof input.value[i] !== 'string') {
isstr = false;
this.input = input.value[i];
this.internalFunctionInputReady();//键值绑定回调
}
i++;
}
} else {
cango = false;
}
}
};
//通过键值绑定相关方法
this.internalFunctionInputReady = function () {
this.input.onmidimessage = function (msg) {
//通过msg绑定相关方法...
};
};
//判断当前键值是开始还是结束
var notevent;
var notevents = [];
this.noteEvent = function (evt, noteid) {
if (noteid) {
notevents[noteid] = evt;
} else {
notevent = evt;
}
};
};
完成~