diff options
Diffstat (limited to 'client')
| -rw-r--r-- | client/index.js | 129 | ||||
| -rw-r--r-- | client/jx8p.js | 634 | ||||
| -rw-r--r-- | client/subphatty.js | 920 |
3 files changed, 1683 insertions, 0 deletions
diff --git a/client/index.js b/client/index.js new file mode 100644 index 0000000..2f47cc1 --- /dev/null +++ b/client/index.js @@ -0,0 +1,129 @@ +import WebMidi from 'webmidi' +import { params } from './jx8p' + +let output; +let channel = 1 + +function init(){ + build() + bind() + WebMidi.enable(ready) +} +function ready(err) { + if (err) { + console.error('webmidi failed to initialize') + return + } + if (!WebMidi.outputs.length) { + console.error('no MIDI output found') + } + console.log(WebMidi.inputs) + console.log(WebMidi.outputs) + output = WebMidi.outputs[0] +} +function build(){ + const section_template = document.querySelector('#section_template').innerHTML + const checkbox_template = document.querySelector('#checkbox_template').innerHTML + const range_template = document.querySelector('#range_template').innerHTML + const enum_template = document.querySelector('#enum_template').innerHTML + const params_by_tag = params.reduce((a,b,i) => { + const tag = b.tag || b.name.split(' ')[0] + b.index = i + if (a[tag]) { + a[tag].push(b) + } else { + a[tag] = [b] + } + return a + }, {}) + Object.keys(params_by_tag).map(tag => { + const els = params_by_tag[tag].map(param => { + let t, options; + switch (param.type) { + case 'checkbox': + t = checkbox_template.replace(/{name}/, param.name) + .replace(/{param_name}/, param.name.replace(/ /g, '_')) + .replace(/{index}/, param.index) + break + case 'range': + t = range_template.replace(/{name}/, param.name) + .replace(/{param_name}/, param.name.replace(/ /g, '_')) + .replace(/{index}/, param.index) + .replace(/{min}/, param.range[0]) + .replace(/{max}/, param.range[1]) + .replace(/{value}/, Math.floor((param.range[1] - param.range[0]) / 2)) + break + case 'enum': + options = param.values.map(a => '<option value="' + a[0] + '">' + a[1] + '</option>') + t = enum_template.replace(/{name}/, param.name) + .replace(/{param_name}/, param.name.replace(/ /g, '_')) + .replace(/{index}/, param.index) + .replace(/{options}/, options) + .replace(/{value}/, param.values[0][0]) + break + default: + console.log('unknown type', param) + t = "" + break + } + return t + }).filter(t => !!t) + let t = section_template.replace(/{name}/, tag).replace(/{els}/, els.join('')) + document.querySelector('#params').innerHTML += t + }) +} +function bind(){ + toArray(document.querySelectorAll('#params input[type=range]')).forEach(el => { + const index = el.dataset.index + const param = params[index] + el.addEventListener('input', () => { + update_param(param, el.value) + }) + }) + toArray(document.querySelectorAll('#params input[type=checkbox]')).forEach(el => { + const index = el.dataset.index + const param = params[index] + el.addEventListener('input', () => { + const isChecked = el.checked + const value = isChecked ? param.on : param.off + update_param(param, value) + }) + }) + toArray(document.querySelectorAll('#params select')).forEach(el => { + const index = el.dataset.index + const param = params[index] + el.addEventListener('input', () => { + update_param(param, el.value) + }) + }) + document.querySelector('#randomize').addEventListener('click', randomize) +} +function update_param(param, value){ + if (param.fourteen) { + const msb = value >> 7 + const lsb = value & 127 + output.sendControlChange(param.fourteen[0], msb, channel) + output.sendControlChange(param.fourteen[1], lsb, channel) + } else { + output.sendControlChange(param.cc, value, channel) + } +} +function randint(n) { + return Math.floor(Math.random() * n) +} +function randomize(){ + params.forEach(param => { + let value + if (param.randomize === false) return + if (param.type === 'range') { + value = randint(param.range[1]) + update_param(param, value) + document.querySelector("input[name=" + param.name.replace(/ /g, '_') + "]").value = value + } + }) +} +function toArray(a){ + return Reflect.apply(Array.prototype.slice, a, []) +} + +init() diff --git a/client/jx8p.js b/client/jx8p.js new file mode 100644 index 0000000..a91b36d --- /dev/null +++ b/client/jx8p.js @@ -0,0 +1,634 @@ +export const params = [ + { + "name": "DCO-1 RANGE", + "cc": 11, + "type": "enum", + "values": [ + [ + 0, + "16'" + ], + [ + 32, + "8'" + ], + [ + 64, + "4'" + ], + [ + 96, + "2'" + ] + ] + }, + { + "name": "DCO-1 WAVEFORM", + "cc": 12, + "type": "enum", + "values": [ + [ + 0, + "Noise" + ], + [ + 32, + "Sawtooth" + ], + [ + 64, + "Pulse" + ], + [ + 96, + "Square" + ] + ] + }, + { + "name": "DCO-1 TUNE", + "cc": 13, + "type": "range", + "range": [ + 0, + 127 + ] + }, + { + "name": "DCO-1 LFO MOD DEPTH", + "cc": 14, + "type": "range", + "range": [ + 0, + 127 + ] + }, + { + "name": "DCO-1 ENV MOD DEPTH", + "cc": 15, + "type": "range", + "range": [ + 0, + 127 + ] + }, + { + "name": "DCO-2 RANGE", + "cc": 16, + "type": "enum", + "values": [ + [ + 0, + "16'" + ], + [ + 32, + "8'" + ], + [ + 64, + "4'" + ], + [ + 96, + "2'" + ] + ] + }, + { + "name": "DCO-2 WAVEFORM", + "cc": 17, + "type": "enum", + "values": [ + [ + 0, + "Noise" + ], + [ + 32, + "Sawtooth" + ], + [ + 64, + "Pulse" + ], + [ + 96, + "Square" + ] + ] + }, + { + "name": "DCO-2 CROSSMOD", + "cc": 18, + "type": "enum", + "values": [ + [ + 0, + "OFF" + ], + [ + 32, + "SYNC 1" + ], + [ + 64, + "SYNC 2" + ], + [ + 96, + "XMOD" + ] + ] + }, + { + "name": "DCO-2 TUNE", + "cc": 19, + "type": "range", + "range": [ + 0, + 127 + ] + }, + { + "name": "DCO-2 FINE TUNE", + "cc": 20, + "type": "range", + "range": [ + 0, + 127 + ] + }, + { + "name": "DCO-2 LFO MOD DEPTH", + "cc": 21, + "type": "range", + "range": [ + 0, + 127 + ] + }, + { + "name": "DCO-1 ENV MOD DEPTH", + "cc": 22, + "type": "range", + "range": [ + 0, + 127 + ] + }, + { + "name": "DCO DYNAMICS", + "cc": 26, + "type": "enum", + "values": [ + [ + 0, + "OFF" + ], + [ + 32, + "1" + ], + [ + 64, + "2" + ], + [ + 96, + "3" + ] + ] + }, + { + "name": "DCO ENV MODE", + "cc": 27, + "type": "enum", + "values": [ + [ + 0, + "ENV-2 Inverted" + ], + [ + 32, + "ENV-2 Normal" + ], + [ + 64, + "ENV-1 Inverted" + ], + [ + 96, + "ENV-1 Normal" + ] + ] + }, + { + "name": "MIXER DCO-1", + "cc": 28, + "type": "range", + "range": [ + 0, + 127 + ] + }, + { + "name": "MIXER DCO-2", + "cc": 29, + "type": "range", + "range": [ + 0, + 127 + ] + }, + { + "name": "MIXER ENV MOD DEPTH", + "cc": 30, + "type": "range", + "range": [ + 0, + 127 + ] + }, + { + "name": "MIXER DYNAMICS", + "cc": 31, + "type": "enum", + "values": [ + [ + 0, + "Off" + ], + [ + 32, + "1" + ], + [ + 64, + "2" + ], + [ + 96, + "3" + ] + ] + }, + { + "name": "MIXER ENV MODE", + "cc": 32, + "type": "enum", + "values": [ + [ + 0, + "ENV-2 Inverted" + ], + [ + 32, + "ENV-2 Normal" + ], + [ + 64, + "ENV-1 Inverted" + ], + [ + 96, + "ENV-1 Normal" + ] + ] + }, + { + "name": "HPF CUTOFF FREQ", + "cc": 33, + "type": "enum", + "values": [ + [ + 0, + "0" + ], + [ + 32, + "1" + ], + [ + 64, + "2" + ], + [ + 96, + "3" + ] + ] + }, + { + "name": "VCF CUTOFF FREQ", + "cc": 34, + "type": "range", + "range": [ + 0, + 127 + ] + }, + { + "name": "VCF RESONANCE", + "cc": 35, + "type": "range", + "range": [ + 0, + 127 + ] + }, + { + "name": "VCF LFO MOD DEPTH", + "cc": 36, + "type": "range", + "range": [ + 0, + 127 + ] + }, + { + "name": "VCF ENV MOD DEPTH", + "cc": 37, + "type": "range", + "range": [ + 0, + 127 + ] + }, + { + "name": "VCF KEY FOLLOW", + "cc": 38, + "type": "range", + "range": [ + 0, + 127 + ] + }, + { + "name": "VCF DYNAMICS", + "cc": 39, + "type": "enum", + "values": [ + [ + 0, + "Off" + ], + [ + 32, + "1" + ], + [ + 64, + "2" + ], + [ + 96, + "3" + ] + ] + }, + { + "name": "VCF ENV MODE", + "cc": 40, + "type": "enum", + "values": [ + [ + 0, + "ENV-2 Inverted" + ], + [ + 32, + "ENV-2 Normal" + ], + [ + 64, + "ENV-1 Inverted" + ], + [ + 96, + "ENV-1 Normal" + ] + ] + }, + { + "name": "VCA LEVEL", + "cc": 41, + "type": "range", + "range": [ + 0, + 127 + ] + }, + { + "name": "VCA DYNAMICS", + "cc": 42, + "type": "enum", + "values": [ + [ + 0, + "OFF" + ], + [ + 32, + "1" + ], + [ + 64, + "2" + ], + [ + 96, + "3 " + ] + ] + }, + { + "name": "CHORUS", + "cc": 43, + "type": "enum", + "values": [ + [ + 0, + "Off" + ], + [ + 32, + "1" + ], + [ + 64, + "2" + ] + ] + }, + { + "name": "LFO WAVEFORM", + "cc": 44, + "type": "enum", + "values": [ + [ + 0, + "Random" + ], + [ + 32, + "Square Wave" + ], + [ + 64, + "Triangle Wave" + ] + ] + }, + { + "name": "LFO DELAY TIME", + "cc": 45, + "type": "range", + "range": [ + 0, + 127 + ] + }, + { + "name": "LFO RATE", + "cc": 46, + "type": "range", + "range": [ + 0, + 127 + ] + }, + { + "name": "ENV-1 ATTACK TIME", + "cc": 47, + "type": "range", + "range": [ + 0, + 127 + ] + }, + { + "name": "ENV-1 DECAY TIME", + "cc": 48, + "type": "range", + "range": [ + 0, + 127 + ] + }, + { + "name": "ENV-1 SUSTAIN LEVEL", + "cc": 49, + "type": "range", + "range": [ + 0, + 127 + ] + }, + { + "name": "ENV-1 RELEASE TIME", + "cc": 50, + "type": "range", + "range": [ + 0, + 127 + ] + }, + { + "name": "ENV-1 KEY FOLLOW", + "cc": 51, + "type": "enum", + "values": [ + [ + 0, + "Off" + ], + [ + 32, + "1" + ], + [ + 64, + "2" + ], + [ + 96, + "3" + ] + ] + }, + { + "name": "ENV-2 ATTACK TIME", + "cc": 52, + "type": "range", + "range": [ + 0, + 127 + ] + }, + { + "name": "ENV-2 DECAY TIME", + "cc": 53, + "type": "range", + "range": [ + 0, + 127 + ] + }, + { + "name": "ENV-2 SUSTAIN LEVEL", + "cc": 54, + "type": "range", + "range": [ + 0, + 127 + ] + }, + { + "name": "ENV-2 RELEASE TIME", + "cc": 55, + "type": "range", + "range": [ + 0, + 127 + ] + }, + { + "name": "ENV-2 KEY FOLLOW", + "cc": 56, + "type": "enum", + "values": [ + [ + 0, + "Off" + ], + [ + 32, + "1" + ], + [ + 64, + "2" + ], + [ + 96, + "3" + ] + ] + }, + { + "name": "VCA ENV MODE", + "cc": 58, + "type": "enum", + "values": [ + [ + 0, + "Gate" + ], + [ + 64, + "ENV-2 Normal" + ] + ] + } +]
\ No newline at end of file diff --git a/client/subphatty.js b/client/subphatty.js new file mode 100644 index 0000000..b5cd3d2 --- /dev/null +++ b/client/subphatty.js @@ -0,0 +1,920 @@ +export const params = [ + { + "name": "AMPLIFIER EG ATTACK", + "cc": 28, + "type": "range", + "range": [ + 0, + 16383 + ], + "fourteen": [ + 28, + 60 + ] + }, + { + "name": "AMPLIFIER EG DECAY", + "cc": 29, + "type": "range", + "range": [ + 0, + 16383 + ], + "fourteen": [ + 29, + 61 + ] + }, + { + "name": "AMPLIFIER EG SUSTAIN", + "cc": 30, + "type": "range", + "range": [ + 0, + 16383 + ], + "fourteen": [ + 30, + 62 + ] + }, + { + "name": "AMPLIFIER EG RELEASE", + "cc": 31, + "type": "range", + "range": [ + 0, + 16383 + ], + "fourteen": [ + 31, + 63 + ] + }, + { + "name": "FILTER EG ATTACK", + "cc": 23, + "type": "range", + "range": [ + 0, + 16383 + ], + "fourteen": [ + 23, + 55 + ] + }, + { + "name": "FILTER EG DECAY", + "cc": 24, + "type": "range", + "range": [ + 0, + 16383 + ], + "fourteen": [ + 24, + 56 + ] + }, + { + "name": "FILTER EG SUSTAIN", + "cc": 25, + "type": "range", + "range": [ + 0, + 16383 + ], + "fourteen": [ + 25, + 57 + ] + }, + { + "name": "FILTER EG RELEASE", + "cc": 26, + "type": "range", + "range": [ + 0, + 16383 + ], + "fourteen": [ + 26, + 58 + ] + }, + { + "name": "VCO 1 LEVEL", + "cc": 15, + "type": "range", + "range": [ + 0, + 16383 + ], + "fourteen": [ + 15, + 47 + ] + }, + { + "name": "VCO 2 LEVEL", + "cc": 16, + "type": "range", + "range": [ + 0, + 16383 + ], + "fourteen": [ + 16, + 48 + ] + }, + { + "name": "NOISE LEVEL", + "cc": 8, + "type": "range", + "range": [ + 0, + 16383 + ], + "fourteen": [ + 8, + 40 + ] + }, + { + "name": "VCO 1 SUB LEVEL", + "cc": 17, + "type": "range", + "range": [ + 0, + 16383 + ], + "fourteen": [ + 17, + 49 + ] + }, + { + "name": "VCO 1 WAVE", + "cc": 9, + "type": "range", + "range": [ + 0, + 16383 + ], + "fourteen": [ + 9, + 41 + ] + }, + { + "name": "VCO 2 WAVE", + "cc": 14, + "type": "range", + "range": [ + 0, + 16383 + ], + "fourteen": [ + 14, + 46 + ] + }, + { + "name": "VCO 2 FREQUENCY", + "cc": 12, + "type": "range", + "range": [ + 0, + 16383 + ], + "fourteen": [ + 12, + 44 + ] + }, + { + "name": "VCO 2 BEAT FREQUENCY", + "cc": 13, + "type": "range", + "range": [ + 0, + 16383 + ], + "fourteen": [ + 13, + 45 + ] + }, + { + "name": "VCO 2 HARD SYNC", + "cc": 77, + "type": "checkbox", + "off": 0, + "on": 64, + "fourteen": false + }, + { + "name": "VCO GATE RESET", + "cc": 81, + "type": "checkbox", + "off": 0, + "on": 64, + "fourteen": false + }, + { + "name": "FILTER CUTOFF FREQUENCY", + "cc": 19, + "type": "range", + "range": [ + 0, + 16383 + ], + "fourteen": [ + 19, + 51 + ] + }, + { + "name": "FILTER RESONANCE", + "cc": 21, + "type": "range", + "range": [ + 0, + 16383 + ], + "fourteen": [ + 21, + 53 + ] + }, + { + "name": "FILTER KB TRACKING AMOUNT", + "cc": 27, + "type": "range", + "range": [ + 0, + 16383 + ], + "fourteen": [ + 27, + 59 + ] + }, + { + "name": "FILTER EG AMOUNT", + "cc": 22, + "type": "range", + "range": [ + 0, + 16383 + ], + "fourteen": [ + 22, + 54 + ] + }, + { + "name": "MULTIDRIVE AMOUNT", + "cc": 18, + "type": "range", + "range": [ + 0, + 16383 + ], + "fourteen": [ + 18, + 50 + ] + }, + { + "name": "FILTER EG VELOCITY TO AMPLITUDE", + "cc": 110, + "type": "range", + "range": [ + 0, + 127 + ], + "fourteen": false + }, + { + "name": "AMPLIFIER EG VELOCITY TO AMPLITUDE", + "cc": 92, + "type": "range", + "range": [ + 0, + 127 + ], + "fourteen": false + }, + { + "name": "NOTE PRIORITY", + "cc": 111, + "type": "enum", + "values": [ + [ + 0, + "Global" + ], + [ + 32, + "Low Note" + ], + [ + 64, + "High Note" + ], + [ + 96, + "Last Note" + ] + ], + "fourteen": false + }, + { + "name": "RELEASE ON / OFF", + "cc": 88, + "type": "checkbox", + "off": 0, + "on": 64, + "fourteen": false + }, + { + "name": "MODULATION SOURCE", + "cc": 71, + "type": "enum", + "values": [ + [ + 0, + "Triangle LFO" + ], + [ + 16, + "Square LFO" + ], + [ + 32, + "Saw LFO" + ], + [ + 48, + "Ramp LFO" + ], + [ + 64, + "S&H" + ], + [ + 80, + "Filter Envelope" + ] + ], + "fourteen": false + }, + { + "name": "LFO RATE", + "cc": 3, + "type": "range", + "range": [ + 0, + 16383 + ], + "fourteen": [ + 3, + 35 + ] + }, + { + "name": "LFO MIDI SYNC", + "cc": 102, + "type": "checkbox", + "off": 0, + "on": 64, + "fourteen": false + }, + { + "name": "LFO GATE RESET", + "cc": 93, + "type": "checkbox", + "off": 0, + "on": 64, + "fourteen": false + }, + { + "name": "FILTER MOD AMOUNT", + "cc": 2, + "type": "range", + "range": [ + 0, + 16383 + ], + "fourteen": [ + 2, + 34 + ] + }, + { + "name": "PITCH MOD AMOUNT", + "cc": 4, + "type": "range", + "range": [ + 0, + 16383 + ], + "fourteen": [ + 4, + 36 + ] + }, + { + "name": "WAVE MOD AMOUNT", + "cc": 20, + "type": "range", + "range": [ + 0, + 16383 + ], + "fourteen": [ + 20, + 52 + ] + }, + { + "name": "PITCH BEND UP", + "cc": 107, + "type": "range", + "range": [ + 0, + 24 + ], + "fourteen": false + }, + { + "name": "PITCH BEND DOWN", + "cc": 108, + "type": "range", + "range": [ + 0, + 24 + ], + "fourteen": false + }, + { + "name": "GLIDE ON / OFF", + "cc": 65, + "type": "checkbox", + "off": 0, + "on": 64, + "fourteen": false + }, + { + "name": "GLIDE LEGATO", + "cc": 94, + "type": "checkbox", + "off": 0, + "on": 64, + "fourteen": false + }, + { + "name": "GLIDE RATE", + "cc": 5, + "type": "range", + "range": [ + 0, + 16383 + ], + "fourteen": [ + 5, + 37 + ] + }, + { + "name": "GLIDE TYPE", + "cc": 85, + "type": "enum", + "values": [ + [ + 0, + "Linear Constant Rate" + ], + [ + 43, + "Linear Constant Time" + ], + [ + 85, + "Exponential" + ] + ], + "fourteen": false + }, + { + "name": "LFO KB TRACKING AMT", + "cc": 78, + "type": "range", + "range": [ + 0, + 127 + ], + "fourteen": false + }, + { + "name": "AMPLIFIER EG RESET", + "cc": 83, + "type": "checkbox", + "off": 0, + "on": 64, + "fourteen": false + }, + { + "name": "FILTER EG RESET", + "cc": 82, + "type": "checkbox", + "off": 0, + "on": 64, + "fourteen": false + }, + { + "name": "OUTPUT LEVEL", + "cc": 7, + "type": "range", + "randomize": false, + "range": [ + 0, + 16383 + ], + "fourteen": [ + 7, + 39 + ] + }, + { + "name": "KEYBOARD OCTAVE", + "cc": 89, + "type": "enum", + "values": [ + [ + 0, + "-2 Oct" + ], + [ + 16, + "-1 Oct" + ], + [ + 32, + "+0 Oct" + ], + [ + 48, + "+1 Oct" + ], + [ + 64, + "+2 Oct" + ] + ], + "fourteen": false + }, + { + "name": "EXTERNAL INPUT LVL", + "cc": 116, + "type": "range", + "range": [ + 0, + 127 + ], + "fourteen": false + }, + { + "name": "AMPLIFIER EG DELAY", + "cc": 104, + "type": "range", + "range": [ + 0, + 127 + ], + "fourteen": false + }, + { + "name": "AMPLIFIER EG HOLD", + "cc": 106, + "type": "range", + "range": [ + 0, + 127 + ], + "fourteen": false + }, + { + "name": "FILTER EG DELAY", + "cc": 103, + "type": "range", + "range": [ + 0, + 127 + ], + "fourteen": false + }, + { + "name": "FILTER EG HOLD", + "cc": 105, + "type": "range", + "range": [ + 0, + 127 + ], + "fourteen": false + }, + { + "name": "PITCH MOD. OSC 2 ONLY", + "cc": 70, + "type": "checkbox", + "off": 0, + "on": 64, + "fourteen": false + }, + { + "name": "MODULATION WHEEL", + "cc": 1, + "type": "range", + "range": [ + 0, + 127 + ], + "fourteen": false + }, + { + "name": "WAVE MOD DESTINATION", + "cc": 72, + "type": "enum", + "values": [ + [ + 0, + "OSC 1 Only" + ], + [ + 43, + "OSC 2 Only" + ], + [ + 85, + "Both OSC 1 & 2" + ] + ], + "fourteen": false, + }, + { + "name": "VCO 1 OCTAVE", + "cc": 74, + "type": "enum", + "values": [ + [ + 16, + "16'" + ], + [ + 32, + "8'" + ], + [ + 48, + "4" + ], + [ + 64, + "2'" + ] + ], + "fourteen": false + }, + { + "name": "VCO 2 OCTAVE", + "cc": 75, + "type": "enum", + "values": [ + [ + 16, + "16'" + ], + [ + 32, + "8'" + ], + [ + 48, + "4" + ], + [ + 64, + "2'" + ] + ], + "fourteen": false + }, + { + "name": "FILTER POLES", + "cc": 109, + "type": "enum", + "values": [ + [ + 0, + "1 POLE" + ], + [ + 32, + "2 POLES" + ], + [ + 64, + "3 POLES" + ], + [ + 96, + "4 POLES" + ] + ], + "fourteen": false + }, + { + "name": "LFO RANGE", + "cc": 76, + "type": "enum", + "values": [ + [ + 0, + "Low (.01 Hz - 10Hz)" + ], + [ + 43, + "Mid (.1Hz - 100Hz)" + ], + [ + 85, + "High (1Hz - 1kHz)" + ] + ], + "fourteen": false + }, + { + "name": "LEGATO", + "cc": 68, + "type": "checkbox", + "off": 0, + "on": 64, + "fourteen": false + }, + { + "name": "KEYBOARD TRANSPOSE", + "cc": 119, + "type": "enum", + "values": [ + [ + 0, + "-12 Semitones" + ], + [ + 1, + "-11 Semitones..." + ], + [ + 12, + "+0 Semitones..." + ], + [ + 24, + "+12 Semitones" + ] + ], + "fourteen": false + }, + { + "name": "GATED GLIDE", + "cc": 73, + "type": "checkbox", + "off": 0, + "on": 64, + "fourteen": false + }, + { + "name": "FILTER EG REPEAT", + "cc": 112, + "type": "checkbox", + "off": 0, + "on": 64, + "fourteen": false + }, + { + "name": "FILTER EG VELOCITY TO TIME", + "cc": 86, + "type": "range", + "range": [ + 0, + 127 + ], + "fourteen": false + }, + { + "name": "FILTER EG KB AMOUNT", + "cc": 79, + "type": "range", + "range": [ + 0, + 127 + ], + "fourteen": false + }, + { + "name": "FILTER EG GATE SOURCE", + "cc": 90, + "type": "enum", + "values": [ + [ + 0, + "Gate On" + ], + [ + 32, + "Keys Only" + ], + [ + 64, + "Gate Only" + ], + [ + 96, + "Keys or Gate Input" + ] + ], + "fourteen": false + }, + { + "name": "AMPLIFIER EG REPEAT", + "cc": 113, + "type": "checkbox", + "off": 0, + "on": 64, + "fourteen": false + }, + { + "name": "AMPLIFIER EG VELOCITY TO TIME", + "cc": 87, + "type": "range", + "range": [ + 0, + 127 + ], + "fourteen": false + }, + { + "name": "AMPLIFIER EG KB AMOUNT", + "cc": 80, + "type": "range", + "range": [ + 0, + 127 + ], + "fourteen": false + }, + { + "name": "VOLUME EG GATE SOURCE", + "cc": 91, + "type": "enum", + "values": [ + [ + 0, + "Gate On" + ], + [ + 32, + "Keys Only" + ], + [ + 64, + "Gate Only" + ], + [ + 96, + "Keys Or Gate Input" + ] + ], + "fourteen": false + }, + { + "name": "FILTER EG TRIGGER MODE", + "cc": 114, + "type": "checkbox", + "off": 0, + "on": 64, + "fourteen": false + }, + { + "name": "AMPLIFIER EG TRIGGER MODE", + "cc": 115, + "type": "checkbox", + "off": 0, + "on": 64, + "fourteen": false + } +]
\ No newline at end of file |
