【问题标题】:type error when calling "send" on MidiOutput proxy在 MidiOutput 代理上调用“发送”时出现类型错误
【发布时间】:2015-01-01 23:43:47
【问题描述】:

显然 dart 中的方法 navigator.requestMIDIAc​​cess() 存在问题。 https://code.google.com/p/dart/issues/detail?id=21805

所以我尝试了使用 javascript 代理的解决方法。 在控制台上列出 MIDI 端口是没有问题的。 但是,当我尝试发送 midi 注释时,会出现错误:'Type Error'

我不知道如何传递“note-on”参数? output.callMethod('send', [[144 , 60, 127]]); output[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]]);
}

【问题讨论】:

  • 完整的错误信息是什么,发生在哪一行?

标签: javascript dart dart-html web-midi


【解决方案1】:

传递给send方法的数据数组需要从Dart数组转换为Javascript数组,使用dart:js如下:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    • 2021-05-19
    • 1970-01-01
    • 2019-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多