neige d'aout

knowledge, art, and other stuff

User Tools

Site Tools


code61

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
code61 [2026/03/14 21:11] Yukicode61 [2026/03/24 00:20] (current) Yuki
Line 1: Line 1:
-MIDI port: <html><select id="di"></select> <span id="connected" style="background: red; width: 1em;">&nbsp;</span></html>+MIDI port: <html><select id="di"></select> <span id="connected" style="display: inline-block; background: red; width: 0.75em; border-radius: 1em;">&nbsp;</span></html> 
 + 
 +<html><button id="connect" onclick="toggleMIDI()">Connect</button></html>
  
 <WRAP tabs> <WRAP tabs>
Line 6: Line 8:
  
 <WRAP settings> <WRAP settings>
-|Global channel|<html><select id="option0">+|Global Channel|<html><select id="option0" value="" disabled>
 <option value="1">Channel 1</option> <option value="1">Channel 1</option>
 <option value="2">Channel 2</option> <option value="2">Channel 2</option>
Line 24: Line 26:
 <option value="16">Channel 16</option> <option value="16">Channel 16</option>
 </select></html>| </select></html>|
-|XY pad curve|<html><select id="option12"> +|XY Pad Curve|<html><select id="option12" value="" disabled
-<option value="0">F1</option> +<option value="0">F1 (fixed 64)</option> 
-<option value="1">F2</option> +<option value="1">F2 (fixed 100)</option> 
-<option value="2">F3</option>+<option value="2">F3 (fixed 127)</option>
 <option value="3">S2</option> <option value="3">S2</option>
 <option value="4">S3</option> <option value="4">S3</option>
Line 36: Line 38:
 <option value="9">S8</option> <option value="9">S8</option>
 </select></html>| </select></html>|
-|Mackie Control / HUI|<html><select id="option5">+|Mackie Control / HUI|<html><select id="option4value="" disabled>
 <option value="0">Mackie Control</option> <option value="0">Mackie Control</option>
 <option value="1">HUI</option> <option value="1">HUI</option>
 </select></html>| </select></html>|
-|Key Octave|<html><input id="option6" type="number" min="-3" max="3" step="1" /></html>+|Key Octave|<html><input id="option5" type="number" min="-3" max="3" step="1" value="" disabled /></html>
-|Key Transpose|<html><input id="option7" type="number" min="-12" max="12" step="1" /></html>+|Key Transpose|<html><input id="option6" type="number" min="-12" max="12" step="1" value="" disabled /></html>
-|Key Curve|<html><select id="option8"> +|Key Curve|<html><select id="option7" value="disabled
-<option value="6">C1</option> +<option value="0">C1 (low)</option> 
-<option value="3">C2</option> +<option value="1">C2 (medium)</option> 
-<option value="4">C3</option> +<option value="2">C3 (high)</option> 
-<option value="5">C4</option> +<option value="3">C4 (linear)</option> 
-<option value="0">F1</option> +<option value="4">F1 (fixed 64)</option> 
-<option value="1">F2</option> +<option value="5">F2 (fixed 100)</option> 
-<option value="2">F3</option>+<option value="6">F3 (fixed 127)</option>
 </select></html>| </select></html>|
-|Pad Octave|<html><input id="option9" type="number" min="-5" max="5" step="1" /></html>+|Pad Octave|<html><input id="option8" type="number" min="-5" max="5" step="1" value="" disabled /></html>
-|Pad Transpose|<html><input id="option10" type="number" min="-12" max="12" step="1" /></html>+|Pad Transpose|<html><input id="option9" type="number" min="-12" max="12" step="1" value="" disabled /></html>
-|Pad Curve|<html><select id="option11"> +|Pad Curve|<html><select id="option10" value="disabled
-<option value="1">C1</option> +<option value="0">C1 (low)</option> 
-<option value="2">C2</option> +<option value="1">C2 (medium)</option> 
-<option value="3">C3</option> +<option value="2">C3 (high)</option> 
-<option value="4">C4</option> +<option value="3">C4 (linear)</option> 
-<option value="5">F1</option> +<option value="4">F1 (fixed 64)</option> 
-<option value="6">F2</option> +<option value="5">F2 (fixed 100)</option> 
-<option value="7">F3</option> +<option value="6">F3 (fixed 127)</option> 
-<option value="8">S2</option> +<option value="7">S2 (64/127)</option> 
-<option value="9">S3</option> +<option value="8">S3 (64/100/127)</option> 
-<option value="10">S4</option>+<option value="9">S4 (32/64/100/127)</option>
 </select></html>| </select></html>|
-|Encoder Curve|<html><select id="option4">+|Encoder Curve|<html><select id="option11value="" disabled>
 <option value="0">Off</option> <option value="0">Off</option>
