wam-community
Version:
A collection of prebuilt Web Audio Modules ready for use
666 lines (657 loc) • 84.8 kB
JavaScript
/******/ (() => { // webpackBootstrap
/******/ "use strict";
/******/ var __webpack_modules__ = ({
/***/ "./src/MicrokorgKernel.ts":
/*!********************************!*\
!*** ./src/MicrokorgKernel.ts ***!
\********************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ MicrokorgKernel: () => (/* binding */ MicrokorgKernel)
/* harmony export */ });
/* harmony import */ var _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/midi/SelectParameter */ "../shared/midi/SelectParameter.ts");
/* harmony import */ var _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/midi/IntParameter */ "../shared/midi/IntParameter.ts");
/* harmony import */ var _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/midi/ControlChangeMessager */ "../shared/midi/ControlChangeMessager.ts");
/* harmony import */ var _shared_midi_NRPNMSBMessager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../shared/midi/NRPNMSBMessager */ "../shared/midi/NRPNMSBMessager.ts");
/* harmony import */ var _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../shared/midi/SysexMessager */ "../shared/midi/SysexMessager.ts");
/* harmony import */ var _shared_midi_BooleanParameter__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../shared/midi/BooleanParameter */ "../shared/midi/BooleanParameter.ts");
/* harmony import */ var _shared_midi_Korg__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../shared/midi/Korg */ "../shared/midi/Korg.ts");
class MicrokorgKernel {
constructor() {
this.voiceParameters = {};
this.timbre1Parameters = this.initTimbre(1);
this.timbre2Parameters = this.initTimbre(2);
this.voiceParameters["modfx_speed"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter("modfx_speed", "ModFX LFO Speed", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(12), 0, 0, 127);
this.voiceParameters["modfx_depth"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter("modfx_depth", "ModFX Depth", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(93), 0, 0, 127);
const modfxTypes = [
{ value: 0, label: "Chorus/Flanger" },
{ value: 1, label: "Ensemble" },
{ value: 2, label: "Phaser" }
];
this.voiceParameters["modfx_type"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter("modfx_type", "ModFX Type", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 0, modfxTypes);
this.voiceParameters["delay_time"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter("delay_time", "Delay Time", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(13), 0, 0, 127);
this.voiceParameters["delay_depth"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter("delay_depth", "Delay Depth", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(94), 0, 0, 127);
this.voiceParameters["delay_sync"] = new _shared_midi_BooleanParameter__WEBPACK_IMPORTED_MODULE_5__.BooleanParameter("delay_sync", "Delay Sync", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 0, 0, 1);
const delayTimebase = [
{ value: 0, label: "1/32" },
{ value: 1, label: "1/24" },
{ value: 2, label: "1/16" },
{ value: 3, label: "1/12" },
{ value: 4, label: "3/32" },
{ value: 5, label: "1/8" },
{ value: 6, label: "1/6" },
{ value: 7, label: "3/16" },
{ value: 8, label: "1/4" },
{ value: 9, label: "1/3" },
{ value: 10, label: "3/8" },
{ value: 11, label: "1/2" },
{ value: 12, label: "2/3" },
{ value: 13, label: "3/4" },
{ value: 14, label: "1/1" },
];
this.voiceParameters["delay_sync_division"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter("delay_sync_division", "Delay Sync Division", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 0, delayTimebase);
const delayTypes = [
{ value: 0, label: "Stereo" },
{ value: 1, label: "Cross" },
{ value: 2, label: "L/R" }
];
this.voiceParameters["delay_type"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter("delay_type", "Delay Type", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 0, delayTypes);
const off_on = [
{ value: 0, label: "Off" },
{ value: 127, label: "On" }
];
this.voiceParameters["arp_enabled"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter("arp_enabled", "Arpeggiator", new _shared_midi_NRPNMSBMessager__WEBPACK_IMPORTED_MODULE_3__.NRPNMSBMessager(false, 0, 2), 0, off_on);
const arp_range = [
{ value: 0, label: "1 Oct" },
{ value: 1, label: "2 Oct" },
{ value: 2, label: "3 Oct" },
{ value: 3, label: "4 Oct" },
];
this.voiceParameters["arp_range"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter("arp_range", "Arp Range", new _shared_midi_NRPNMSBMessager__WEBPACK_IMPORTED_MODULE_3__.NRPNMSBMessager(false, 0, 3), 0, arp_range);
this.voiceParameters["arp_latch"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter("arp_latch", "Arp Latch", new _shared_midi_NRPNMSBMessager__WEBPACK_IMPORTED_MODULE_3__.NRPNMSBMessager(false, 0, 4), 0, off_on);
const arp_type = [
{ value: 0, label: "Up" },
{ value: 26, label: "Down" },
{ value: 51, label: "Alt1" },
{ value: 77, label: "Alt2" },
{ value: 102, label: "Random" },
{ value: 127, label: "Trigger" }
];
this.voiceParameters["arp_type"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter("arp_type", "Arp Type", new _shared_midi_NRPNMSBMessager__WEBPACK_IMPORTED_MODULE_3__.NRPNMSBMessager(false, 0, 7), 0, arp_type);
this.voiceParameters["arp_gate"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter("arp_gate", "Arp Gate Len", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 50, 0, 100);
this.voiceParameters["arp_steps"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter("arp_steps", "Arp Steps", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 8, 1, 8);
for (let i = 1; i < 9; i++) {
this.voiceParameters[`arp_step_${i}`] = new _shared_midi_BooleanParameter__WEBPACK_IMPORTED_MODULE_5__.BooleanParameter(`arp_step_${i}`, `Arp Step ${i}`, new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 1, 0, 1);
}
this.voiceParameters["arp_tempo"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter("arp_tempo", "Arp Tempo", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 120, 20, 300);
const arpTargets = [
{ value: 0, label: "Both" },
{ value: 1, label: "Timbre 1" },
{ value: 2, label: "Timbre 3" }
];
this.voiceParameters["arp_target"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter("arp_target", "Arp Target", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 0, arpTargets);
this.voiceParameters["arp_key_sync"] = new _shared_midi_BooleanParameter__WEBPACK_IMPORTED_MODULE_5__.BooleanParameter("arp_key_sync", "Arp Key Sync", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 0, 0, 1);
const arpResolution = [
{ value: 0, label: "1/24" },
{ value: 1, label: "1/16" },
{ value: 2, label: "1/12" },
{ value: 3, label: "1/8" },
{ value: 4, label: "1/6" },
{ value: 5, label: "1/4" }
];
this.voiceParameters["arp_resolution"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter("arp_resolution", "Arp Resolution", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 1, arpResolution);
this.voiceParameters["arp_swing"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter("arp_swing", "Arp Swing", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 50, 0, 100);
const voice_types = [
{ value: 0, label: "Single" },
{ value: 2, label: "Layer" },
{ value: 3, label: "Vocoder" },
];
this.voiceParameters["voice_mode"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter("voice_mode", "Voice Mode", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 0, voice_types);
const hiFreqs = [
{ value: 0, label: "1.00kHz" },
{ value: 1, label: "1.25kHz" },
{ value: 2, label: "1.50kHz" },
{ value: 3, label: "1.75kHz" },
{ value: 4, label: "2.00kHz" },
{ value: 5, label: "2.25kHz" },
{ value: 6, label: "2.50kHz" },
{ value: 7, label: "2.75kHz" },
{ value: 8, label: "3.00kHz" },
{ value: 9, label: "3.25kHz" },
{ value: 10, label: "3.50kHz" },
{ value: 11, label: "3.75kHz" },
{ value: 12, label: "4.00kHz" },
{ value: 13, label: "4.25kHz" },
{ value: 14, label: "4.50kHz" },
{ value: 15, label: "4.75kHz" },
{ value: 16, label: "5.00kHz" },
{ value: 17, label: "5.25kHz" },
{ value: 18, label: "5.50kHz" },
{ value: 19, label: "5.75kHz" },
{ value: 20, label: "6.00kHz" },
{ value: 21, label: "7.00kHz" },
{ value: 22, label: "8.00kHz" },
{ value: 23, label: "9.00kHz" },
{ value: 24, label: "10.0kHz" },
{ value: 25, label: "11.0kHz" },
{ value: 26, label: "12.0kHz" },
{ value: 27, label: "14.0kHz" },
{ value: 28, label: "16.0kHz" },
{ value: 29, label: "18.0kHz" }
];
this.voiceParameters["eq_hi_freq"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter("eq_hi_freq", "EQ Hi Freq", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 16, hiFreqs);
this.voiceParameters["eq_hi_gain"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter("eq_hi_gain", "EQ Hi Gain", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 0, -12, 12);
const loFreqs = [
{ value: 0, label: "40Hz" },
{ value: 1, label: "50Hz" },
{ value: 2, label: "60Hz" },
{ value: 3, label: "80Hz" },
{ value: 4, label: "100Hz" },
{ value: 5, label: "120Hz" },
{ value: 6, label: "140Hz" },
{ value: 7, label: "160Hz" },
{ value: 8, label: "180Hz" },
{ value: 9, label: "200Hz" },
{ value: 10, label: "220Hz" },
{ value: 11, label: "240Hz" },
{ value: 12, label: "260Hz" },
{ value: 13, label: "280Hz" },
{ value: 14, label: "300Hz" },
{ value: 15, label: "320Hz" },
{ value: 16, label: "340Hz" },
{ value: 17, label: "360Hz" },
{ value: 18, label: "380Hz" },
{ value: 19, label: "400Hz" },
{ value: 20, label: "420Hz" },
{ value: 21, label: "440Hz" },
{ value: 22, label: "460Hz" },
{ value: 23, label: "480Hz" },
{ value: 24, label: "500Hz" },
{ value: 25, label: "600Hz" },
{ value: 26, label: "700Hz" },
{ value: 27, label: "800Hz" },
{ value: 28, label: "900Hz" },
{ value: 29, label: "1000Hz" },
];
this.voiceParameters["eq_lo_freq"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter("eq_lo_freq", "EQ Lo Freq", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 16, loFreqs);
this.voiceParameters["eq_lo_gain"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter("eq_lo_gain", "EQ Lo Gain", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 0, -12, 12);
this.voiceParameters["keyboard_oct"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter("keyboard_oct", "Keyboard Octave", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 0, -3, 3);
this.voiceParameters["voc_ch1_level"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter("voc_ch1_level", "Ch1 Level", new _shared_midi_NRPNMSBMessager__WEBPACK_IMPORTED_MODULE_3__.NRPNMSBMessager(false, 4, 16), 100, 0, 127);
this.voiceParameters["voc_ch2_level"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter("voc_ch2_level", "Ch2 Level", new _shared_midi_NRPNMSBMessager__WEBPACK_IMPORTED_MODULE_3__.NRPNMSBMessager(false, 4, 18), 100, 0, 127);
this.voiceParameters["voc_ch3_level"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter("voc_ch3_level", "Ch3 Level", new _shared_midi_NRPNMSBMessager__WEBPACK_IMPORTED_MODULE_3__.NRPNMSBMessager(false, 4, 20), 100, 0, 127);
this.voiceParameters["voc_ch4_level"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter("voc_ch4_level", "Ch4 Level", new _shared_midi_NRPNMSBMessager__WEBPACK_IMPORTED_MODULE_3__.NRPNMSBMessager(false, 4, 22), 100, 0, 127);
this.voiceParameters["voc_ch5_level"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter("voc_ch5_level", "Ch5 Level", new _shared_midi_NRPNMSBMessager__WEBPACK_IMPORTED_MODULE_3__.NRPNMSBMessager(false, 4, 24), 100, 0, 127);
this.voiceParameters["voc_ch6_level"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter("voc_ch6_level", "Ch6 Level", new _shared_midi_NRPNMSBMessager__WEBPACK_IMPORTED_MODULE_3__.NRPNMSBMessager(false, 4, 26), 100, 0, 127);
this.voiceParameters["voc_ch7_level"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter("voc_ch7_level", "Ch7 Level", new _shared_midi_NRPNMSBMessager__WEBPACK_IMPORTED_MODULE_3__.NRPNMSBMessager(false, 4, 28), 100, 0, 127);
this.voiceParameters["voc_ch8_level"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter("voc_ch8_level", "Ch8 Level", new _shared_midi_NRPNMSBMessager__WEBPACK_IMPORTED_MODULE_3__.NRPNMSBMessager(false, 4, 30), 100, 0, 127);
this.voiceParameters["voc_ch1_pan"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter("voc_ch1_pan", "Ch1 Pan", new _shared_midi_NRPNMSBMessager__WEBPACK_IMPORTED_MODULE_3__.NRPNMSBMessager(false, 4, 32), 0, -63, 63);
this.voiceParameters["voc_ch2_pan"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter("voc_ch2_pan", "Ch2 Pan", new _shared_midi_NRPNMSBMessager__WEBPACK_IMPORTED_MODULE_3__.NRPNMSBMessager(false, 4, 34), 0, -63, 63);
this.voiceParameters["voc_ch3_pan"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter("voc_ch3_pan", "Ch3 Pan", new _shared_midi_NRPNMSBMessager__WEBPACK_IMPORTED_MODULE_3__.NRPNMSBMessager(false, 4, 36), 0, -63, 63);
this.voiceParameters["voc_ch4_pan"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter("voc_ch4_pan", "Ch4 Pan", new _shared_midi_NRPNMSBMessager__WEBPACK_IMPORTED_MODULE_3__.NRPNMSBMessager(false, 4, 38), 0, -63, 63);
this.voiceParameters["voc_ch5_pan"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter("voc_ch5_pan", "Ch5 Pan", new _shared_midi_NRPNMSBMessager__WEBPACK_IMPORTED_MODULE_3__.NRPNMSBMessager(false, 4, 40), 0, -63, 63);
this.voiceParameters["voc_ch6_pan"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter("voc_ch6_pan", "Ch6 Pan", new _shared_midi_NRPNMSBMessager__WEBPACK_IMPORTED_MODULE_3__.NRPNMSBMessager(false, 4, 42), 0, -63, 63);
this.voiceParameters["voc_ch7_pan"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter("voc_ch7_pan", "Ch7 Pan", new _shared_midi_NRPNMSBMessager__WEBPACK_IMPORTED_MODULE_3__.NRPNMSBMessager(false, 4, 44), 0, -63, 63);
this.voiceParameters["voc_ch8_pan"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter("voc_ch8_pan", "Ch8 Pan", new _shared_midi_NRPNMSBMessager__WEBPACK_IMPORTED_MODULE_3__.NRPNMSBMessager(false, 4, 46), 0, -63, 63);
this.voiceParameters["voc_hpf_gate"] = new _shared_midi_BooleanParameter__WEBPACK_IMPORTED_MODULE_5__.BooleanParameter("voc_hpf_gate", "Input HPF Gate", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 0, 0, 1);
this.voiceParameters["voc_hpf_level"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter("voc_hpf_level", "HPF Level", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 0, 0, 127);
this.voiceParameters["voc_gate_sense"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter("voc_gate_sense", "Gate Sense", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 0, 0, 127);
this.voiceParameters["voc_threshold"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter("voc_threshold", "Threshold", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 0, 0, 127);
const shifts = [
{ value: 0, label: "0" },
{ value: 1, label: "+1" },
{ value: 2, label: "+2" },
{ value: 3, label: "-1" },
{ value: 4, label: "-2" },
];
this.voiceParameters["voc_shift"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter("voc_shift", "Voc: Formant Shift", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 0, shifts);
const modSources = [
{ value: 0, label: "---" },
{ value: 1, label: "EG" },
{ value: 2, label: "LFO1" },
{ value: 3, label: "LFO2" },
{ value: 4, label: "Velocity" },
{ value: 5, label: "Kbd Track" },
{ value: 6, label: "Pitch Bend" },
{ value: 7, label: "Mod Wheel" },
];
this.voiceParameters["voc_filter_mod"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter("voc_filter_mod", "Voc: Filter Mod Source", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 0, modSources);
this.voiceParameters["voc_mod_level"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter("voc_mod_level", "Mod Level", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 0, -64, 64);
this.voiceParameters["voc_ef_sense"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter("voc_ef_sense", "Voc: EF Sense", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 0, 0, 127);
this.voiceParameters["voc_amp_direct"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter("voc_amp_direct", "Voc: Direct Level", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 0, 0, 127);
}
get parameters() {
return {
...this.voiceParameters,
...this.timbre1Parameters,
...this.timbre2Parameters,
};
}
initTimbre(t) {
let p = "";
let l = "";
if (t == 2) {
p = "t2_";
l = "T2:";
}
let parameters = {};
const voiceAssigns = [
{ value: 0, label: "Mono" },
{ value: 1, label: "Poly" },
{ value: 2, label: "Unison" }
];
parameters[p + "voice_assign"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter(p + "voice_assign", l + "Voice Assign", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 0, voiceAssigns);
parameters[p + "eg1_reset"] = new _shared_midi_BooleanParameter__WEBPACK_IMPORTED_MODULE_5__.BooleanParameter(p + "eg1_reset", l + "EG1 Reset", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 1, 0, 1);
parameters[p + "eg2_reset"] = new _shared_midi_BooleanParameter__WEBPACK_IMPORTED_MODULE_5__.BooleanParameter(p + "eg2_reset", l + "EG2 Reset", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 1, 0, 1);
const trigModes = [
{ value: 0, label: "Single" },
{ value: 1, label: "Multi" },
];
parameters[p + "trig_mode"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter(p + "trig_mode", l + "Trig Mode", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 0, trigModes);
parameters[p + "unison_detune"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter(p + "unison_detune", l + "Unison Detune", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 0, 0, 100);
parameters[p + "tune"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter(p + "tune", l + "Tune", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 0, -50, +50);
parameters[p + "bend_range"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter(p + "bend_range", l + "Bend Range", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 0, -12, +12);
parameters[p + "transpose"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter(p + "transpose", l + "Transpose", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 0, -24, +24);
parameters[p + "vibrato"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter(p + "vibrato", l + "Vibrato", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 0, -63, +63);
parameters[p + "portamento"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter(p + "portamento", l + "Portamento", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(5), 0, 0, 127);
const osc1WaveOptions = [
{ value: 0, label: "Saw" },
{ value: 18, label: "Square" },
{ value: 36, label: "Triangle" },
{ value: 54, label: "Sine" },
{ value: 72, label: "Vox Wave" },
{ value: 90, label: "DWGS" },
{ value: 108, label: "Noise" },
{ value: 126, label: "Audio In" }
];
parameters[p + "osc1_wave"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter(p + "osc1_wave", l + "OSC1 Waveform", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(77), 0, osc1WaveOptions);
parameters[p + "osc1_control1"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter(p + "osc1_control1", l + "OSC1 Control1", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(14), 0, 0, 127);
parameters[p + "osc1_control2"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter(p + "osc1_control2", l + "OSC1 Control2", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(15), 0, 0, 127);
const osc2WaveOptions = [
{ value: 0, label: "Saw" },
{ value: 64, label: "Square" },
{ value: 127, label: "Triangle" }
];
const oscModOptions = [
{ value: 0, label: "Off" },
{ value: 43, label: "Ring Mod" },
{ value: 85, label: "Sync" },
{ value: 127, label: "Ring&Sync" }
];
parameters[p + "osc2_wave"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter(p + "osc2_wave", l + "OSC2 Waveform", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(78), 0, osc2WaveOptions);
parameters[p + "osc_mod"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter(p + "osc_mod", l + "OSC Modulation", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(82), 0, oscModOptions);
parameters[p + "osc2_tune"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter(p + "osc2_tune", l + "OSC2 Tune", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager, 0, -24, 24);
parameters[p + "osc2_finetune"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter(p + "osc2_finetune", l + "OSC2 Finetune", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(19), 0, -64, 63);
parameters[p + "mixer_osc1"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter(p + "mixer_osc1", l + "OSC1 Level", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(20), 100, 0, 127);
parameters[p + "mixer_osc2"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter(p + "mixer_osc2", l + "OSC2 Level", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(21), 0, 0, 127);
parameters[p + "mixer_noise"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter(p + "mixer_noise", l + "Noise Level", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(22), 0, 0, 127);
const filterTypes = [
{ value: 0, label: "-24LPF" },
{ value: 43, label: "-12LPF" },
{ value: 85, label: "-12BPF" },
{ value: 127, label: "-12HPF" }
];
parameters[p + "filter_type"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter(p + "filter_type", l + "Filter Type", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(83), 0, filterTypes);
parameters[p + "filter_freq"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter(p + "filter_freq", l + "Filter Frequency", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(74), 100, 0, 127);
parameters[p + "filter_res"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter(p + "filter_res", l + "Filter Resonance", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(71), 0, 0, 127);
parameters[p + "filter_env"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter(p + "filter_env", l + "Filter Env Depth", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(79), 0, -64, 63);
parameters[p + "filter_keyboard"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter(p + "filter_keyboard", l + "Filter Keyboard Track", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(85), 0, -64, 63);
parameters[p + "f_eg_attack"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter(p + "f_eg_attack", l + "Filter EG Attack", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(23), 0, 0, 127);
parameters[p + "f_eg_decay"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter(p + "f_eg_decay", l + "Filter EG Decay", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(24), 0, 0, 127);
parameters[p + "f_eg_sustain"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter(p + "f_eg_sustain", l + "Filter EG Sustain", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(25), 0, 0, 127);
parameters[p + "f_eg_release"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter(p + "f_eg_release", l + "Filter EG Release", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(26), 0, 0, 127);
parameters[p + "amp_level"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter(p + "amp_level", l + "Amp Level", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(7), 100, 0, 127);
parameters[p + "amp_pan"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter(p + "amp_pan", l + "Amp Pan", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(10), 0, -64, 63);
const off_on = [
{ value: 0, label: "Off" },
{ value: 127, label: "On" }
];
parameters[p + "amp_distortion"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter(p + "amp_distortion", l + "Distortion", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(92), 0, off_on);
parameters[p + "amp_eg_attack"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter(p + "amp_eg_attack", l + "Amp EG Attack", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(73), 0, 0, 127);
parameters[p + "amp_eg_decay"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter(p + "amp_eg_decay", l + "Amp EG Decay", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(75), 50, 0, 127);
parameters[p + "amp_eg_sustain"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter(p + "amp_eg_sustain", l + "Amp EG Sustain", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(70), 50, 0, 127);
parameters[p + "amp_eg_release"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter(p + "amp_eg_release", l + "Amp EG Release", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(72), 15, 0, 127);
parameters[p + "amp_keyboard"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter(p + "amp_keyboard", l + "Amp Kybd Track", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 0, -63, 63);
const lfo1Waves = [
{ value: 0, label: "Saw" },
{ value: 43, label: "Square" },
{ value: 85, label: "Triangle" },
{ value: 127, label: "S/H" }
];
const lfo2Waves = [
{ value: 0, label: "Saw" },
{ value: 43, label: "Square" },
{ value: 85, label: "Triangle" },
{ value: 127, label: "S/H" }
];
const lfoKeySync = [
{ value: 0, label: "Off" },
{ value: 1, label: "Timbre" },
{ value: 2, label: "Voice" },
];
const lfoTimeBase = [
{ value: 0, label: "1/1" },
{ value: 1, label: "3/4" },
{ value: 2, label: "2/3" },
{ value: 3, label: "1/2" },
{ value: 4, label: "3/8" },
{ value: 5, label: "1/3" },
{ value: 6, label: "1/4" },
{ value: 7, label: "3/16" },
{ value: 8, label: "1/6" },
{ value: 9, label: "1/8" },
{ value: 10, label: "3/32" },
{ value: 11, label: "1/12" },
{ value: 12, label: "1/16" },
{ value: 13, label: "1/24" },
{ value: 14, label: "1/32" },
];
parameters[p + "lfo1_wave"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter(p + "lfo1_wave", l + "LFO1 Wave", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(87), 0, lfo1Waves);
parameters[p + "lfo1_freq"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter(p + "lfo1_freq", l + "LFO1 Freq", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(27), 0, 0, 127);
parameters[p + "lfo1_keysync"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter(p + "lfo1_keysync", l + "LFO1 Key Sync", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 0, lfoKeySync);
parameters[p + "lfo1_temposync"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter(p + "lfo1_temposync", l + "LFO1 Tempo Sync", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 0, off_on);
parameters[p + "lfo1_timebase"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter(p + "lfo1_timebase", l + "LFO1 Timebase", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 0, lfoTimeBase);
parameters[p + "lfo2_wave"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter(p + "lfo2_wave", l + "LFO2 Wave", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(88), 0, lfo2Waves);
parameters[p + "lfo2_freq"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter(p + "lfo2_freq", l + "LFO2 Freq", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(76), 0, 0, 127);
parameters[p + "lfo2_keysync"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter(p + "lfo2_keysync", l + "LFO2 Key Sync", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 0, lfoKeySync);
parameters[p + "lfo2_temposync"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter(p + "lfo2_temposync", l + "LFO2 Tempo Sync", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 0, off_on);
parameters[p + "lfo2_timebase"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter(p + "lfo2_timebase", l + "LFO2 Timebase", new _shared_midi_SysexMessager__WEBPACK_IMPORTED_MODULE_4__.SysexMessager(), 0, lfoTimeBase);
parameters[p + "patch1_level"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter(p + "patch1_level", l + "Patch1 Level", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(28), 0, -64, 63);
parameters[p + "patch2_level"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter(p + "patch2_level", l + "Patch2 Level", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(29), 0, -64, 63);
parameters[p + "patch3_level"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter(p + "patch3_level", l + "Patch3 Level", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(30), 0, -64, 63);
parameters[p + "patch4_level"] = new _shared_midi_IntParameter__WEBPACK_IMPORTED_MODULE_1__.IntParameter(p + "patch4_level", l + "Patch4 Level", new _shared_midi_ControlChangeMessager__WEBPACK_IMPORTED_MODULE_2__.ControlChangeMessager(31), 0, -64, 63);
const patchSources = [
{ value: 0, label: "Filter EG" },
{ value: 18, label: "Amp EG" },
{ value: 36, label: "LFO1" },
{ value: 54, label: "LFO2" },
{ value: 72, label: "VELOCITY" },
{ value: 90, label: "KBD TRACK" },
{ value: 108, label: "Pitch Bend" },
{ value: 126, label: "Mod wheel" }
];
const patchDest = [
{ value: 0, label: "Pitch" },
{ value: 18, label: "Osc2 Pitch" },
{ value: 36, label: "Osc1 CTRL1" },
{ value: 54, label: "Noise Level" },
{ value: 72, label: "Cutoff" },
{ value: 90, label: "Amp" },
{ value: 108, label: "Pan" },
{ value: 126, label: "LFO2 Freq" }
];
parameters[p + "patch1_src"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter(p + "patch1_src", l + "Patch1 Src", new _shared_midi_NRPNMSBMessager__WEBPACK_IMPORTED_MODULE_3__.NRPNMSBMessager(false, 4, 0), 0, patchSources);
parameters[p + "patch2_src"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter(p + "patch2_src", l + "Patch2 Src", new _shared_midi_NRPNMSBMessager__WEBPACK_IMPORTED_MODULE_3__.NRPNMSBMessager(false, 4, 1), 0, patchSources);
parameters[p + "patch3_src"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter(p + "patch3_src", l + "Patch3 Src", new _shared_midi_NRPNMSBMessager__WEBPACK_IMPORTED_MODULE_3__.NRPNMSBMessager(false, 4, 2), 0, patchSources);
parameters[p + "patch4_src"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter(p + "patch4_src", l + "Patch4 Src", new _shared_midi_NRPNMSBMessager__WEBPACK_IMPORTED_MODULE_3__.NRPNMSBMessager(false, 4, 3), 0, patchSources);
parameters[p + "patch1_dest"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter(p + "patch1_dest", l + "Patch1 Dest", new _shared_midi_NRPNMSBMessager__WEBPACK_IMPORTED_MODULE_3__.NRPNMSBMessager(false, 4, 8), 0, patchDest);
parameters[p + "patch2_dest"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter(p + "patch2_dest", l + "Patch2 Dest", new _shared_midi_NRPNMSBMessager__WEBPACK_IMPORTED_MODULE_3__.NRPNMSBMessager(false, 4, 9), 0, patchDest);
parameters[p + "patch3_dest"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter(p + "patch3_dest", l + "Patch3 Dest", new _shared_midi_NRPNMSBMessager__WEBPACK_IMPORTED_MODULE_3__.NRPNMSBMessager(false, 4, 10), 0, patchDest);
parameters[p + "patch4_dest"] = new _shared_midi_SelectParameter__WEBPACK_IMPORTED_MODULE_0__.SelectParameter(p + "patch4_dest", l + "Patch4 Dest", new _shared_midi_NRPNMSBMessager__WEBPACK_IMPORTED_MODULE_3__.NRPNMSBMessager(false, 4, 11), 0, patchDest);
return parameters;
}
wamParameters() {
let result = {};
for (let id of Object.keys(this.parameters)) {
result[id] = this.parameters[id].toWAM();
if (id != this.parameters[id].id) {
throw new Error(`Parameter ${id}: key does not match parameter id ${this.parameters[id].id}`);
}
}
return result;
}
ingestMIDI(channel, event) {
let result = false;
if (event.bytes[0] == (0xb0 | channel)) {
if (event.bytes[1] == 95) {
if (event.bytes[2] == 0) {
this.selectedTimbre = 0;
}
else if (event.bytes[2] == 1) {
this.selectedTimbre = 1;
}
else {
this.selectedTimbre = 2;
}
}
result = true;
}
for (let id of Object.keys(this.voiceParameters)) {
if (this.voiceParameters[id].ingestMIDI(channel, event)) {
result = true;
}
}
if ([undefined, 0, 1].includes(this.selectedTimbre)) {
for (let id of Object.keys(this.timbre1Parameters)) {
if (this.timbre1Parameters[id].ingestMIDI(channel, event)) {
result = true;
}
}
}
else {
for (let id of Object.keys(this.timbre2Parameters)) {
if (this.timbre2Parameters[id].ingestMIDI(channel, event)) {
result = true;
}
}
}
return result;
}
parameterUpdate(values) {
let result = false;
const params = this.parameters;
for (let id of Object.keys(values)) {
if (params[id].parameterUpdate(values[id])) {
result = true;
}
}
return result;
}
automationMessages(force) {
const params = this.parameters;
return Object.keys(params).map(id => params[id].automationMessage(force)).filter(ev => ev !== undefined);
}
sysexNeeded() {
const params = this.parameters;
return Object.keys(params).some(id => params[id].sysexNeeded());
}
toSysex(channel) {
let sysex = [];
this.selectedTimbre = undefined;
sysex.push(32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32);
sysex.push(0, 0);
sysex.push(this.voiceParameters["arp_steps"].value - 1);
let pattern = 0;
for (let i = 0; i < 8; i++) {
if (this.voiceParameters[`arp_step_${i + 1}`].value == 0) {
pattern |= (1 << i);
}
}
sysex.push(pattern);
const voice_mode = this.voiceParameters["voice_mode"];
sysex.push(0x40 | (voice_mode.options[voice_mode.value].value << 4));
sysex.push(0);
sysex.push(60);
let delay_sync = (this.voiceParameters["delay_sync"].value == 1) ? 0x80 : 0;
const syncbase = this.voiceParameters["delay_sync_division"];
delay_sync |= syncbase.options[syncbase.value].value;
sysex.push(delay_sync);
sysex.push(this.voiceParameters["delay_time"].value);
sysex.push(this.voiceParameters["delay_depth"].value);
sysex.push(this.voiceParameters["delay_type"].value);
sysex.push(this.voiceParameters["modfx_speed"].value);
sysex.push(this.voiceParameters["modfx_depth"].value);
sysex.push(this.voiceParameters["modfx_type"].value);
sysex.push(this.voiceParameters["eq_hi_freq"].value);
sysex.push(64 + this.voiceParameters["eq_hi_gain"].value);
sysex.push(this.voiceParameters["eq_lo_freq"].value);
sysex.push(64 + this.voiceParameters["eq_lo_gain"].value);
const tempo = this.voiceParameters["arp_tempo"].value;
sysex.push(tempo >> 8);
sysex.push(tempo & 0xff);
let arp = 0;
if (this.voiceParameters["arp_enabled"].value > 0) {
arp |= 0x80;
}
if (this.voiceParameters["arp_latch"].value > 0) {
arp |= 0x40;
}
arp |= (this.voiceParameters["arp_target"].value << 4);
arp |= this.voiceParameters["arp_key_sync"].value;
sysex.push(arp);
let arpTypeRange = this.voiceParameters["arp_type"].value;
arpTypeRange |= (this.voiceParameters["arp_range"].value << 4);
sysex.push(arpTypeRange);
sysex.push(this.voiceParameters["arp_gate"].value);
sysex.push(this.voiceParameters["arp_resolution"].value);
sysex.push(this.voiceParameters["arp_swing"].value);
let oct = this.voiceParameters["keyboard_oct"].value;
if (oct < 0) {
oct += 256;
}
sysex.push(oct);
switch (voice_mode.value) {
case 0:
case 1:
sysex = this.timbreToSysex(1, sysex, this.timbre1Parameters);
sysex = this.timbreToSysex(2, sysex, this.timbre2Parameters);
break;
case 2:
sysex = this.vocoderToSysex(sysex);
break;
}
while (sysex.length < 254) {
sysex.push(64);
}
let packed = (0,_shared_midi_Korg__WEBPACK_IMPORTED_MODULE_6__.packKorg)(sysex);
const preamble = [0xf0, 0x42, 0x30 | channel, 0x58, 0x40];
return new Uint8Array([...preamble, ...packed, 0xf7]);
}
vocoderToSysex(sysex) {
const parameters = this.parameters;
sysex.push(255);
let assign = parameters["voice_assign"].value << 6;
assign |= (parameters["eg2_reset"].value) << 5;
assign |= (parameters["eg1_reset"].value) << 4;
assign |= (parameters["trig_mode"].value) << 3;
sysex.push(assign);
sysex.push(parameters["unison_detune"].value);
sysex.push(64 + parameters["tune"].value);
sysex.push(64 + parameters["bend_range"].value);
sysex.push(64 + parameters["transpose"].value);
sysex.push(64 + parameters["vibrato"].value);
const wave = parameters["osc1_wave"];
sysex.push(wave.value);
sysex.push(parameters["osc1_control1"].value);
sysex.push(parameters["osc1_control2"].value);
if (wave.value == 5) {
let dwgs = parameters["osc1_control2"].value;
if (dwgs > 64) {
dwgs = 64;
}
sysex.push(dwgs);
}
else {
sysex.push(0);
}
sysex.push(0);
sysex.push(parameters["voc_hpf_gate"].value);
sysex.push(0);
sysex.push(parameters["portamento"].value);
sysex.push(parameters["mixer_osc1"].value);
sysex.push(parameters["mixer_osc2"].value);
sysex.push(parameters["mixer_noise"].value);
sysex.push(parameters["voc_hpf_level"].value);
sysex.push(parameters["voc_gate_sense"].value);
sysex.push(parameters["voc_threshold"].value);
sysex.push(parameters["voc_shift"].value);
sysex.push(parameters["filter_freq"].value);
sysex.push(parameters["filter_res"].value);
sysex.push(parameters["voc_filter_mod"].value);
sysex.push(64 + parameters["voc_mod_level"].value);
sysex.push(parameters["voc_ef_sense"].value);
sysex.push(parameters["amp_level"].value);
sysex.push(parameters["voc_amp_direct"].value);
sysex.push(parameters["amp_distortion"].value);
sysex.push(64);
sysex.push(63 + parameters["amp_keyboard"].value);
sysex.push(0);
sysex.push(0);
sysex.push(127);
sysex.push(0);
sysex.push(parameters["amp_eg_attack"].value);
sysex.push(parameters["amp_eg_decay"].value);
sysex.push(parameters["amp_eg_sustain"].value);
sysex.push(parameters["amp_eg_release"].value);
let lfo = parameters["lfo1_wave"].value;
lfo |= parameters["lfo1_keysync"].value << 4;
sysex.push(lfo);
sysex.push(parameters["lfo1_freq"].value);
lfo = (parameters["lfo1_temposync"].value << 7);
lfo |= parameters["lfo1_timebase"].value;
sysex.push(lfo);
lfo = parameters["lfo2_wave"].value;
lfo |= parameters["lfo2_keysync"].value << 4;
sysex.push(lfo);
sysex.push(parameters["lfo2_freq"].value);
lfo = (parameters["lfo2_temposync"].value << 7);
lfo |= parameters["lfo2_timebase"].value;
sysex.push(lfo);
for (let i = 0; i < 8; i++) {
sysex.push(parameters[`voc_ch${i + 1}_level`].value);
sysex.push(parameters[`voc_ch${i + 1}_level`].value);
}
for (let i = 0; i < 8; i++) {
sysex.push(63 + parameters[`voc_ch${i + 1}_pan`].value);
sysex.push(63 + parameters[`voc_ch${i + 1}_pan`].value);
}
for (let i = 0; i < 16; i++) {
sysex.push(0x7f);
sysex.push(0xff);
sysex.push(0xff);
sysex.push(0x00);
}
return sysex;
}
timbreToSysex(t, sysex, parameters) {
let p = "";
if (t == 2) {
p = "t2_";
}
sysex.push(255);
let assign = parameters[p + "voice_assign"].value << 6;
assign |= (parameters[p + "eg2_reset"].value) << 5;
assign |= (parameters[p + "eg1_reset"].value) << 4;
assign |= (parameters[p + "trig_mode"].value) << 3;
sysex.push(assign);
sysex.push(parameters[p + "unison_detune"].value);
sysex.push(64 + parameters[p + "tune"].value);
sysex.push(64 + parameters[p + "bend_range"].value);
sysex.push(64 + parameters[p + "transpose"].value);
sysex.push(64 + parameters[p + "vibrato"].value);
const wave = parameters[p + "osc1_wave"];
sysex.push(wave.value);
sysex.push(parameters[p + "osc1_control1"].value);
sysex.push(parameters[p + "osc1_control2"].value);
if (wave.value == 5) {
let dwgs = parameters[p + "osc1_control2"].value;
if (dwgs > 64) {
dwgs = 64;
}
sysex.push(dwgs);
}
else {
sysex.push(0);
}
sysex.push(0);
let osc2 = parameters[p + "osc2_wave"].value;
osc2 |= parameters[p + "osc_mod"].value << 4;
sysex.push(osc2);
sysex.push(64 + parameters[p + "osc2_tune"].value);
sysex.push(64 + parameters[p + "osc2_finetune"].value);
sysex.push(parameters[p + "portamento"].value);
sysex.push(parameters[p + "mixer_osc1"].value);
sysex.push(parameters[p + "mixer_osc2"].value);
sysex.push(parameters[p + "mixer_noise"].value);
sysex.push(parameters[p + "filter_type"].value);
sysex.push(para