refresh_port_list.html (1574B)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>Refresh MIDI port list test</title> 5 <meta http-equiv="Content-Type" content="text/html;charset=utf-8"></meta> 6 </head> 7 <body> 8 <script> 9 var access = null; 10 async function get_access() { 11 access = await navigator.requestMIDIAccess({ sysex: true }); 12 } 13 14 async function reset_access() { 15 access = null; 16 } 17 18 async function get_num_ports() { 19 return access.inputs.size + access.outputs.size; 20 } 21 22 async function add_port() { 23 let addPortPromise = new Promise(resolve => { 24 access.addEventListener("statechange", (event) => { dump("***** 1 event.port.name = " + event.port.name + "event.connection = " + event.port.connection + "\n"); if (event.port.connection != "open") { resolve(); } }); 25 }); 26 const outputs = access.outputs.values(); 27 const output = outputs.next().value; 28 output.send([0x90, 0x01, 0x00]); 29 await addPortPromise; 30 } 31 32 async function remove_port() { 33 let removePortPromise = new Promise(resolve => { 34 access.addEventListener("statechange", (event) => { dump("***** 2 event.port.name = " + event.port.name + "event.connection = " + event.port.connection + "\n"); if (event.port.connection != "open") { resolve(); } }); 35 }); 36 const outputs = access.outputs.values(); 37 const output = outputs.next().value; 38 output.send([0x90, 0x02, 0x00]); 39 await removePortPromise; 40 } 41 42 async function force_refresh() { 43 const outputs = access.outputs.values(); 44 const output = outputs.next().value; 45 output.send([0x90, 0x04, 0x00]); 46 } 47 </script> 48 </body> 49 </html>