-<option value="6">C1</option> +<option value="1">C1 (slow)</option> 
-<option value="3">C2</option> +<option value="2">C2 (medium)</option> 
-<option value="4">C3</option>+<option value="3">C3 (quick)</option>
 </select></html>| </select></html>|
-|Program|<html><input id="option13" type="number" min="0" max="127" step="1" /></html>+|Program|<html><input id="option13" type="number" min="0" max="127" step="1" value="" disabled /></html>
-|MSB|<html><input id="option14" type="number" min="0" max="127" step="1" /></html>+|MSB|<html><input id="option14" type="number" min="0" max="127" step="1" value="" disabled /></html>
-|LSB|<html><input id="option15" type="number" min="0" max="127" step="1" /></html>+|LSB|<html><input id="option15" type="number" min="0" max="127" step="1" value="" disabled /></html>
-|MIDI DIN Out|<html><select id="option16">+|MIDI DIN Out|<html><select id="option16" value="" disabled>
 <option value="0">Off</option> <option value="0">Off</option>
 <option value="1">On</option> <option value="1">On</option>
 </select></html>| </select></html>|
 <html> <html>
-<button onclick="getSettings()">Get Settings</button> +<button id="gs" onclick="getSettings()" disabled>Get Settings</button> 
-<button onclick="setSettings()">Send Settings</button>+<button id="ss" onclick="setSettings()" disabled>Send Settings</button>
 </html> </html>
 </WRAP> </WRAP>
Line 86: Line 88:
 <html> <html>
 <script src="https://cdn.jsdelivr.net/npm/webmidi@latest/dist/iife/webmidi.iife.js"></script> <script src="https://cdn.jsdelivr.net/npm/webmidi@latest/dist/iife/webmidi.iife.js"></script>
-<script+<script src="/_export/raw/code61.js"></script>
-  Array.prototype.compare function(a){ +
-    return this.length === a.length && this.every((v, i) => v === a[i]) +
-  } +
-   +
-  WebMidi +
-    .enable({sysex: true}) +
-    .then(onEnabled) +
-    .catch(err => console.log(err)); +
-  var index = 0; +
-  var keybDetected = false; +
-  function getInput(){ +
-    return WebMidi.inputs[index]; +
-  } +
-  function getOutput(){ +
-    var name = getInput().name; +
-    return WebMidi.getOutputByName(name.replace("IN","OUT")); +
-  } +
-  function onEnabled() { +
-    WebMidi.inputs.forEach((device, idx) => { +
-      document.querySelector("#di").innerHTML += `<option value="${idx}">${device.name}</option>`; +
-    }); +
-    if(WebMidi.inputs.length > 0) +
-    { +
-      getInput().addListener("sysex", onSysex) +
-      sendDeviceQuery(); +
-    } +
-    document.querySelector("#di").addEventListener("change", e=>{ +
-      getInput().removeListener("sysex"); +
-      keybDetected = false; +
-      document.querySelector("#connected").style.background = "red"; +
-      index = document.querySelector("#di").value; +
-      getInput().addListener("sysex", onSysex) +
-      sendDeviceQuery(); +
-    }); +
-  } +
-  function onSysex(e) { +
-    if(e.message.manufacturerId.compare([126]) && e.dataBytes.slice(0,8).compare([127,6,2,0,1,5,49,6])){ +
-      keybDetected = true; +
-      document.querySelector("#connected").style.background = "green"; +
-      sendUnlock(); +
-    } +
-    if(e.message.manufacturerId.compare([0,1,5]) && e.dataBytes.slice(0,4).compare([127,49,6,108])){ +
-      var address = e.dataBytes[6]*128+e.dataBytes[7]; +
-      var value = e.dataBytes[8]*128+e.dataBytes[9]; +
-      document.querySelector("#option"+address).value = value; +
-      console.log([address, value]) +
-    } +
-  } +
-  function sendDeviceQuery() { +
-    getOutput().sendSysex(0x7e, [127,6,1]); +
-  } +
-  function sendUnlock() { +
-    getOutput().sendSysex([0,1,5], [0x7f, 0x31, 0x06, 0x6d, 0, 1, 1]); +
-  } +
-  function getSetting(id) { +
-    var msb = id / 128 % 128; +
-    var lsb = id % 128; +
-    getOutput().sendSysex([0,1,5], [0x7f, 0x31, 0x06, 0x6b, 0, 2, msb, lsb]); +
-  } +
-  function getSettings() { +
-    [0,4,5,6,7,8,9,10,11,12,13,14,15,16].forEach(x=>getSetting(x)); +
-  } +
-</script>+
 </html> </html>
code61.1773537063.txt.gz · Last modified: by Yuki