var VERSION = "0.1" var verbose = false; loadAPI(13); // Remove this if you want to be able to use deprecated methods without causing script to stop. // This can be useful during development. host.setShouldFailOnDeprecatedUse(true); host.defineController("Paul-Dempsey", "p-Haken-Continuu-Mini", VERSION, "f4f53efe-ec64-4abd-9da5-05425ea2a536", "Paul Dempsey") host.defineMidiPorts(1, 1) function init() { println("Host APi version:" + host.getHostApiVersion()) println("Host version:" + host.getHostVersion()) host.getMidiInPort(0).setMidiCallback(onMidi) host.getMidiInPort(0).setSysexCallback(onSysex) noteInput = host.getMidiInPort(0).createNoteInput( '', '8?????', '9?????', 'B?40??', 'B?4A??', 'C?????', 'D?????', 'E?????') noteInput.setUseExpressiveMidi(true, 0, 96) var prefs = host.getPreferences() var bendRanges = ['12', '24', '36', '48', '60', '72', '84', '96'] bendRange = prefs.getEnumSetting('Bend Range', 'MIDI', bendRanges, '96') bendRange.addValueObserver(function (range) { var pb = parseInt(range) noteInput.setUseExpressiveMidi(true, 0, pb) sendPitchBendRangeRPN(1, pb) }) var useVerbose = prefs.getBooleanSetting('Verbose', 'Options', false) useVerbose.addValueObserver(function (value) { verbose = value == true println("Set verbose " + (verbose ? 'on' : 'off')) }) // Set POLY ON mode with 8 MPE voices sendChannelController(0, 127, 8) // Set up pitch bend sensitivity sendPitchBendRangeRPN(1, 96) sendPitchBendRangeRPN(2, 96) } function sendPitchBendRangeRPN(channel, range) { sendChannelController(channel, 100, 0) // Registered Parameter Number (RPN) - LSB* sendChannelController(channel, 101, 0) // Registered Parameter Number (RPN) - MSB* sendChannelController(channel, 36, 0) sendChannelController(channel, 6, range) } function onMidi(status, data1, data2) { if (verbose) { printMidi(status, data1, data2) } noteInput.sendRawMidiEvent(status, data1, data2) } function onSysex(data) { if (verbose) { println("SysEx:" + data) } } function exit() { println("---- Exit ----"); }