Выходные данные WebMidi.js пусты - PullRequest
0 голосов
/ 30 июня 2018

Я пытаюсь использовать 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 включен, но выходной массив пуст. Как я могу получить пакет для определения моих результатов? Я использую Chrome на Mac - мое программное обеспечение обновлено.

1 Ответ

0 голосов
/ 30 августа 2018

Чтобы использовать 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 или другую звуковую библиотеку.

...