javascript - Web Midi - 列出设备名称

标签 javascript google-chrome web-audio-api web-midi

我创建了一个简单的脚本来列出连接的 MIDI 输入设备。这在 Windows 上的 Chrome 中运行良好,但在 Mac 上的 Chrome 上运行失败,并显示“无法读取未定义的属性名称”。如果我复制并粘贴 w3c.org 示例中的代码,也会发生这种情况:http://www.w3.org/TR/webmidi/#listing-inputs-and-outputs

这是我的代码:

var midiTest = {
  midiAcess: null,
  init: function() {
    function onMIDISuccess(midiAccess) {
      console.log(midiAccess);
      var inputDeviceCount = midiAccess.inputs.size;
      if(inputDeviceCount > 0) {
        for(var i=0; i<inputDeviceCount; i++) {
          var input = midiAccess.inputs.get(i);
          var deviceName = input.name;
          console.log(deviceName);
        }
      }
    }
    function onMIDIFailure(e) {
      console.log('No access to MIDI devices' + e);
    }
    if(navigator.requestMIDIAccess)
      navigator.requestMIDIAccess({ sysex: false }).then(onMIDISuccess, onMIDIFailure);
    else
      alert("No MIDI support in your browser.");
  },
};

midiTest.init();

console.log(midiAccess) 工作正常。知道这里发生了什么吗?

最佳答案

现在通过换掉这个循环让它工作:

var inputs=midiAccess.inputs.values();

for ( var input = inputs.next(); input && !input.done; input = inputs.next()) {
    var deviceName = input.value.name;
    console.log(deviceName);
}

这适用于 mac 和 windows,不知道为什么以前的代码不起作用。

关于javascript - Web Midi - 列出设备名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34087338/

相关文章:

javascript - Web Audio API Analyzer节点无法按预期工作

google-chrome - 在 Electron Application 中无需用户交互即可在网页上播放声音

javascript - 随机问题显示下载链接

javascript - 使用 javascript/css3/canvas 动画图像/3D/sprite

javascript - 为什么 console.log 在某些情况下会记录带引号的字符串?

html - 自动兄弟 div 中的 CSS 高度 100% 在 Chrome 中不起作用

web-audio-api - webaudio,audiocontext跳转到位置

javascript - 检查数组是否具有另一个数组的键值对

javascript - 使用输入日期选择器的值

image - 图片数据 : URI invalid