javascript - WebMidi.js 输出为空

标签 javascript web-midi

我正在尝试使用WebMidi.js在浏览器中播放音符。我正在使用下面的代码,该代码主要取自快速入门指南。

<body>
  <script src="node_modules/webmidi/webmidi.min.js"></script>
  <script defer>
    WebMidi.enable(function(err) {
      if (err) {
        console.log("WebMidi could not be enabled.", err);
      } else {
        console.log("WebMidi enabled!");
        console.log("outputs:", WebMidi.outputs);
      }
    });
  </script>
</body>

当我加载页面时,它说 WebMidi 已启用,但输出数组为空。我怎样才能让包检测我的输出?我在 Mac 上使用 Chrome - 我的软件是最新的。

最佳答案

要使用 MIDI 输出来播放声音,您需要有一个运行虚拟 MIDI 端口的硬件或软件 MIDI 合成器。您可能想改用 AudioContext:

// patch up prefixes
window.AudioContext=window.AudioContext||window.webkitAudioContext;

context = new AudioContext();
if (navigator.requestMIDIAccess)
  navigator.requestMIDIAccess().then( onMIDIInit, onMIDIReject );
else
  alert("No MIDI support present in your browser.  You're gonna have a bad time.")

// set up the basic oscillator chain, muted to begin with.
oscillator = context.createOscillator();
oscillator.frequency.setValueAtTime(110, 0);
envelope = context.createGain();
oscillator.connect(envelope);
envelope.connect(context.destination);
envelope.gain.value = 0.0;  // Mute the sound
oscillator.start(0);  // Go ahead and start up the oscillator

要生成更复杂的声音,请查看 SoundJS 或其他声音库。

关于javascript - WebMidi.js 输出为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51110657/

相关文章:

javascript - 递归未完全遍历具有嵌套对象的对象

javascript - Ajax文件上传,想传递一个int,但我不知道如何

javascript - 实时 MIDI 输入到 JSON?

javascript - 带有Javascript的MIDI键盘

javascript - 如何将最内矩形移到最外矩形内

javascript - 如何在javascript中将文本从一个div复制到另一个

javascript - 谷歌翻译付费API key 问题

windows - 网络 MIDI 编程

javascript - 多个振荡器尖叫,增益对 WebAudio 没有影响

javascript - 延长 MIDI.js 钢琴音符持续时间