2015-01-01 33 views
1

顯然dart中的方法navigator.requestMIDIAc​​cess()存在問題。 https://code.google.com/p/dart/issues/detail?id=21805在MidiOutput代理上調用「send」時出現類型錯誤

所以我嘗試了使用JavaScript代理的解決方法。 列出控制檯上的midi端口沒有問題。 但是,當我嘗試發送一個midi音符時,會出現錯誤:'Type Error'

我無法找到如何傳遞'note-on'參數嗎? output.callMethod('send', [[144 , 60, 127]]); 輸出[0]給出我「微軟GS波形表合成器」

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

什麼是完整的錯誤信息,以及它發生在哪一行? – Barmar

+0

非常感謝,rms! – user2227199

回答

0

需要傳遞給send方法的數據陣列從落鏢陣列到Javascript數組轉換,使用dart:js如下:

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

相關問題