Ошибка типа при вызове "send" на прокси MidiOutput

Видимо, есть проблема с методом navigator.requestMIDIAccess() в dart. https://code.google.com/p/dart/issues/detail?id=21805

Поэтому я попытался обойти, используя прокси-серверы JavaScript. Список портов MIDI на консоли не является проблемой. Однако, когда я пытаюсь отправить Midi Note, возникает ошибка: "Ошибка типа"

Я не могу узнать, как передать параметр note-on? output.callMethod('send', [[144 , 60, 127]]);вывод [0] дает мне "Microsoft GS Wavetable Synth"

import 'dart:html';
import 'dart:js';

void main() {
  final JsObject w = new JsObject.fromBrowserObject(window);
  final JsObject n = w['navigator'];

  if (n.hasProperty('requestMIDIAccess')) {
    n.callMethod('requestMIDIAccess').callMethod('then', [(JsObject midiAccess) {
        JsObject inputs = new JsObject.jsify(midiAccess.callMethod('outputs'));
        for (JsObject input in inputs) {
         print(input['name']);
        }
        ;
        sendMiddleC(midiAccess, 1);
      }]);
  }

}

void sendMiddleC(midiAccess, portID) {
  JsObject outputs = midiAccess.callMethod('outputs');
  JsObject output = outputs[0];
  output.callMethod('send', [[144 , 60, 127]]);
}

1 ответ

Решение

Массив данных передается в send метод должен быть преобразован из массива Dart в массив Javascript, используя dart:js следующее:

output.callMethod('send', [new JsArray.from([144 , 60, 127])]);

Другие вопросы по тегам