From e95de910f4e336455a774dd67e4d469fe79a8bd6 Mon Sep 17 00:00:00 2001 From: philipp lang Date: Sat, 15 Mar 2025 17:57:06 +0100 Subject: [PATCH] Add own controller mapping --- Pioneer-DDJ-FLX4_neu-script.js | 832 +++ ....midi.xml => Pioneer-DDJ-FLX4_neu.midi.xml | 5332 +++++++++-------- 2 files changed, 3615 insertions(+), 2549 deletions(-) create mode 100644 Pioneer-DDJ-FLX4_neu-script.js rename Pioneer DDJ-FLX4 NEU.midi.xml => Pioneer-DDJ-FLX4_neu.midi.xml (89%) diff --git a/Pioneer-DDJ-FLX4_neu-script.js b/Pioneer-DDJ-FLX4_neu-script.js new file mode 100644 index 0000000..3c1db2b --- /dev/null +++ b/Pioneer-DDJ-FLX4_neu-script.js @@ -0,0 +1,832 @@ +// Pioneer-DDJ-FLX4-script.js +// **************************************************************************** +// * Mixxx mapping script file for the Pioneer DDJ-FLX4. +// * Mostly adapted from the DDJ-400 mapping script +// * Authors: Warker, nschloe, dj3730, jusko, Robert904 +// **************************************************************************** +// +// Implemented (as per manufacturer's manual): +// * Mixer Section (Faders, EQ, Filter, Gain, Cue) +// * Browsing and loading + Waveform zoom (shift) +// * Jogwheels, Scratching, Bending, Loop adjust +// * Cycle Temporange +// * Beat Sync +// * Hot Cue Mode +// * Beat Loop Mode +// * Beat Jump Mode +// * Sampler Mode +// +// Custom (Mixxx specific mappings): +// * BeatFX: Assigned Effect Unit 1 +// v FX_SELECT Load next effect. +// SHIFT + v FX_SELECT Load previous effect. +// < LEFT Cycle effect focus leftward +// > RIGHT Cycle effect focus rightward +// ON/OFF toggles focused effect slot +// SHIFT + ON/OFF disables all three effect slots. +// +// * 32 beat jump forward & back (Shift + CUE/LOOP CALL arrows) +// * Toggle quantize (Shift + channel cue) +// +// Not implemented (after discussion and trial attempts): +// * Loop Section: +// * -4BEAT auto loop (hacky---prefer a clean way to set a 4 beat loop +// from a previous position on long press) +// +// * CUE/LOOP CALL - memory & delete (complex and not useful. Hot cues are sufficient) +// +// * Secondary pad modes (trial attempts complex and too experimental) +// * Keyboard mode +// * Pad FX1 +// * Pad FX2 +// * Keyshift mode +// +// Not implemented yet (but might be in the future): +// * Smart CFX +// * Smart fader + +var PioneerDDJFLX4 = {}; + +PioneerDDJFLX4.lights = { + beatFx: { + status: 0x94, + data1: 0x47, + }, + shiftBeatFx: { + status: 0x94, + data1: 0x43, + }, + deck1: { + vuMeter: { + status: 0xB0, + data1: 0x02, + }, + playPause: { + status: 0x90, + data1: 0x0B, + }, + shiftPlayPause: { + status: 0x90, + data1: 0x47, + }, + cue: { + status: 0x90, + data1: 0x0C, + }, + shiftCue: { + status: 0x90, + data1: 0x48, + }, + hotcueMode: { + status: 0x90, + data1: 0x1B, + }, + keyboardMode: { + status: 0x90, + data1: 0x69, + }, + padFX1Mode: { + status: 0x90, + data1: 0x1E, + }, + padFX2Mode: { + status: 0x90, + data1: 0x6B, + }, + beatJumpMode: { + status: 0x90, + data1: 0x20, + }, + beatLoopMode: { + status: 0x90, + data1: 0x6D, + }, + samplerMode: { + status: 0x90, + data1: 0x22, + }, + keyShiftMode: { + status: 0x90, + data1: 0x6F, + }, + }, + deck2: { + vuMeter: { + status: 0xB0, + data1: 0x02, + }, + playPause: { + status: 0x91, + data1: 0x0B, + }, + shiftPlayPause: { + status: 0x91, + data1: 0x47, + }, + cue: { + status: 0x91, + data1: 0x0C, + }, + shiftCue: { + status: 0x91, + data1: 0x48, + }, + hotcueMode: { + status: 0x91, + data1: 0x1B, + }, + keyboardMode: { + status: 0x91, + data1: 0x69, + }, + padFX1Mode: { + status: 0x91, + data1: 0x1E, + }, + padFX2Mode: { + status: 0x91, + data1: 0x6B, + }, + beatJumpMode: { + status: 0x91, + data1: 0x20, + }, + beatLoopMode: { + status: 0x91, + data1: 0x6D, + }, + samplerMode: { + status: 0x91, + data1: 0x22, + }, + keyShiftMode: { + status: 0x91, + data1: 0x6F, + }, + }, +}; + +// Store timer IDs +PioneerDDJFLX4.timers = {}; + +// Keep alive timer +PioneerDDJFLX4.sendKeepAlive = function() { + midi.sendSysexMsg([0xF0, 0x00, 0x40, 0x05, 0x00, 0x00, 0x04, 0x05, 0x00, 0x50, 0x02, 0xf7], 12); // This was reverse engineered with Wireshark +}; + +// Jog wheel constants +PioneerDDJFLX4.vinylMode = true; +PioneerDDJFLX4.alpha = 1.0/8; +PioneerDDJFLX4.beta = PioneerDDJFLX4.alpha/32; + +// Multiplier for fast seek through track using SHIFT+JOGWHEEL +PioneerDDJFLX4.fastSeekScale = 150; +PioneerDDJFLX4.bendScale = 0.8; + +PioneerDDJFLX4.tempoRanges = [0.06, 0.10, 0.16, 0.25]; + +PioneerDDJFLX4.shiftButtonDown = [false, false]; + +// Jog wheel loop adjust +PioneerDDJFLX4.loopAdjustIn = [false, false]; +PioneerDDJFLX4.loopAdjustOut = [false, false]; +PioneerDDJFLX4.loopAdjustMultiply = 50; + +// Beatjump pad (beatjump_size values) +PioneerDDJFLX4.beatjumpSizeForPad = { + 0x20: -1, // PAD 1 + 0x21: 1, // PAD 2 + 0x22: -2, // PAD 3 + 0x23: 2, // PAD 4 + 0x24: -4, // PAD 5 + 0x25: 4, // PAD 6 + 0x26: -8, // PAD 7 + 0x27: 8 // PAD 8 +}; + +PioneerDDJFLX4.quickJumpSize = 32; + +// Used for tempo slider +PioneerDDJFLX4.highResMSB = { + "[Channel1]": {}, + "[Channel2]": {} +}; + +PioneerDDJFLX4.trackLoadedLED = function(value, group, _control) { + midi.sendShortMsg( + 0x9F, + group.match(script.channelRegEx)[1] - 1, + value > 0 ? 0x7F : 0x00 + ); +}; + +PioneerDDJFLX4.toggleLight = function(midiIn, active) { + midi.sendShortMsg(midiIn.status, midiIn.data1, active ? 0x7F : 0); +}; + +// +// Init +// + +PioneerDDJFLX4.init = function() { + engine.setValue("[EffectRack1_EffectUnit1]", "show_focus", 1); + + engine.makeConnection("[Channel1]", "vu_meter", PioneerDDJFLX4.vuMeterUpdate); + engine.makeConnection("[Channel2]", "vu_meter", PioneerDDJFLX4.vuMeterUpdate); + + PioneerDDJFLX4.toggleLight(PioneerDDJFLX4.lights.deck1.vuMeter, false); + PioneerDDJFLX4.toggleLight(PioneerDDJFLX4.lights.deck2.vuMeter, false); + + engine.softTakeover("[Channel1]", "rate", true); + engine.softTakeover("[Channel2]", "rate", true); + engine.softTakeover("[EffectRack1_EffectUnit1_Effect1]", "meta", true); + engine.softTakeover("[EffectRack1_EffectUnit1_Effect2]", "meta", true); + engine.softTakeover("[EffectRack1_EffectUnit1_Effect3]", "meta", true); + engine.softTakeover("[EffectRack1_EffectUnit1]", "mix", true); + + const samplerCount = 16; + if (engine.getValue("[App]", "num_samplers") < samplerCount) { + engine.setValue("[App]", "num_samplers", samplerCount); + } + for (let i = 1; i <= samplerCount; ++i) { + engine.makeConnection("[Sampler" + i + "]", "play", PioneerDDJFLX4.samplerPlayOutputCallbackFunction); + } + + engine.makeConnection("[Channel1]", "track_loaded", PioneerDDJFLX4.trackLoadedLED); + engine.makeConnection("[Channel2]", "track_loaded", PioneerDDJFLX4.trackLoadedLED); + + // play the "track loaded" animation on both decks at startup + midi.sendShortMsg(0x9F, 0x00, 0x7F); + midi.sendShortMsg(0x9F, 0x01, 0x7F); + + PioneerDDJFLX4.setLoopButtonLights(0x90, 0x7F); + PioneerDDJFLX4.setLoopButtonLights(0x91, 0x7F); + + engine.makeConnection("[Channel1]", "loop_enabled", PioneerDDJFLX4.loopToggle); + engine.makeConnection("[Channel2]", "loop_enabled", PioneerDDJFLX4.loopToggle); + + for (i = 1; i <= 3; i++) { + engine.makeConnection("[EffectRack1_EffectUnit1_Effect" + i +"]", "enabled", PioneerDDJFLX4.toggleFxLight); + } + engine.makeConnection("[EffectRack1_EffectUnit1]", "focused_effect", PioneerDDJFLX4.toggleFxLight); + + PioneerDDJFLX4.keepAliveTimer = engine.beginTimer(200, PioneerDDJFLX4.sendKeepAlive); + + // query the controller for current control positions on startup + PioneerDDJFLX4.sendKeepAlive(); // the query seems to double as a keep alive message +}; + +// +// Waveform zoom +// + +PioneerDDJFLX4.waveformZoom = function(midichan, control, value, status, group) { + if (value === 0x7f) { + script.triggerControl(group, "waveform_zoom_up", 100); + } else { + script.triggerControl(group, "waveform_zoom_down", 100); + } +}; + +// +// Channel level lights +// + +PioneerDDJFLX4.vuMeterUpdate = function(value, group) { + const newVal = value * 127; + + switch (group) { + case "[Channel1]": + midi.sendShortMsg(0xB0, 0x02, newVal); + break; + + case "[Channel2]": + midi.sendShortMsg(0xB1, 0x02, newVal); + break; + } +}; + +// +// Effects +// + +PioneerDDJFLX4.toggleFxLight = function(_value, _group, _control) { + const enabled = engine.getValue(PioneerDDJFLX4.focusedFxGroup(), "enabled"); + + PioneerDDJFLX4.toggleLight(PioneerDDJFLX4.lights.beatFx, enabled); + PioneerDDJFLX4.toggleLight(PioneerDDJFLX4.lights.shiftBeatFx, enabled); +}; + +PioneerDDJFLX4.focusedFxGroup = function() { + const focusedFx = engine.getValue("[EffectRack1_EffectUnit1]", "focused_effect"); + return "[EffectRack1_EffectUnit1_Effect" + focusedFx + "]"; +}; + +PioneerDDJFLX4.beatFxLevelDepthRotate = function(_channel, _control, value) { + if (PioneerDDJFLX4.shiftButtonDown[0] || PioneerDDJFLX4.shiftButtonDown[1]) { + engine.softTakeoverIgnoreNextValue("[EffectRack1_EffectUnit1]", "mix"); + engine.setParameter(PioneerDDJFLX4.focusedFxGroup(), "meta", value / 0x7F); + } else { + engine.softTakeoverIgnoreNextValue(PioneerDDJFLX4.focusedFxGroup(), "meta"); + engine.setParameter("[EffectRack1_EffectUnit1]", "mix", value / 0x7F); + } +}; + +PioneerDDJFLX4.changeFocusedEffectBy = function(numberOfSteps) { + let focusedEffect = engine.getValue("[EffectRack1_EffectUnit1]", "focused_effect"); + + // Convert to zero-based index + focusedEffect -= 1; + + // Standard Euclidean modulo by use of two plain modulos + const numberOfEffectsPerEffectUnit = 3; + focusedEffect = (((focusedEffect + numberOfSteps) % numberOfEffectsPerEffectUnit) + numberOfEffectsPerEffectUnit) % numberOfEffectsPerEffectUnit; + + // Convert back to one-based index + focusedEffect += 1; + + engine.setValue("[EffectRack1_EffectUnit1]", "focused_effect", focusedEffect); +}; + +PioneerDDJFLX4.beatFxSelectPressed = function(_channel, _control, value) { + if (value === 0) { return; } + + engine.setValue(PioneerDDJFLX4.focusedFxGroup(), "next_effect", value); +}; + +PioneerDDJFLX4.beatFxSelectShiftPressed = function(_channel, _control, value) { + if (value === 0) { return; } + + engine.setValue(PioneerDDJFLX4.focusedFxGroup(), "prev_effect", value); +}; + +PioneerDDJFLX4.beatFxLeftPressed = function(_channel, _control, value) { + if (value === 0) { return; } + + PioneerDDJFLX4.changeFocusedEffectBy(-1); +}; + +PioneerDDJFLX4.beatFxRightPressed = function(_channel, _control, value) { + if (value === 0) { return; } + + PioneerDDJFLX4.changeFocusedEffectBy(1); +}; + +PioneerDDJFLX4.beatFxOnOffPressed = function(_channel, _control, value) { + if (value === 0) { return; } + + const toggleEnabled = !engine.getValue(PioneerDDJFLX4.focusedFxGroup(), "enabled"); + engine.setValue(PioneerDDJFLX4.focusedFxGroup(), "enabled", toggleEnabled); +}; + +PioneerDDJFLX4.beatFxOnOffShiftPressed = function(_channel, _control, value) { + if (value === 0) { return; } + + engine.setParameter("[EffectRack1_EffectUnit1]", "mix", 0); + engine.softTakeoverIgnoreNextValue("[EffectRack1_EffectUnit1]", "mix"); + + for (let i = 1; i <= 3; i++) { + engine.setValue("[EffectRack1_EffectUnit1_Effect" + i + "]", "enabled", 0); + } + PioneerDDJFLX4.toggleLight(PioneerDDJFLX4.lights.beatFx, false); + PioneerDDJFLX4.toggleLight(PioneerDDJFLX4.lights.shiftBeatFx, false); +}; + +PioneerDDJFLX4.beatFxChannel1 = function(_channel, control, value, _status, group) { + let enableChannel = 0; + + if (value === 0x7f) { enableChannel = 1; } + + engine.setValue(group, "group_[Channel1]_enable", enableChannel); +}; + +PioneerDDJFLX4.beatFxChannel2 = function(_channel, control, value, _status, group) { + let enableChannel = 0; + + if (value === 0x7f) { enableChannel = 1; } + + engine.setValue(group, "group_[Channel2]_enable", enableChannel); +}; + +// +// Loop IN/OUT ADJUST +// + +PioneerDDJFLX4.toggleLoopAdjustIn = function(channel, _control, value, _status, group) { + if (value === 0 || engine.getValue(group, "loop_enabled" === 0)) { + return; + } + PioneerDDJFLX4.loopAdjustIn[channel] = !PioneerDDJFLX4.loopAdjustIn[channel]; + PioneerDDJFLX4.loopAdjustOut[channel] = false; +}; + +PioneerDDJFLX4.toggleLoopAdjustOut = function(channel, _control, value, _status, group) { + if (value === 0 || engine.getValue(group, "loop_enabled" === 0)) { + return; + } + PioneerDDJFLX4.loopAdjustOut[channel] = !PioneerDDJFLX4.loopAdjustOut[channel]; + PioneerDDJFLX4.loopAdjustIn[channel] = false; +}; + +// Two signals are sent here so that the light stays lit/unlit in its shift state too +PioneerDDJFLX4.setReloopLight = function(status, value) { + midi.sendShortMsg(status, 0x4D, value); + midi.sendShortMsg(status, 0x50, value); +}; + + +PioneerDDJFLX4.setLoopButtonLights = function(status, value) { + [0x10, 0x11, 0x4E, 0x4C].forEach(function(control) { + midi.sendShortMsg(status, control, value); + }); +}; + +PioneerDDJFLX4.startLoopLightsBlink = function(channel, control, status, group) { + let blink = 0x7F; + + PioneerDDJFLX4.stopLoopLightsBlink(group, control, status); + + PioneerDDJFLX4.timers[group][control] = engine.beginTimer(500, () => { + blink = 0x7F - blink; + + // When adjusting the loop out position, turn the loop in light off + if (PioneerDDJFLX4.loopAdjustOut[channel]) { + midi.sendShortMsg(status, 0x10, 0x00); + midi.sendShortMsg(status, 0x4C, 0x00); + } else { + midi.sendShortMsg(status, 0x10, blink); + midi.sendShortMsg(status, 0x4C, blink); + } + + // When adjusting the loop in position, turn the loop out light off + if (PioneerDDJFLX4.loopAdjustIn[channel]) { + midi.sendShortMsg(status, 0x11, 0x00); + midi.sendShortMsg(status, 0x4E, 0x00); + } else { + midi.sendShortMsg(status, 0x11, blink); + midi.sendShortMsg(status, 0x4E, blink); + } + }); + +}; + +PioneerDDJFLX4.stopLoopLightsBlink = function(group, control, status) { + PioneerDDJFLX4.timers[group] = PioneerDDJFLX4.timers[group] || {}; + + if (PioneerDDJFLX4.timers[group][control] !== undefined) { + engine.stopTimer(PioneerDDJFLX4.timers[group][control]); + } + PioneerDDJFLX4.timers[group][control] = undefined; + PioneerDDJFLX4.setLoopButtonLights(status, 0x7F); +}; + +PioneerDDJFLX4.loopToggle = function(value, group, control) { + const status = group === "[Channel1]" ? 0x90 : 0x91, + channel = group === "[Channel1]" ? 0 : 1; + + PioneerDDJFLX4.setReloopLight(status, value ? 0x7F : 0x00); + + if (value) { + PioneerDDJFLX4.startLoopLightsBlink(channel, control, status, group); + } else { + PioneerDDJFLX4.stopLoopLightsBlink(group, control, status); + PioneerDDJFLX4.loopAdjustIn[channel] = false; + PioneerDDJFLX4.loopAdjustOut[channel] = false; + } +}; + +// +// CUE/LOOP CALL +// + +PioneerDDJFLX4.cueLoopCallLeft = function(_channel, _control, value, _status, group) { + if (value) { + engine.setValue(group, "loop_scale", 0.5); + } +}; + +PioneerDDJFLX4.cueLoopCallRight = function(_channel, _control, value, _status, group) { + if (value) { + engine.setValue(group, "loop_scale", 2.0); + } +}; + +// +// BEAT SYNC +// +// Note that the controller sends different signals for a short press and a long +// press of the same button. +// + +PioneerDDJFLX4.syncPressed = function(channel, control, value, status, group) { + if (engine.getValue(group, "sync_enabled") && value > 0) { + engine.setValue(group, "sync_enabled", 0); + } else { + engine.setValue(group, "beatsync", value); + } +}; + +PioneerDDJFLX4.syncLongPressed = function(channel, control, value, status, group) { + if (value) { + engine.setValue(group, "sync_enabled", 1); + } +}; + +PioneerDDJFLX4.cycleTempoRange = function(_channel, _control, value, _status, group) { + if (value === 0) { return; } // ignore release + + const currRange = engine.getValue(group, "rateRange"); + let idx = 0; + + for (let i = 0; i < this.tempoRanges.length; i++) { + if (currRange === this.tempoRanges[i]) { + // idx get the index of the value in tempoRanges following the currently configured one + // or cycle back to 0 if the current is the last value of the list. + idx = (i + 1) % this.tempoRanges.length; + break; + } + } + engine.setValue(group, "rateRange", this.tempoRanges[idx]); +}; + +// +// Jog wheels +// + +PioneerDDJFLX4.jogTurn = function(channel, _control, value, _status, group) { + const deckNum = channel + 1; + // wheel center at 64; <64 rew >64 fwd + let newVal = value - 64; + + // loop_in / out adjust + const loopEnabled = engine.getValue(group, "loop_enabled"); + if (loopEnabled > 0) { + if (PioneerDDJFLX4.loopAdjustIn[channel]) { + newVal = newVal * PioneerDDJFLX4.loopAdjustMultiply + engine.getValue(group, "loop_start_position"); + engine.setValue(group, "loop_start_position", newVal); + return; + } + if (PioneerDDJFLX4.loopAdjustOut[channel]) { + newVal = newVal * PioneerDDJFLX4.loopAdjustMultiply + engine.getValue(group, "loop_end_position"); + engine.setValue(group, "loop_end_position", newVal); + return; + } + } + + if (engine.isScratching(deckNum)) { + engine.scratchTick(deckNum, newVal); + } else { // fallback + engine.setValue(group, "jog", newVal * this.bendScale); + } +}; + + +PioneerDDJFLX4.jogSearch = function(_channel, _control, value, _status, group) { + const newVal = (value - 64) * PioneerDDJFLX4.fastSeekScale; + engine.setValue(group, "jog", newVal); +}; + +PioneerDDJFLX4.jogTouch = function(channel, _control, value) { + const deckNum = channel + 1; + + // skip while adjusting the loop points + if (PioneerDDJFLX4.loopAdjustIn[channel] || PioneerDDJFLX4.loopAdjustOut[channel]) { + return; + } + + if (value !== 0 && this.vinylMode) { + engine.scratchEnable(deckNum, 720, 33+1/3, this.alpha, this.beta); + } else { + engine.scratchDisable(deckNum); + } +}; + +// +// Shift button +// + +PioneerDDJFLX4.shiftPressed = function(channel, _control, value, _status, _group) { + PioneerDDJFLX4.shiftButtonDown[channel] = value === 0x7F; +}; + + +// +// Tempo sliders +// +// The tempo option in Mixxx's deck preferences determine whether down/up +// increases/decreases the rate. Therefore it must be inverted here so that the +// UI and the control sliders always move in the same direction. +// + +PioneerDDJFLX4.tempoSliderMSB = function(channel, control, value, status, group) { + PioneerDDJFLX4.highResMSB[group].tempoSlider = value; +}; + +PioneerDDJFLX4.tempoSliderLSB = function(channel, control, value, status, group) { + const fullValue = (PioneerDDJFLX4.highResMSB[group].tempoSlider << 7) + value; + + engine.setValue( + group, + "rate", + 1 - (fullValue / 0x2000) + ); +}; + +// +// Beat Jump mode +// +// Note that when we increase/decrease the sizes on the pad buttons, we use the +// value of the first pad (0x21) as an upper/lower limit beyond which we don't +// allow further increasing/decreasing of all the values. +// + +PioneerDDJFLX4.beatjumpPadPressed = function(_channel, control, value, _status, group) { + if (value === 0) { + return; + } + engine.setValue(group, "beatjump_size", Math.abs(PioneerDDJFLX4.beatjumpSizeForPad[control])); + engine.setValue(group, "beatjump", PioneerDDJFLX4.beatjumpSizeForPad[control]); +}; + +PioneerDDJFLX4.increaseBeatjumpSizes = function(_channel, control, value, _status, group) { + if (value === 0 || PioneerDDJFLX4.beatjumpSizeForPad[0x21] * 16 > 16) { + return; + } + Object.keys(PioneerDDJFLX4.beatjumpSizeForPad).forEach(function(pad) { + PioneerDDJFLX4.beatjumpSizeForPad[pad] = PioneerDDJFLX4.beatjumpSizeForPad[pad] * 16; + }); + engine.setValue(group, "beatjump_size", PioneerDDJFLX4.beatjumpSizeForPad[0x21]); +}; + +PioneerDDJFLX4.decreaseBeatjumpSizes = function(_channel, control, value, _status, group) { + if (value === 0 || PioneerDDJFLX4.beatjumpSizeForPad[0x21] / 16 < 1/16) { + return; + } + Object.keys(PioneerDDJFLX4.beatjumpSizeForPad).forEach(function(pad) { + PioneerDDJFLX4.beatjumpSizeForPad[pad] = PioneerDDJFLX4.beatjumpSizeForPad[pad] / 16; + }); + engine.setValue(group, "beatjump_size", PioneerDDJFLX4.beatjumpSizeForPad[0x21]); +}; + +// +// Sampler mode +// + +PioneerDDJFLX4.samplerPlayOutputCallbackFunction = function(value, group, _control) { + if (value === 1) { + const curPad = group.match(script.samplerRegEx)[1]; + let deckIndex = 0; + let padIndex = 0; + + if (curPad >=1 && curPad <= 4) { + deckIndex = 0; + padIndex = curPad - 1; + } else if (curPad >=5 && curPad <= 8) { + deckIndex = 2; + padIndex = curPad - 5; + } else if (curPad >=9 && curPad <= 12) { + deckIndex = 0; + padIndex = curPad - 5; + } else if (curPad >=13 && curPad <= 16) { + deckIndex = 2; + padIndex = curPad - 9; + } + + PioneerDDJFLX4.startSamplerBlink( + 0x97 + deckIndex, + 0x30 + padIndex, + group); + } +}; + +PioneerDDJFLX4.padModeKeyPressed = function(_channel, _control, value, _status, _group) { + const deck = (_status === 0x90 ? PioneerDDJFLX4.lights.deck1 : PioneerDDJFLX4.lights.deck2); + + if (_control === 0x1B) { + PioneerDDJFLX4.toggleLight(deck.hotcueMode, true); + } else if (_control === 0x69) { + PioneerDDJFLX4.toggleLight(deck.keyboardMode, true); + } else if (_control === 0x1E) { + PioneerDDJFLX4.toggleLight(deck.padFX1Mode, true); + } else if (_control === 0x6B) { + PioneerDDJFLX4.toggleLight(deck.padFX2Mode, true); + } else if (_control === 0x20) { + PioneerDDJFLX4.toggleLight(deck.beatJumpMode, true); + } else if (_control === 0x6D) { + PioneerDDJFLX4.toggleLight(deck.beatLoopMode, true); + } else if (_control === 0x22) { + PioneerDDJFLX4.toggleLight(deck.samplerMode, true); + } else if (_control === 0x6F) { + PioneerDDJFLX4.toggleLight(deck.keyShiftMode, true); + } +}; + +PioneerDDJFLX4.samplerPadPressed = function(_channel, _control, value, _status, group) { + if (engine.getValue(group, "track_loaded")) { + engine.setValue(group, "cue_gotoandplay", value); + } else { + engine.setValue(group, "LoadSelectedTrack", value); + } +}; + +PioneerDDJFLX4.samplerPadShiftPressed = function(_channel, _control, value, _status, group) { + if (engine.getValue(group, "play")) { + engine.setValue(group, "cue_gotoandstop", value); + } else if (engine.getValue(group, "track_loaded")) { + engine.setValue(group, "eject", value); + } +}; + +PioneerDDJFLX4.startSamplerBlink = function(channel, control, group) { + let val = 0x7f; + + PioneerDDJFLX4.stopSamplerBlink(channel, control); + PioneerDDJFLX4.timers[channel][control] = engine.beginTimer(250, () => { + val = 0x7f - val; + + // blink the appropriate pad + midi.sendShortMsg(channel, control, val); + // also blink the pad while SHIFT is pressed + midi.sendShortMsg((channel+1), control, val); + + const isPlaying = engine.getValue(group, "play") === 1; + + if (!isPlaying) { + // kill timer + PioneerDDJFLX4.stopSamplerBlink(channel, control); + // set the pad LED to ON + midi.sendShortMsg(channel, control, 0x7f); + // set the pad LED to ON while SHIFT is pressed + midi.sendShortMsg((channel+1), control, 0x7f); + } + }); +}; + +PioneerDDJFLX4.stopSamplerBlink = function(channel, control) { + PioneerDDJFLX4.timers[channel] = PioneerDDJFLX4.timers[channel] || {}; + + if (PioneerDDJFLX4.timers[channel][control] !== undefined) { + engine.stopTimer(PioneerDDJFLX4.timers[channel][control]); + PioneerDDJFLX4.timers[channel][control] = undefined; + } +}; + + +PioneerDDJFLX4.toggleQuantize = function(_channel, _control, value, _status, group) { + if (value) { + script.toggleControl(group, "quantize"); + } +}; + +PioneerDDJFLX4.quickJumpForward = function(_channel, _control, value, _status, group) { + if (value) { + engine.setValue(group, "beatjump", PioneerDDJFLX4.quickJumpSize); + } +}; + +PioneerDDJFLX4.quickJumpBack = function(_channel, _control, value, _status, group) { + if (value) { + engine.setValue(group, "beatjump", -PioneerDDJFLX4.quickJumpSize); + } +}; + +// +// Shutdown +// + +PioneerDDJFLX4.shutdown = function() { + // reset vumeter + PioneerDDJFLX4.toggleLight(PioneerDDJFLX4.lights.deck1.vuMeter, false); + PioneerDDJFLX4.toggleLight(PioneerDDJFLX4.lights.deck2.vuMeter, false); + + // housekeeping + // turn off all Sampler LEDs + for (var i = 0; i <= 7; ++i) { + midi.sendShortMsg(0x97, 0x30 + i, 0x00); // Deck 1 pads + midi.sendShortMsg(0x98, 0x30 + i, 0x00); // Deck 1 pads with SHIFT + midi.sendShortMsg(0x99, 0x30 + i, 0x00); // Deck 2 pads + midi.sendShortMsg(0x9A, 0x30 + i, 0x00); // Deck 2 pads with SHIFT + } + // turn off all Hotcue LEDs + for (i = 0; i <= 7; ++i) { + midi.sendShortMsg(0x97, 0x00 + i, 0x00); // Deck 1 pads + midi.sendShortMsg(0x98, 0x00 + i, 0x00); // Deck 1 pads with SHIFT + midi.sendShortMsg(0x99, 0x00 + i, 0x00); // Deck 2 pads + midi.sendShortMsg(0x9A, 0x00 + i, 0x00); // Deck 2 pads with SHIFT + } + + // turn off loop in and out lights + PioneerDDJFLX4.setLoopButtonLights(0x90, 0x00); + PioneerDDJFLX4.setLoopButtonLights(0x91, 0x00); + + // turn off reloop lights + PioneerDDJFLX4.setReloopLight(0x90, 0x00); + PioneerDDJFLX4.setReloopLight(0x91, 0x00); + + // stop any flashing lights + PioneerDDJFLX4.toggleLight(PioneerDDJFLX4.lights.beatFx, false); + PioneerDDJFLX4.toggleLight(PioneerDDJFLX4.lights.shiftBeatFx, false); + + // stop the keepalive timer + engine.stopTimer(PioneerDDJFLX4.keepAliveTimer); +}; diff --git a/Pioneer DDJ-FLX4 NEU.midi.xml b/Pioneer-DDJ-FLX4_neu.midi.xml similarity index 89% rename from Pioneer DDJ-FLX4 NEU.midi.xml rename to Pioneer-DDJ-FLX4_neu.midi.xml index e1fcbeb..096a048 100644 --- a/Pioneer DDJ-FLX4 NEU.midi.xml +++ b/Pioneer-DDJ-FLX4_neu.midi.xml @@ -1,662 +1,640 @@ - - + + - Pioneer DDJ-FLX4 NEU + Pioneer DDJ-FLX4 (NEW) Robert904 Midi Mapping for the Pioneer DDJ-FLX4 (based on DDJ-400 mapping) + pioneer_ddj_FLX4 https://mixxx.discourse.group/t/pioneer-ddj-flx4 - + + - [Channel1] - hotcue_1_activate - PAD 1 (DECK1) HOT CUE MODE - press - set hotcue - 0x97 - 0x00 + BROWSE - rotate - Scroll tracklist/tree view + [Library] + MoveVertical + 0xB6 + 0x40 - + + + + + BROWSE +SHIFT - Zoom waveform + [Channel1] + PioneerDDJFLX4.waveformZoom + 0xB6 + 0x64 + + - [Channel1] - hotcue_1_clear - PAD 1 +SHIFT (DECK1) HOT CUE MODE - press - delete hotcue - 0x98 - 0x00 + BROWSE - press - Move cursor between track list and tree view + [Library] + MoveFocusForward + 0x96 + 0x41 - + + BROWSE +SHIFT - press - Move cursor between track list and tree view + [Library] + MoveFocusBackward + 0x96 + 0x42 + + + + + + + LOAD (DECK1) - press - Load a Track into Deck 1 + [Channel1] + LoadSelectedTrack + 0x96 + 0x46 + + + + + + + LOAD (DECK2) - press - Load a Track into Deck 2 [Channel2] - hotcue_1_activate - PAD 1 (DECK2) HOT CUE MODE - press - set hotcue - 0x99 - 0x00 + LoadSelectedTrack + 0x96 + 0x47 - - - - - [Channel2] - hotcue_1_clear - PAD 1 +SHIFT (DECK2) HOT CUE MODE - press - delete hotcue - 0x9A - 0x00 - - + + + + + Shift (DECK1) [Channel1] - PioneerDDJFLX4.tempoSliderMSB - TEMPO (DECK1) - fader - Tempo control MSB - 0xB0 - 0x00 + PioneerDDJFLX4.shiftPressed + 0x90 + 0x3F - + + Shift (DECK2) [Channel2] - PioneerDDJFLX4.tempoSliderMSB - TEMPO (DECK2) - fader - Tempo control MSB - 0xB1 - 0x00 + PioneerDDJFLX4.shiftPressed + 0x91 + 0x3F - + + - [Channel1] - hotcue_2_activate - PAD 2 (DECK1) HOT CUE MODE - press - set hotcue - 0x97 - 0x01 - - - - - - [Channel1] - hotcue_2_clear - PAD 2 +SHIFT (DECK1) HOT CUE MODE - press - delete hotcue - 0x98 - 0x01 - - - - - - [Channel2] - hotcue_2_activate - PAD 2 (DECK2) HOT CUE MODE - press - set hotcue - 0x99 - 0x01 - - - - - - [Channel2] - hotcue_2_clear - PAD 2 +SHIFT (DECK2) HOT CUE MODE - press - delete hotcue - 0x9A - 0x01 - - - - - - [Channel1] - hotcue_3_activate - PAD 3 (DECK1) HOT CUE MODE - press - set hotcue - 0x97 - 0x02 - - - - - - [Channel1] - hotcue_3_clear - PAD 3 +SHIFT (DECK1) HOT CUE MODE - press - delete hotcue - 0x98 - 0x02 - - - - - - [Channel2] - hotcue_3_activate - PAD 3 (DECK2) HOT CUE MODE - press - set hotcue - 0x99 - 0x02 - - - - - - [Channel2] - hotcue_3_clear - PAD 3 +SHIFT (DECK2) HOT CUE MODE - press - delete hotcue - 0x9A - 0x02 - - - - - - [EffectRack1_EffectUnit1] - PioneerDDJFLX4.beatFxLevelDepthRotate - BEAT FX LEVEL/DEPTH - rotate (MSB) - Adjust FX Level (mix) and BEAT FX Depth (meta) in the - selected slot - - 0xB4 - 0x02 - - - - - - [Channel1] - hotcue_4_activate - PAD 4 (DECK1) HOT CUE MODE - press - set hotcue - 0x97 - 0x03 - - - - - - [Channel1] - hotcue_4_clear - PAD 4 +SHIFT (DECK1) HOT CUE MODE - press - delete hotcue - 0x98 - 0x03 - - - - - - [Channel2] - hotcue_4_activate - PAD 4 (DECK2) HOT CUE MODE - press - set hotcue - 0x99 - 0x03 - - - - - - [Channel2] - hotcue_4_clear - PAD 4 +SHIFT (DECK2) HOT CUE MODE - press - delete hotcue - 0x9A - 0x03 - - - - - - [Channel1] - hotcue_5_activate - PAD 5(DECK1) HOT CUE MODE - press - set hotcue - 0x97 - 0x04 - - - - - - [Channel1] - hotcue_5_clear - PAD 5 +SHIFT (DECK1) HOT CUE MODE - press - delete hotcue - 0x98 - 0x04 - - - - - - [Channel2] - hotcue_5_activate - PAD 5 (DECK2) HOT CUE MODE - press - set hotcue - 0x99 - 0x04 - - - - - - [Channel2] - hotcue_5_clear - PAD 5 +SHIFT (DECK2) HOT CUE MODE - press - delete hotcue - 0x9A - 0x04 - - - - - - [Channel1] - pregain - TRIM - rotate - 0xB0 - 0x04 - - - - - - [Channel2] - pregain - TRIM - rotate - 0xB1 - 0x04 - - - - - - [Channel1] - hotcue_6_activate - PAD 6 (DECK1) HOT CUE MODE - press - set hotcue - 0x97 - 0x05 - - - - - - [Channel1] - hotcue_6_clear - PAD 6 +SHIFT (DECK1) HOT CUE MODE - press - delete hotcue - 0x98 - 0x05 - - - - - - [Channel2] - hotcue_6_activate - PAD 6 (DECK2) HOT CUE MODE - press - set hotcue - 0x99 - 0x05 - - - - - - [Channel2] - hotcue_6_clear - PAD 6 +SHIFT (DECK2) HOT CUE MODE - press - delete hotcue - 0x9A - 0x05 - - - - - - [Channel1] - hotcue_7_activate - PAD 7 (DECK1) HOT CUE MODE - press - set hotcue - 0x97 - 0x06 - - - - - - [Channel1] - hotcue_7_clear - PAD 7 +SHIFT (DECK1) HOT CUE MODE - press - delete hotcue - 0x98 - 0x06 - - - - - - [Channel2] - hotcue_7_activate - PAD 7 (DECK2) HOT CUE MODE - press - set hotcue - 0x99 - 0x06 - - - - - - [Channel2] - hotcue_7_clear - PAD 7 +SHIFT (DECK2) HOT CUE MODE - press - delete hotcue - 0x9A - 0x06 - - - - - - [Channel1] - hotcue_8_activate - PAD 8 (DECK1) HOT CUE MODE - press - set hotcue - 0x97 - 0x07 - - - - - - [Channel1] - hotcue_8_clear - PAD 8 +SHIFT (DECK1) HOT CUE MODE - press - delete hotcue - 0x98 - 0x07 - - - - - - [Channel2] - hotcue_8_activate - PAD 8 (DECK2) HOT CUE MODE - press - set hotcue - 0x99 - 0x07 - - - - - - [Channel2] - hotcue_8_clear - PAD 8 +SHIFT (DECK2) HOT CUE MODE - press - delete hotcue - 0x9A - 0x07 - - - - - - [EqualizerRack1_[Channel1]_Effect1] - parameter3 - EQ HI - rotate - 0xB0 - 0x07 - - - - - - [EqualizerRack1_[Channel2]_Effect1] - parameter3 - EQ HI - rotate - 0xB1 - 0x07 - - - - - - [Channel1] - play PLAY/PAUSE (DECK1) - press - Play/Pause + [Channel1] + play 0x90 0x0B - + + PLAY/PAUSE +SHIFT (DECK1) - press - Reverse playback in Slip Mode while held (Censor) + [Channel1] + reverseroll + 0x90 + 0x0E + + + + + + PLAY/PAUSE (DECK2) - press - Play/Pause [Channel2] play - PLAY/PAUSE (DECK2) - press - Play/Pause 0x91 0x0B - + - [EqualizerRack1_[Channel1]_Effect1] - parameter2 - EQ MID - rotate - 0xB0 - 0x0B - - - - - - [EqualizerRack1_[Channel2]_Effect1] - parameter2 - EQ MID - rotate - 0xB1 - 0x0B - - - - - - [Channel1] - cue_default - CUE (DECK1) - press - Set/Call Cue, Back Cue - 0x90 - 0x0C - - - - - - [Channel2] - cue_default - CUE (DECK2) - press - Set/Call Cue, Back Cue - 0x91 - 0x0C - - - - - - [Master] - headMix - HEADPHONES MIXING - rotate - Monitor Balance - 0xB6 - 0x0C - - - - - - [Channel1] - reverseroll - PLAY/PAUSE +SHIFT (DECK1) - press - Reverse playback in Slip Mode while held (Censor) - 0x90 - 0x0E - - - - - - [Channel2] - reverseroll PLAY/PAUSE +SHIFT (DECK2) - press - Reverse playback in Slip Mode while held (Censor) + [Channel2] + reverseroll 0x91 0x0E - - - - - [EqualizerRack1_[Channel1]_Effect1] - parameter1 - EQ LOW - rotate - 0xB0 - 0x0F - - - - - - [EqualizerRack1_[Channel2]_Effect1] - parameter1 - EQ LOW - rotate - 0xB1 - 0x0F - - + + + CUE (DECK1) - press - Set/Call Cue, Back Cue [Channel1] - loop_in + cue_default + 0x90 + 0x0C + + + + + + CUE +SHIFT (DECK1) - press - Jump to track start + [Channel1] + start_play + 0x90 + 0x48 + + + + + + CUE (DECK2) - press - Set/Call Cue, Back Cue + [Channel2] + cue_default + 0x91 + 0x0C + + + + + + CUE +SHIFT (DECK2) - press - Jump to track start + [Channel2] + start_play + 0x91 + 0x48 + + + + + + + JOG DIAL PLATTER Vinyl mode On (DECK1) - rotate - Scratch + [Channel1] + PioneerDDJFLX4.jogTurn + 0xB0 + 0x22 + + + + + + JOG DIAL PLATTER Vinyl mode Off (DECK1) - rotate - Pitch bend + [Channel1] + PioneerDDJFLX4.jogTurn + 0xB0 + 0x23 + + + + + + JOG DIAL PLATTER +SHIFT (DECK1) - rotate - Search (Fast Pitch bend) + [Channel1] + PioneerDDJFLX4.jogSearch + 0xB0 + 0x29 + + + + + + JOG DIAL PLATTER (DECK1) - touch - enable (on touch) / disable (on release) Scratching/Pitch + bend + + [Channel1] + PioneerDDJFLX4.jogTouch + 0x90 + 0x36 + + + + + + JOG DIAL PLATTER +SHIFT (DECK1) - touch - enable (on touch) / disable (on release) highspeed + Pitch bend + + [Channel1] + PioneerDDJFLX4.jogTouch + 0x90 + 0x67 + + + + + + JOG DIAL SIDE (DECK1) - rotate - Pitch bend + [Channel1] + PioneerDDJFLX4.jogTurn + 0xB0 + 0x21 + + + + + + + JOG DIAL PLATTER Vinyl mode On (DECK2) - rotate - Scratch + [Channel2] + PioneerDDJFLX4.jogTurn + 0xB1 + 0x22 + + + + + + JOG DIAL PLATTER Vinyl mode Off (DECK2) - rotate - Pitch bend + [Channel2] + PioneerDDJFLX4.jogTurn + 0xB1 + 0x23 + + + + + + JOG DIAL PLATTER +SHIFT (DECK2) - rotate - Search (Fast Pitch bend) + [Channel2] + PioneerDDJFLX4.jogSearch + 0xB1 + 0x29 + + + + + + JOG DIAL PLATTER (DECK2) - touch - enable (on touch) / disable (on release) Scratching/Pitch + bend + + [Channel2] + PioneerDDJFLX4.jogTouch + 0x91 + 0x36 + + + + + + JOG DIAL PLATTER +SHIFT (DECK2) - touch - enable (on touch) / disable (on release) highspeed + Pitch bend + + [Channel2] + PioneerDDJFLX4.jogTouch + 0x91 + 0x67 + + + + + + JOG DIAL SIDE (DECK2) - rotate - Pitch bend + [Channel2] + PioneerDDJFLX4.jogTurn + 0xB1 + 0x21 + + + + + + + TEMPO (DECK1) - fader - Tempo control LSB + [Channel1] + PioneerDDJFLX4.tempoSliderLSB + 0xB0 + 0x20 + + + + + + TEMPO (DECK1) - fader - Tempo control MSB + [Channel1] + PioneerDDJFLX4.tempoSliderMSB + 0xB0 + 0x00 + + + + + + TEMPO (DECK2) - fader - Tempo control LSB + [Channel2] + PioneerDDJFLX4.tempoSliderLSB + 0xB1 + 0x20 + + + + + + TEMPO (DECK2) - fader - Tempo control MSB + [Channel2] + PioneerDDJFLX4.tempoSliderMSB + 0xB1 + 0x00 + + + + + + + BEAT SYNC (DECK1) - press - Beat Sync to Master deck + [Channel1] + PioneerDDJFLX4.syncPressed + 0x90 + 0x58 + + + + + + BEAT SYNC LONG PRESS (DECK1) - press - Set as Master deck + [Channel1] + PioneerDDJFLX4.syncLongPressed + 0x90 + 0x5C + + + + + + BEAT SYNC +SHIFT (DECK1) - press - change Tempo range + [Channel1] + PioneerDDJFLX4.cycleTempoRange + 0x90 + 0x60 + + + + + + + BEAT SYNC (DECK2) - press - Beat Sync to Master deck + [Channel2] + PioneerDDJFLX4.syncPressed + 0x91 + 0x58 + + + + + + BEAT SYNC LONG PRESS (DECK2) - press - Set as Master deck + [Channel2] + PioneerDDJFLX4.syncLongPressed + 0x91 + 0x5C + + + + + + BEAT SYNC +SHIFT (DECK2) - press - change Tempo range + [Channel2] + PioneerDDJFLX4.cycleTempoRange + 0x91 + 0x60 + + + + + + LOOP IN/4 BEAT (DECK1) - press - Set loop in + [Channel1] + loop_in 0x90 0x10 - + + + LOOP IN/4 BEAT (DECK2) - press - Set loop in [Channel2] loop_in - LOOP IN/4 BEAT (DECK2) - press - Set loop in 0x91 0x10 - + + - [EffectRack1_EffectUnit1] - PioneerDDJFLX4.beatFxChannel1 - BEAT FX CH SELECT CH1 - slide - Select FX on DECK 1 - 0x94 - 0x10 - - - - - - [Channel1] - loop_out LOOP OUT (DECK1) - press - Set loop out + [Channel1] + loop_out 0x90 0x11 - + + LOOP OUT (DECK2) - press - Set loop out [Channel2] loop_out - LOOP OUT (DECK2) - press - Set loop out 0x91 0x11 - - - - - [EffectRack1_EffectUnit1] - PioneerDDJFLX4.beatFxChannel2 - BEAT FX CH SELECT CH2 - slide - Select FX on DECK 2 - 0x95 - 0x11 - - + + + RELOOP/EXIT (DECK1) - press - (loop off) Reloop, (loop on) Loop exit [Channel1] - volume - CHANNELFADER - slider - 0xB0 - 0x13 + reloop_toggle + 0x90 + 0x4D - + + RELOOP/EXIT (DECK2) - press - (loop off) Reloop, (loop on) Loop exit [Channel2] - volume - CHANNELFADER - slider - 0xB1 - 0x13 - - - - - - [QuickEffectRack1_[Channel1]] - super1 - FILTER CH1 - rotate - Filter Effect Knob - 0xB6 - 0x17 - - - - - - [QuickEffectRack1_[Channel2]] - super1 - FILTER CH2 - rotate - Filter Effect Knob - 0xB6 - 0x18 - - - - - - [PadMode] - PioneerDDJFLX4.padModeKeyPressed - HOT CUE MODE (DECK1) - press - set hotcue mode - 0x90 - 0x1B - - - - - - [PadMode] - PioneerDDJFLX4.padModeKeyPressed - HOT CUE MODE (DECK2) - press - set hotcue mode + reloop_toggle 0x91 - 0x1B + 0x4D - + + - [PadMode] - PioneerDDJFLX4.padModeKeyPressed - PAD FX1 MODE (DECK1) - press - set pad fx1 mode + RELOOP/EXIT +SHIFT (DECK1) - press - Reloop and stop + [Channel1] + reloop_andstop 0x90 - 0x1E + 0x50 - + - [PadMode] - PioneerDDJFLX4.padModeKeyPressed - PAD FX1 MODE (DECK2) - press - set pad fx1 mode + RELOOP/EXIT +SHIFT (DECK2) - press - Reloop and stop + [Channel2] + reloop_andstop 0x91 - 0x1E + 0x50 - + + + + + + SHIFT + LOOP IN (DECK1) - Loop in adjust (using jog wheel) + [Channel1] + PioneerDDJFLX4.toggleLoopAdjustIn + 0x90 + 0x4C + + + SHIFT + LOOP IN (DECK2) - Loop in adjust (using jog wheel) + [Channel2] + PioneerDDJFLX4.toggleLoopAdjustIn + 0x91 + 0x4C + + + + + + + SHIFT + LOOP OUT (DECK1) - Loop out adjust (using jog wheel) + [Channel1] + PioneerDDJFLX4.toggleLoopAdjustOut + 0x90 + 0x4E + + + + + + SHIFT + LOOP OUT (DECK2) - Loop out adjust (using jog wheel) + [Channel2] + PioneerDDJFLX4.toggleLoopAdjustOut + 0x91 + 0x4E + + + + + + + CUE/LOOP CALL LEFT (DECK1) - press - half active loop + [Channel1] + PioneerDDJFLX4.cueLoopCallLeft + 0x90 + 0x51 + + + + + + CUE/LOOP CALL LEFT + SHIFT (DECK1) - press - quick jump back + [Channel1] + PioneerDDJFLX4.quickJumpBack + 0x90 + 0x3E + + + + + + + CUE/LOOP CALL LEFT (DECK2) - press - half active loop + [Channel2] + PioneerDDJFLX4.cueLoopCallLeft + 0x91 + 0x51 + + + + + + CUE/LOOP CALL LEFT + SHIFT (DECK2) - press - quick jump back + [Channel2] + PioneerDDJFLX4.quickJumpBack + 0x91 + 0x3E + + + + + + + CUE/LOOP CALL LEFT (DECK1) - press - double active loop + [Channel1] + PioneerDDJFLX4.cueLoopCallRight + 0x90 + 0x53 + + + + + + CUE/LOOP CALL RIGHT + SHIFT (DECK1) - press - quick jump forwards + [Channel1] + PioneerDDJFLX4.quickJumpForward + 0x90 + 0x3D + + + + + + + CUE/LOOP CALL LEFT (DECK2) - press - double active loop + [Channel2] + PioneerDDJFLX4.cueLoopCallRight + 0x91 + 0x53 + + + + + + CUE/LOOP CALL RIGHT + SHIFT (DECK2) - press - quick jump forwards + [Channel2] + PioneerDDJFLX4.quickJumpForward + 0x91 + 0x3D + + + + + + + + + CROSSFADER - slider [Master] crossfader - CROSSFADER - slider 0xB6 0x1F @@ -664,219 +642,82 @@ - [PadMode] - PioneerDDJFLX4.padModeKeyPressed - BEAT JUMP MODE (DECK1) - press - set beat jump mode + CROSSFADER - slider + [Master] + crossfader + 0xB6 + 0x3F + + + + + + + CHANNELFADER - slider + [Channel1] + volume + 0xB0 + 0x33 + + + + + + CHANNELFADER - slider + [Channel1] + volume + 0xB0 + 0x13 + + + + + + CHANNELFADER - slider + [Channel2] + volume + 0xB1 + 0x33 + + + + + + CHANNELFADER - slider + [Channel2] + volume + 0xB1 + 0x13 + + + + + + + Shift + Left CUE - Toggle quantize on/off (Deck1) + [Channel1] + PioneerDDJFLX4.toggleQuantize 0x90 - 0x20 + 0x68 - + - [PadMode] - PioneerDDJFLX4.padModeKeyPressed - BEAT JUMP MODE (DECK2) - press - set beat jump mode + Shift + Right CUE - Toggle quantize on/off (Deck2) + [Channel2] + PioneerDDJFLX4.toggleQuantize 0x91 - 0x20 + 0x68 - - - - - [Channel1] - PioneerDDJFLX4.beatjumpPadPressed - PAD 1 (DECK1) BEAT JUMP MODE - press - Jump 1 Beat backwards - 0x97 - 0x20 - - - - - - [Channel2] - PioneerDDJFLX4.beatjumpPadPressed - PAD 1 (DECK2) BEAT JUMP MODE - press - Jump 1 Beat backwards - 0x99 - 0x20 - - - - - - [Channel1] - PioneerDDJFLX4.tempoSliderLSB - TEMPO (DECK1) - fader - Tempo control LSB - 0xB0 - 0x20 - - - - - - [Channel2] - PioneerDDJFLX4.tempoSliderLSB - TEMPO (DECK2) - fader - Tempo control LSB - 0xB1 - 0x20 - - - - - - [Channel1] - PioneerDDJFLX4.beatjumpPadPressed - PAD 2 (DECK1) BEAT JUMP MODE - press - Jump 1 Beat forwards - 0x97 - 0x21 - - - - - - [Channel2] - PioneerDDJFLX4.beatjumpPadPressed - PAD 2 (DECK2) BEAT JUMP MODE - press - Jump 1 Beat forwards - 0x99 - 0x21 - - - - - - [Channel2] - PioneerDDJFLX4.jogTurn - JOG DIAL SIDE (DECK2) - rotate - Pitch bend - 0xB1 - 0x21 - - - - - - [PadMode] - PioneerDDJFLX4.padModeKeyPressed - SAMPLER MODE (DECK1) - press - set sampler mode - 0x90 - 0x22 - - - - - - [PadMode] - PioneerDDJFLX4.padModeKeyPressed - SAMPLER MODE (DECK2) - press - set sampler mode - 0x91 - 0x22 - - - - - - [Channel1] - PioneerDDJFLX4.beatjumpPadPressed - PAD 3 (DECK1) BEAT JUMP MODE - press - Jump 2 Beats backwards - 0x97 - 0x22 - - - - - - [Channel2] - PioneerDDJFLX4.beatjumpPadPressed - PAD 3 (DECK2) BEAT JUMP MODE - press - Jump 2 Beats backwards - 0x99 - 0x22 - - - - - - [Channel1] - PioneerDDJFLX4.jogTurn - JOG DIAL PLATTER Vinyl mode On (DECK1) - rotate - Scratch - 0xB0 - 0x22 - - - - - - [Channel2] - PioneerDDJFLX4.jogTurn - JOG DIAL PLATTER Vinyl mode On (DECK2) - rotate - Scratch - 0xB1 - 0x22 - - - - - - [Channel1] - PioneerDDJFLX4.beatjumpPadPressed - PAD 4 (DECK1) BEAT JUMP MODE - press - Jump 2 Beats forwards - 0x97 - 0x23 - - - - - - [Channel2] - PioneerDDJFLX4.beatjumpPadPressed - PAD 4 (DECK2) BEAT JUMP MODE - press - Jump 2 Beats forwards - 0x99 - 0x23 - - - - - - [Channel1] - PioneerDDJFLX4.jogTurn - JOG DIAL PLATTER Vinyl mode Off (DECK1) - rotate - Pitch bend - 0xB0 - 0x23 - - - - - - [Channel2] - PioneerDDJFLX4.jogTurn - JOG DIAL PLATTER Vinyl mode Off (DECK2) - rotate - Pitch bend - 0xB1 - 0x23 - - - - - - [Channel1] - PioneerDDJFLX4.beatjumpPadPressed - PAD 5 (DECK1) BEAT JUMP MODE - press - Jump 4 Beats backwards - 0x97 - 0x24 - - - - - - [Channel2] - PioneerDDJFLX4.beatjumpPadPressed - PAD 5 (DECK2) BEAT JUMP MODE - press - Jump 4 Beats backwards - 0x99 - 0x24 - - + + + TRIM - rotate [Channel1] pregain - TRIM - rotate 0xB0 0x24 @@ -884,9 +725,19 @@ + TRIM - rotate + [Channel1] + pregain + 0xB0 + 0x04 + + + + + + TRIM - rotate [Channel2] pregain - TRIM - rotate 0xB1 0x24 @@ -894,109 +745,21 @@ - [Channel1] - PioneerDDJFLX4.beatjumpPadPressed - PAD 6 (DECK1) BEAT JUMP MODE - press - Jump 4 Beats forwards - 0x97 - 0x25 - - - - - + TRIM - rotate [Channel2] - PioneerDDJFLX4.beatjumpPadPressed - PAD 6 (DECK2) BEAT JUMP MODE - press - Jump 4 Beats forwards - 0x99 - 0x25 + pregain + 0xB1 + 0x04 - - - - - [Channel1] - PioneerDDJFLX4.beatjumpPadPressed - PAD 7 (DECK1) BEAT JUMP MODE - press - Jump 8 Beats backwards - 0x97 - 0x26 - - - - - - [Channel1] - PioneerDDJFLX4.decreaseBeatjumpSizes - PAD 7 (DECK1) +SHift BEAT JUMP MODE - press - decrease Beatjump by a factor of 16 - 0x98 - 0x26 - - - - - - [Channel2] - PioneerDDJFLX4.beatjumpPadPressed - PAD 7 (DECK2) BEAT JUMP MODE - press - Jump 8 Beats backwards - 0x99 - 0x26 - - - - - - [Channel2] - PioneerDDJFLX4.decreaseBeatjumpSizes - PAD 7 (DECK2) +Shift BEAT JUMP MODE - press - decrease Beatjump by a factor of 16 - 0x9A - 0x26 - - - - - - [Channel1] - PioneerDDJFLX4.beatjumpPadPressed - PAD 8 (DECK1) BEAT JUMP MODE - press - Jump 8 Beats forwards - 0x97 - 0x27 - - - - - - [Channel1] - PioneerDDJFLX4.increaseBeatjumpSizes - PAD 8 (DECK1) +SHift BEAT JUMP MODE - press - increase Beatjump by a factor of 16 - 0x98 - 0x27 - - - - - - [Channel2] - PioneerDDJFLX4.beatjumpPadPressed - PAD 8 (DECK2) BEAT JUMP MODE - press - Jump 8 Beats forwards - 0x99 - 0x27 - - - - - - [Channel2] - PioneerDDJFLX4.increaseBeatjumpSizes - PAD 8 (DECK2) +Shift BEAT JUMP MODE - press - increase Beatjump by a factor of 16 - 0x9A - 0x27 - - + + + + EQ HI - rotate [EqualizerRack1_[Channel1]_Effect1] parameter3 - EQ HI - rotate 0xB0 0x27 @@ -1004,39 +767,9 @@ - [EqualizerRack1_[Channel2]_Effect1] - parameter3 - EQ HI - rotate - 0xB1 - 0x27 - - - - - - [Channel1] - PioneerDDJFLX4.jogSearch - JOG DIAL PLATTER +SHIFT (DECK1) - rotate - Search (Fast Pitch bend) - 0xB0 - 0x29 - - - - - - [Channel2] - PioneerDDJFLX4.jogSearch - JOG DIAL PLATTER +SHIFT (DECK2) - rotate - Search (Fast Pitch bend) - 0xB1 - 0x29 - - - - - + EQ MID - rotate [EqualizerRack1_[Channel1]_Effect1] parameter2 - EQ MID - rotate 0xB0 0x2B @@ -1044,9 +777,60 @@ + EQ LOW - rotate + [EqualizerRack1_[Channel1]_Effect1] + parameter1 + 0xB0 + 0x2F + + + + + + EQ HI - rotate + [EqualizerRack1_[Channel1]_Effect1] + parameter3 + 0xB0 + 0x07 + + + + + + EQ MID - rotate + [EqualizerRack1_[Channel1]_Effect1] + parameter2 + 0xB0 + 0x0B + + + + + + EQ LOW - rotate + [EqualizerRack1_[Channel1]_Effect1] + parameter1 + 0xB0 + 0x0F + + + + + + + EQ HI - rotate + [EqualizerRack1_[Channel2]_Effect1] + parameter3 + 0xB1 + 0x27 + + + + + + EQ MID - rotate [EqualizerRack1_[Channel2]_Effect1] parameter2 - EQ MID - rotate 0xB1 0x2B @@ -1054,9 +838,71 @@ + EQ LOW - rotate + [EqualizerRack1_[Channel2]_Effect1] + parameter1 + 0xB1 + 0x2F + + + + + + EQ HI - rotate + [EqualizerRack1_[Channel2]_Effect1] + parameter3 + 0xB1 + 0x07 + + + + + + EQ MID - rotate + [EqualizerRack1_[Channel2]_Effect1] + parameter2 + 0xB1 + 0x0B + + + + + + EQ LOW - rotate + [EqualizerRack1_[Channel2]_Effect1] + parameter1 + 0xB1 + 0x0F + + + + + + + CUE Channel - press - toggle Headphone Cue + [Channel1] + pfl + 0x90 + 0x54 + + + + + + CUE Channel - press - toggle Headphone Cue + [Channel2] + pfl + 0x91 + 0x54 + + + + + + + HEADPHONES MIXING - rotate - Monitor Balance [Master] headMix - HEADPHONES MIXING - rotate - Monitor Balance 0xB6 0x2C @@ -1064,393 +910,32 @@ - [EqualizerRack1_[Channel1]_Effect1] - parameter1 - EQ LOW - rotate - 0xB0 - 0x2F + HEADPHONES MIXING - rotate - Monitor Balance + [Master] + headMix + 0xB6 + 0x0C - - - - - [EqualizerRack1_[Channel2]_Effect1] - parameter1 - EQ LOW - rotate - 0xB1 - 0x2F - - - - - - [Sampler1] - PioneerDDJFLX4.samplerPadPressed - PAD 1 (LEFT) SAMPLE MODE - press - Play Sample or Load Track - 0x97 - 0x30 - - - - - - [Sampler1] - PioneerDDJFLX4.samplerPadShiftPressed - PAD 1 (LEFT)+SHIFT SAMPLE MODE - press - Stop Playback or Eject Track - 0x98 - 0x30 - - - - - - [Sampler5] - PioneerDDJFLX4.samplerPadPressed - PAD 1 (RIGHT) SAMPLE MODE - press - Play Sample or Load Track - 0x99 - 0x30 - - - - - - [Sampler5] - PioneerDDJFLX4.samplerPadShiftPressed - PAD 1 (Right)+SHIFT SAMPLE MODE - press - Stop Playback or Eject Track - 0x9A - 0x30 - - - - - - [Sampler2] - PioneerDDJFLX4.samplerPadPressed - PAD 2 (LEFT) SAMPLE MODE - press - Play Sample or Load Track - 0x97 - 0x31 - - - - - - [Sampler2] - PioneerDDJFLX4.samplerPadShiftPressed - PAD 2 (LEFT)+SHIFT SAMPLE MODE - press - Stop Playback or Eject Track - 0x98 - 0x31 - - - - - - [Sampler6] - PioneerDDJFLX4.samplerPadPressed - PAD 2 (RIGHT) SAMPLE MODE - press - Play Sample or Load Track - 0x99 - 0x31 - - - - - - [Sampler6] - PioneerDDJFLX4.samplerPadShiftPressed - PAD 2 (Right)+SHIFT SAMPLE MODE - press - Stop Playback or Eject Track - 0x9A - 0x31 - - - - - - [Sampler3] - PioneerDDJFLX4.samplerPadPressed - PAD 3 (LEFT) SAMPLE MODE - press - Play Sample or Load Track - 0x97 - 0x32 - - - - - - [Sampler3] - PioneerDDJFLX4.samplerPadShiftPressed - PAD 3 (LEFT)+SHIFT SAMPLE MODE - press - Stop Playback or Eject Track - 0x98 - 0x32 - - - - - - [Sampler7] - PioneerDDJFLX4.samplerPadPressed - PAD 3 (RIGHT) SAMPLE MODE - press - Play Sample or Load Track - 0x99 - 0x32 - - - - - - [Sampler7] - PioneerDDJFLX4.samplerPadShiftPressed - PAD 3 (Right)+SHIFT SAMPLE MODE - press - Stop Playback or Eject Track - 0x9A - 0x32 - - - - - - [Sampler4] - PioneerDDJFLX4.samplerPadPressed - PAD 4 (LEFT) SAMPLE MODE - press - Play Sample or Load Track - 0x97 - 0x33 - - - - - - [Sampler4] - PioneerDDJFLX4.samplerPadShiftPressed - PAD 4 (LEFT)+SHIFT SAMPLE MODE - press - Stop Playback or Eject Track - 0x98 - 0x33 - - - - - - [Sampler8] - PioneerDDJFLX4.samplerPadPressed - PAD 4 (RIGHT) SAMPLE MODE - press - Play Sample or Load Track - 0x99 - 0x33 - - - - - - [Sampler8] - PioneerDDJFLX4.samplerPadShiftPressed - PAD 4 (Right)+SHIFT SAMPLE MODE - press - Stop Playback or Eject Track - 0x9A - 0x33 - - - - - - [Channel1] - volume - CHANNELFADER - slider - 0xB0 - 0x33 - - - - - - [Channel2] - volume - CHANNELFADER - slider - 0xB1 - 0x33 - - - - - - [Sampler9] - PioneerDDJFLX4.samplerPadPressed - PAD 5 (LEFT) SAMPLE MODE - press - Play Sample or Load Track - 0x97 - 0x34 - - - - - - [Sampler9] - PioneerDDJFLX4.samplerPadShiftPressed - PAD 5 (LEFT)+SHIFT SAMPLE MODE - press - Stop Playback or Eject Track - 0x98 - 0x34 - - - - - - [Sampler13] - PioneerDDJFLX4.samplerPadPressed - PAD 5 (RIGHT) SAMPLE MODE - press - Play Sample or Load Track - 0x99 - 0x34 - - - - - - [Sampler13] - PioneerDDJFLX4.samplerPadShiftPressed - PAD 5 (Right)+SHIFT SAMPLE MODE - press - Stop Playback or Eject Track - 0x9A - 0x34 - - - - - - [Sampler10] - PioneerDDJFLX4.samplerPadPressed - PAD 6 (LEFT) SAMPLE MODE - press - Play Sample or Load Track - 0x97 - 0x35 - - - - - - [Sampler10] - PioneerDDJFLX4.samplerPadShiftPressed - PAD 6 (LEFT)+SHIFT SAMPLE MODE - press - Stop Playback or Eject Track - 0x98 - 0x35 - - - - - - [Sampler14] - PioneerDDJFLX4.samplerPadPressed - PAD 6 (RIGHT) SAMPLE MODE - press - Play Sample or Load Track - 0x99 - 0x35 - - - - - - [Sampler14] - PioneerDDJFLX4.samplerPadShiftPressed - PAD 6 (Right)+SHIFT SAMPLE MODE - press - Stop Playback or Eject Track - 0x9A - 0x35 - - - - - - [Channel1] - PioneerDDJFLX4.jogTouch - JOG DIAL PLATTER (DECK1) - touch - enable (on touch) / disable (on release) Scratching/Pitch - bend - - 0x90 - 0x36 - - - - - - [Channel2] - PioneerDDJFLX4.jogTouch - JOG DIAL PLATTER (DECK2) - touch - enable (on touch) / disable (on release) Scratching/Pitch - bend - - 0x91 - 0x36 - - - - - - [Sampler11] - PioneerDDJFLX4.samplerPadPressed - PAD 7 (LEFT) SAMPLE MODE - press - Play Sample or Load Track - 0x97 - 0x36 - - - - - - [Sampler11] - PioneerDDJFLX4.samplerPadShiftPressed - PAD 7 (LEFT)+SHIFT SAMPLE MODE - press - Stop Playback or Eject Track - 0x98 - 0x36 - - - - - - [Sampler15] - PioneerDDJFLX4.samplerPadPressed - PAD 7 (RIGHT) SAMPLE MODE - press - Play Sample or Load Track - 0x99 - 0x36 - - - - - - [Sampler15] - PioneerDDJFLX4.samplerPadShiftPressed - PAD 7 (Right)+SHIFT SAMPLE MODE - press - Stop Playback or Eject Track - 0x9A - 0x36 - - - - - - [Sampler12] - PioneerDDJFLX4.samplerPadPressed - PAD 8 (LEFT) SAMPLE MODE - press - Play Sample or Load Track - 0x97 - 0x37 - - - - - - [Sampler12] - PioneerDDJFLX4.samplerPadShiftPressed - PAD 8 (LEFT)+SHIFT SAMPLE MODE - press - Stop Playback or Eject Track - 0x98 - 0x37 - - - - - - [Sampler16] - PioneerDDJFLX4.samplerPadPressed - PAD 8 (RIGHT) SAMPLE MODE - press - Play Sample or Load Track - 0x99 - 0x37 - - - - - - [Sampler16] - PioneerDDJFLX4.samplerPadShiftPressed - PAD 8 (Right)+SHIFT SAMPLE MODE - press - Stop Playback or Eject Track - 0x9A - 0x37 - - + + + + + FILTER CH1 - rotate - Filter Effect Knob [QuickEffectRack1_[Channel1]] super1 + 0xB6 + 0x17 + + + + + FILTER CH1 - rotate - Filter Effect Knob + [QuickEffectRack1_[Channel1]] + super1 0xB6 0x37 @@ -1458,1128 +943,1372 @@ + FILTER CH2 - rotate - Filter Effect Knob [QuickEffectRack1_[Channel2]] super1 + 0xB6 + 0x18 + + + + + FILTER CH2 - rotate - Filter Effect Knob + [QuickEffectRack1_[Channel2]] + super1 0xB6 0x38 + + + - [Channel1] - PioneerDDJFLX4.quickJumpForward - CUE/LOOP CALL RIGHT + SHIFT (DECK1) - press - quick jump forwards - 0x90 - 0x3D - - - - - - [Channel2] - PioneerDDJFLX4.quickJumpForward - CUE/LOOP CALL RIGHT + SHIFT (DECK2) - press - quick jump forwards - 0x91 - 0x3D - - - - - - [Channel1] - PioneerDDJFLX4.quickJumpBack - CUE/LOOP CALL LEFT + SHIFT (DECK1) - press - quick jump back - 0x90 - 0x3E - - - - - - [Channel2] - PioneerDDJFLX4.quickJumpBack - CUE/LOOP CALL LEFT + SHIFT (DECK2) - press - quick jump back - 0x91 - 0x3E - - - - - - [Channel1] - PioneerDDJFLX4.shiftPressed - Shift (DECK1) - 0x90 - 0x3F - - - - - - [Channel2] - PioneerDDJFLX4.shiftPressed - Shift (DECK2) - 0x91 - 0x3F - - - - - - [Master] - crossfader - CROSSFADER - slider - 0xB6 - 0x3F - - - - - - [Library] - MoveVertical - BROWSE - rotate - Scroll tracklist/tree view - 0xB6 - 0x40 - - - - - - [Library] - MoveFocusForward - BROWSE - press - Move cursor between track list and tree view - 0x96 - 0x41 - - - - - - [Library] - MoveFocusBackward - BROWSE +SHIFT - press - Move cursor between track list and tree view - 0x96 - 0x42 - - - - - + BEAT FX SELECT - press once - select next effect [EffectRack1_EffectUnit1] - PioneerDDJFLX4.beatFxOnOffShiftPressed - BEAT FX ON/OFF +SHIFT - press - Disable all enabled Beat FX Slots (when on CHAN1/1+2) + PioneerDDJFLX4.beatFxSelectPressed 0x94 - 0x43 + 0x63 - + + BEAT FX SELECT + shift - press once - select previous effect [EffectRack1_EffectUnit1] - PioneerDDJFLX4.beatFxOnOffShiftPressed - BEAT FX ON/OFF +SHIFT - press - Disable all enabled Beat FX Slots (when on CHAN12) - 0x95 - 0x43 - - - - - - [Channel1] - LoadSelectedTrack - LOAD (DECK1) - press - Load a Track into Deck 1 - 0x96 - 0x46 - - - - - - [EffectRack1_EffectUnit1] - PioneerDDJFLX4.beatFxOnOffPressed - BEAT FX ON/OFF - press - Toggle FX in the selected Slot (when on CHAN1/1+2) + PioneerDDJFLX4.beatFxSelectShiftPressed 0x94 - 0x47 + 0x64 - - - - - [EffectRack1_EffectUnit1] - PioneerDDJFLX4.beatFxOnOffPressed - BEAT FX ON/OFF - press - Toggle FX in the selected Slot (when on CHAN2) - 0x95 - 0x47 - - - - - - [Channel2] - LoadSelectedTrack - LOAD (DECK2) - press - Load a Track into Deck 2 - 0x96 - 0x47 - - - - - - [Channel1] - start_play - CUE +SHIFT (DECK1) - press - Jump to track start - 0x90 - 0x48 - - - - - - [Channel2] - start_play - CUE +SHIFT (DECK2) - press - Jump to track start - 0x91 - 0x48 - - + + + BEAT LEFT - press - select previous effect unit [EffectRack1_EffectUnit1] PioneerDDJFLX4.beatFxLeftPressed - BEAT LEFT - press - select previous effect unit 0x94 0x4A - + + + BEAT RIGHT - press - select next effect unit [EffectRack1_EffectUnit1] PioneerDDJFLX4.beatFxRightPressed - BEAT RIGHT - press - select next effect unit 0x94 0x4B - - - - - [Channel1] - PioneerDDJFLX4.toggleLoopAdjustIn - SHIFT + LOOP IN (DECK1) - Loop in adjust (using jog wheel) - 0x90 - 0x4C - - - - - - [Channel2] - PioneerDDJFLX4.toggleLoopAdjustIn - SHIFT + LOOP IN (DECK2) - Loop in adjust (using jog wheel) - 0x91 - 0x4C - - - - - - [Channel1] - reloop_toggle - RELOOP/EXIT (DECK1) - press - (loop off) Reloop, (loop on) Loop exit - 0x90 - 0x4D - - - - - - [Channel2] - reloop_toggle - RELOOP/EXIT (DECK2) - press - (loop off) Reloop, (loop on) Loop exit - 0x91 - 0x4D - - - - - - [Channel1] - PioneerDDJFLX4.toggleLoopAdjustOut - SHIFT + LOOP OUT (DECK1) - Loop out adjust (using jog wheel) - 0x90 - 0x4E - - - - - - [Channel2] - PioneerDDJFLX4.toggleLoopAdjustOut - SHIFT + LOOP OUT (DECK2) - Loop out adjust (using jog wheel) - 0x91 - 0x4E - - - - - - [Channel1] - reloop_andstop - RELOOP/EXIT +SHIFT (DECK1) - press - Reloop and stop - 0x90 - 0x50 - - - - - - [Channel2] - reloop_andstop - RELOOP/EXIT +SHIFT (DECK2) - press - Reloop and stop - 0x91 - 0x50 - - - - - - [Channel1] - PioneerDDJFLX4.cueLoopCallLeft - CUE/LOOP CALL LEFT (DECK1) - press - half active loop - 0x90 - 0x51 - - - - - - [Channel2] - PioneerDDJFLX4.cueLoopCallLeft - CUE/LOOP CALL LEFT (DECK2) - press - half active loop - 0x91 - 0x51 - - - - - - [Channel1] - PioneerDDJFLX4.cueLoopCallRight - CUE/LOOP CALL LEFT (DECK1) - press - double active loop - 0x90 - 0x53 - - - - - - [Channel2] - PioneerDDJFLX4.cueLoopCallRight - CUE/LOOP CALL LEFT (DECK2) - press - double active loop - 0x91 - 0x53 - - - - - - [Channel1] - pfl - CUE Channel - press - toggle Headphone Cue - 0x90 - 0x54 - - - - - - [Channel2] - pfl - CUE Channel - press - toggle Headphone Cue - 0x91 - 0x54 - - - - - - [Channel1] - PioneerDDJFLX4.syncPressed - BEAT SYNC (DECK1) - press - Beat Sync to Master deck - 0x90 - 0x58 - - - - - - [Channel2] - PioneerDDJFLX4.syncPressed - BEAT SYNC (DECK2) - press - Beat Sync to Master deck - 0x91 - 0x58 - - - - - - [Channel1] - PioneerDDJFLX4.syncLongPressed - BEAT SYNC LONG PRESS (DECK1) - press - Set as Master deck - 0x90 - 0x5C - - - - - - [Channel2] - PioneerDDJFLX4.syncLongPressed - BEAT SYNC LONG PRESS (DECK2) - press - Set as Master deck - 0x91 - 0x5C - - - - - - [Channel1] - PioneerDDJFLX4.cycleTempoRange - BEAT SYNC +SHIFT (DECK1) - press - change Tempo range - 0x90 - 0x60 - - - - - - [Channel2] - PioneerDDJFLX4.cycleTempoRange - BEAT SYNC +SHIFT (DECK2) - press - change Tempo range - 0x91 - 0x60 - - - - - - [Channel1] - beatloop_0.25_toggle - PAD 1 (DECK1) BEAT LOOP MODE - press - 1/4 Beatloop - 0x97 - 0x60 - - - - - - [Channel2] - beatloop_0.25_toggle - PAD 1 (DECK2) BEAT LOOP MODE - press - 1/4 Beatloop - 0x99 - 0x60 - - - - - - [Channel1] - beatloop_0.5_toggle - PAD 2 (DECK1) BEAT LOOP MODE - press - 1/2 Beatloop - 0x97 - 0x61 - - - - - - [Channel2] - beatloop_0.5_toggle - PAD 2 (DECK2) BEAT LOOP MODE - press - 1/2 Beatloop - 0x99 - 0x61 - - - - - - [Channel1] - beatloop_1_toggle - PAD 3 (DECK1) BEAT LOOP MODE - press - 1/1 Beatloop - 0x97 - 0x62 - - - - - - [Channel2] - beatloop_1_toggle - PAD 3 (DECK2) BEAT LOOP MODE - press - 1/1 Beatloop - 0x99 - 0x62 - - + + + + BEAT FX CH SELECT CH1 - slide - Select FX on DECK 1 [EffectRack1_EffectUnit1] - PioneerDDJFLX4.beatFxSelectPressed - BEAT FX SELECT - press once - select next effect + PioneerDDJFLX4.beatFxChannel1 0x94 - 0x63 + 0x10 - - - - - [Channel1] - beatloop_2_toggle - PAD 4 (DECK1) BEAT LOOP MODE - press - 2 Beatloop - 0x97 - 0x63 - - - - - - [Channel2] - beatloop_2_toggle - PAD 4 (DECK2) BEAT LOOP MODE - press - 2 Beatloop - 0x99 - 0x63 - - + + BEAT FX CH SELECT CH2 - slide - Select FX on DECK 2 [EffectRack1_EffectUnit1] - PioneerDDJFLX4.beatFxSelectShiftPressed - BEAT FX SELECT + shift - press once - select previous effect + PioneerDDJFLX4.beatFxChannel2 + 0x95 + 0x11 + + + + + + + BEAT FX LEVEL/DEPTH - rotate (MSB) - Adjust FX Level (mix) and BEAT FX Depth (meta) in the + selected slot + + [EffectRack1_EffectUnit1] + PioneerDDJFLX4.beatFxLevelDepthRotate + 0xB4 + 0x02 + + + + + + + BEAT FX ON/OFF - press - Toggle FX in the selected Slot (when on CHAN1/1+2) + [EffectRack1_EffectUnit1] + PioneerDDJFLX4.beatFxOnOffPressed 0x94 - 0x64 + 0x47 - + - [Channel1] - beatloop_4_toggle - PAD 5 (DECK1) BEAT LOOP MODE - press - 4 Beatloop - 0x97 - 0x64 + BEAT FX ON/OFF - press - Toggle FX in the selected Slot (when on CHAN2) + [EffectRack1_EffectUnit1] + PioneerDDJFLX4.beatFxOnOffPressed + 0x95 + 0x47 - + - [Channel2] - beatloop_4_toggle - PAD 5 (DECK2) BEAT LOOP MODE - press - 4 Beatloop - 0x99 - 0x64 + BEAT FX ON/OFF +SHIFT - press - Disable all enabled Beat FX Slots (when on CHAN1/1+2) + [EffectRack1_EffectUnit1] + PioneerDDJFLX4.beatFxOnOffShiftPressed + 0x94 + 0x43 - + - [Channel1] - PioneerDDJFLX4.waveformZoom - BROWSE +SHIFT - Zoom waveform - 0xB6 - 0x64 + BEAT FX ON/OFF +SHIFT - press - Disable all enabled Beat FX Slots (when on CHAN12) + [EffectRack1_EffectUnit1] + PioneerDDJFLX4.beatFxOnOffShiftPressed + 0x95 + 0x43 - - - - - [Channel1] - beatloop_8_toggle - PAD 6 (DECK1) BEAT LOOP MODE - press - 8 Beatloop - 0x97 - 0x65 - - - - - - [Channel2] - beatloop_8_toggle - PAD 6 (DECK2) BEAT LOOP MODE - press - 8 Beatloop - 0x99 - 0x65 - - - - - - [Channel1] - beatloop_16_toggle - PAD 7 (DECK1) BEAT LOOP MODE - press - 16 Beatloop - 0x97 - 0x66 - - - - - - [Channel2] - beatloop_16_toggle - PAD 7 (DECK2) BEAT LOOP MODE - press - 16 Beatloop - 0x99 - 0x66 - - - - - - [Channel1] - PioneerDDJFLX4.jogTouch - JOG DIAL PLATTER +SHIFT (DECK1) - touch - enable (on touch) / disable (on release) highspeed - Pitch bend - - 0x90 - 0x67 - - - - - - [Channel2] - PioneerDDJFLX4.jogTouch - JOG DIAL PLATTER +SHIFT (DECK2) - touch - enable (on touch) / disable (on release) highspeed - Pitch bend - - 0x91 - 0x67 - - - - - - [Channel1] - beatloop_32_toggle - PAD 8 (DECK1) BEAT LOOP MODE - press - 32 Beatloop - 0x97 - 0x67 - - - - - - [Channel2] - beatloop_32_toggle - PAD 8 (DECK2) BEAT LOOP MODE - press - 32 Beatloop - 0x99 - 0x67 - - - - - - [Channel1] - PioneerDDJFLX4.toggleQuantize - Shift + Left CUE - Toggle quantize on/off (Deck1) - 0x90 - 0x68 - - - - - - [Channel2] - PioneerDDJFLX4.toggleQuantize - Shift + Right CUE - Toggle quantize on/off (Deck2) - 0x91 - 0x68 - - + + + + + + HOT CUE MODE (DECK1) - press - set hotcue mode [PadMode] PioneerDDJFLX4.padModeKeyPressed + 0x90 + 0x1B + + + + + + HOT CUE MODE (DECK2) - press - set hotcue mode + [PadMode] + PioneerDDJFLX4.padModeKeyPressed + 0x91 + 0x1B + + + + + KEYBOARD MODE (DECK1) - press - set keyboard mode + [PadMode] + PioneerDDJFLX4.padModeKeyPressed 0x90 0x69 - + - [PadMode] - PioneerDDJFLX4.padModeKeyPressed KEYBOARD MODE (DECK2) - press - set keyboard mode + [PadMode] + PioneerDDJFLX4.padModeKeyPressed 0x91 0x69 - + + PAD FX1 MODE (DECK1) - press - set pad fx1 mode [PadMode] PioneerDDJFLX4.padModeKeyPressed + 0x90 + 0x1E + + + + + + PAD FX1 MODE (DECK2) - press - set pad fx1 mode + [PadMode] + PioneerDDJFLX4.padModeKeyPressed + 0x91 + 0x1E + + + + + PAD FX2 MODE (DECK1) - press - set pad fx2 mode + [PadMode] + PioneerDDJFLX4.padModeKeyPressed 0x90 0x6B - + - [PadMode] - PioneerDDJFLX4.padModeKeyPressed PAD FX2 MODE (DECK2) - press - set pad fx2 mode + [PadMode] + PioneerDDJFLX4.padModeKeyPressed 0x91 0x6B - + + BEAT JUMP MODE (DECK1) - press - set beat jump mode [PadMode] PioneerDDJFLX4.padModeKeyPressed + 0x90 + 0x20 + + + + + + BEAT JUMP MODE (DECK2) - press - set beat jump mode + [PadMode] + PioneerDDJFLX4.padModeKeyPressed + 0x91 + 0x20 + + + + + BEAT LOOP MODE (DECK1) - press - set beat loop mode + [PadMode] + PioneerDDJFLX4.padModeKeyPressed 0x90 0x6D - + - [PadMode] - PioneerDDJFLX4.padModeKeyPressed BEAT LOOP MODE (DECK2) - press - set beat loop mode + [PadMode] + PioneerDDJFLX4.padModeKeyPressed 0x91 0x6D - + + SAMPLER MODE (DECK1) - press - set sampler mode [PadMode] PioneerDDJFLX4.padModeKeyPressed + 0x90 + 0x22 + + + + + + SAMPLER MODE (DECK2) - press - set sampler mode + [PadMode] + PioneerDDJFLX4.padModeKeyPressed + 0x91 + 0x22 + + + + + KEY SHIFT MODE (DECK1) - press - set key shift mode + [PadMode] + PioneerDDJFLX4.padModeKeyPressed 0x90 0x6F - + + KEY SHIFT MODE (DECK2) - press - set key shift mode [PadMode] PioneerDDJFLX4.padModeKeyPressed - KEY SHIFT MODE (DECK2) - press - set key shift mode 0x91 0x6F - + + + + + + PAD 1 (DECK1) HOT CUE MODE - press - set hotcue + [Channel1] + hotcue_1_activate + 0x97 + 0x00 + + + + + + PAD 1 +SHIFT (DECK1) HOT CUE MODE - press - delete hotcue + [Channel1] + hotcue_1_clear + 0x98 + 0x00 + + + + + + PAD 1 (DECK2) HOT CUE MODE - press - set hotcue + [Channel2] + hotcue_1_activate + 0x99 + 0x00 + + + + + + PAD 1 +SHIFT (DECK2) HOT CUE MODE - press - delete hotcue + [Channel2] + hotcue_1_clear + 0x9A + 0x00 + + + + + + PAD 2 (DECK1) HOT CUE MODE - press - set hotcue + [Channel1] + hotcue_2_activate + 0x97 + 0x01 + + + + + + PAD 2 +SHIFT (DECK1) HOT CUE MODE - press - delete hotcue + [Channel1] + hotcue_2_clear + 0x98 + 0x01 + + + + + + PAD 2 (DECK2) HOT CUE MODE - press - set hotcue + [Channel2] + hotcue_2_activate + 0x99 + 0x01 + + + + + + PAD 2 +SHIFT (DECK2) HOT CUE MODE - press - delete hotcue + [Channel2] + hotcue_2_clear + 0x9A + 0x01 + + + + + + PAD 3 (DECK1) HOT CUE MODE - press - set hotcue + [Channel1] + hotcue_3_activate + 0x97 + 0x02 + + + + + + PAD 3 +SHIFT (DECK1) HOT CUE MODE - press - delete hotcue + [Channel1] + hotcue_3_clear + 0x98 + 0x02 + + + + + + PAD 3 (DECK2) HOT CUE MODE - press - set hotcue + [Channel2] + hotcue_3_activate + 0x99 + 0x02 + + + + + + PAD 3 +SHIFT (DECK2) HOT CUE MODE - press - delete hotcue + [Channel2] + hotcue_3_clear + 0x9A + 0x02 + + + + + + PAD 4 (DECK1) HOT CUE MODE - press - set hotcue + [Channel1] + hotcue_4_activate + 0x97 + 0x03 + + + + + + PAD 4 +SHIFT (DECK1) HOT CUE MODE - press - delete hotcue + [Channel1] + hotcue_4_clear + 0x98 + 0x03 + + + + + + PAD 4 (DECK2) HOT CUE MODE - press - set hotcue + [Channel2] + hotcue_4_activate + 0x99 + 0x03 + + + + + + PAD 4 +SHIFT (DECK2) HOT CUE MODE - press - delete hotcue + [Channel2] + hotcue_4_clear + 0x9A + 0x03 + + + + + + PAD 5(DECK1) HOT CUE MODE - press - set hotcue + [Channel1] + hotcue_5_activate + 0x97 + 0x04 + + + + + + PAD 5 +SHIFT (DECK1) HOT CUE MODE - press - delete hotcue + [Channel1] + hotcue_5_clear + 0x98 + 0x04 + + + + + + PAD 5 (DECK2) HOT CUE MODE - press - set hotcue + [Channel2] + hotcue_5_activate + 0x99 + 0x04 + + + + + + PAD 5 +SHIFT (DECK2) HOT CUE MODE - press - delete hotcue + [Channel2] + hotcue_5_clear + 0x9A + 0x04 + + + + + + PAD 6 (DECK1) HOT CUE MODE - press - set hotcue + [Channel1] + hotcue_6_activate + 0x97 + 0x05 + + + + + + PAD 6 +SHIFT (DECK1) HOT CUE MODE - press - delete hotcue + [Channel1] + hotcue_6_clear + 0x98 + 0x05 + + + + + + PAD 6 (DECK2) HOT CUE MODE - press - set hotcue + [Channel2] + hotcue_6_activate + 0x99 + 0x05 + + + + + + PAD 6 +SHIFT (DECK2) HOT CUE MODE - press - delete hotcue + [Channel2] + hotcue_6_clear + 0x9A + 0x05 + + + + + + PAD 7 (DECK1) HOT CUE MODE - press - set hotcue + [Channel1] + hotcue_7_activate + 0x97 + 0x06 + + + + + + PAD 7 +SHIFT (DECK1) HOT CUE MODE - press - delete hotcue + [Channel1] + hotcue_7_clear + 0x98 + 0x06 + + + + + + PAD 7 (DECK2) HOT CUE MODE - press - set hotcue + [Channel2] + hotcue_7_activate + 0x99 + 0x06 + + + + + + PAD 7 +SHIFT (DECK2) HOT CUE MODE - press - delete hotcue + [Channel2] + hotcue_7_clear + 0x9A + 0x06 + + + + + + PAD 8 (DECK1) HOT CUE MODE - press - set hotcue + [Channel1] + hotcue_8_activate + 0x97 + 0x07 + + + + + + PAD 8 +SHIFT (DECK1) HOT CUE MODE - press - delete hotcue + [Channel1] + hotcue_8_clear + 0x98 + 0x07 + + + + + + PAD 8 (DECK2) HOT CUE MODE - press - set hotcue + [Channel2] + hotcue_8_activate + 0x99 + 0x07 + + + + + + PAD 8 +SHIFT (DECK2) HOT CUE MODE - press - delete hotcue + [Channel2] + hotcue_8_clear + 0x9A + 0x07 + + + + + + + + + + PAD 1 (DECK1) BEAT LOOP MODE - press - 1/4 Beatloop + [Channel1] + beatloop_0.25_toggle + 0x97 + 0x60 + + + + + + PAD 1 (DECK2) BEAT LOOP MODE - press - 1/4 Beatloop + [Channel2] + beatloop_0.25_toggle + 0x99 + 0x60 + + + + + + PAD 2 (DECK1) BEAT LOOP MODE - press - 1/2 Beatloop + [Channel1] + beatloop_0.5_toggle + 0x97 + 0x61 + + + + + + PAD 2 (DECK2) BEAT LOOP MODE - press - 1/2 Beatloop + [Channel2] + beatloop_0.5_toggle + 0x99 + 0x61 + + + + + + PAD 3 (DECK1) BEAT LOOP MODE - press - 1/1 Beatloop + [Channel1] + beatloop_1_toggle + 0x97 + 0x62 + + + + + + PAD 3 (DECK2) BEAT LOOP MODE - press - 1/1 Beatloop + [Channel2] + beatloop_1_toggle + 0x99 + 0x62 + + + + + + PAD 4 (DECK1) BEAT LOOP MODE - press - 2 Beatloop + [Channel1] + beatloop_2_toggle + 0x97 + 0x63 + + + + + + PAD 4 (DECK2) BEAT LOOP MODE - press - 2 Beatloop + [Channel2] + beatloop_2_toggle + 0x99 + 0x63 + + + + + + PAD 5 (DECK1) BEAT LOOP MODE - press - 4 Beatloop + [Channel1] + beatloop_4_toggle + 0x97 + 0x64 + + + + + + PAD 5 (DECK2) BEAT LOOP MODE - press - 4 Beatloop + [Channel2] + beatloop_4_toggle + 0x99 + 0x64 + + + + + + PAD 6 (DECK1) BEAT LOOP MODE - press - 8 Beatloop + [Channel1] + beatloop_8_toggle + 0x97 + 0x65 + + + + + + PAD 6 (DECK2) BEAT LOOP MODE - press - 8 Beatloop + [Channel2] + beatloop_8_toggle + 0x99 + 0x65 + + + + + + PAD 7 (DECK1) BEAT LOOP MODE - press - 16 Beatloop + [Channel1] + beatloop_16_toggle + 0x97 + 0x66 + + + + + + PAD 7 (DECK2) BEAT LOOP MODE - press - 16 Beatloop + [Channel2] + beatloop_16_toggle + 0x99 + 0x66 + + + + + + PAD 8 (DECK1) BEAT LOOP MODE - press - 32 Beatloop + [Channel1] + beatloop_32_toggle + 0x97 + 0x67 + + + + + + PAD 8 (DECK2) BEAT LOOP MODE - press - 32 Beatloop + [Channel2] + beatloop_32_toggle + 0x99 + 0x67 + + + + + + + + + PAD 1 (DECK1) BEAT JUMP MODE - press - Jump 1 Beat backwards + [Channel1] + PioneerDDJFLX4.beatjumpPadPressed + 0x97 + 0x20 + + + + + + PAD 1 (DECK2) BEAT JUMP MODE - press - Jump 1 Beat backwards + [Channel2] + PioneerDDJFLX4.beatjumpPadPressed + 0x99 + 0x20 + + + + + + PAD 2 (DECK1) BEAT JUMP MODE - press - Jump 1 Beat forwards + [Channel1] + PioneerDDJFLX4.beatjumpPadPressed + 0x97 + 0x21 + + + + + + PAD 2 (DECK2) BEAT JUMP MODE - press - Jump 1 Beat forwards + [Channel2] + PioneerDDJFLX4.beatjumpPadPressed + 0x99 + 0x21 + + + + + + PAD 3 (DECK1) BEAT JUMP MODE - press - Jump 2 Beats backwards + [Channel1] + PioneerDDJFLX4.beatjumpPadPressed + 0x97 + 0x22 + + + + + + PAD 3 (DECK2) BEAT JUMP MODE - press - Jump 2 Beats backwards + [Channel2] + PioneerDDJFLX4.beatjumpPadPressed + 0x99 + 0x22 + + + + + + PAD 4 (DECK1) BEAT JUMP MODE - press - Jump 2 Beats forwards + [Channel1] + PioneerDDJFLX4.beatjumpPadPressed + 0x97 + 0x23 + + + + + + PAD 4 (DECK2) BEAT JUMP MODE - press - Jump 2 Beats forwards + [Channel2] + PioneerDDJFLX4.beatjumpPadPressed + 0x99 + 0x23 + + + + + + PAD 5 (DECK1) BEAT JUMP MODE - press - Jump 4 Beats backwards + [Channel1] + PioneerDDJFLX4.beatjumpPadPressed + 0x97 + 0x24 + + + + + + PAD 5 (DECK2) BEAT JUMP MODE - press - Jump 4 Beats backwards + [Channel2] + PioneerDDJFLX4.beatjumpPadPressed + 0x99 + 0x24 + + + + + + PAD 6 (DECK1) BEAT JUMP MODE - press - Jump 4 Beats forwards + [Channel1] + PioneerDDJFLX4.beatjumpPadPressed + 0x97 + 0x25 + + + + + + PAD 6 (DECK2) BEAT JUMP MODE - press - Jump 4 Beats forwards + [Channel2] + PioneerDDJFLX4.beatjumpPadPressed + 0x99 + 0x25 + + + + + + PAD 7 (DECK1) BEAT JUMP MODE - press - Jump 8 Beats backwards + [Channel1] + PioneerDDJFLX4.beatjumpPadPressed + 0x97 + 0x26 + + + + + + PAD 7 (DECK2) BEAT JUMP MODE - press - Jump 8 Beats backwards + [Channel2] + PioneerDDJFLX4.beatjumpPadPressed + 0x99 + 0x26 + + + + + + PAD 8 (DECK1) BEAT JUMP MODE - press - Jump 8 Beats forwards + [Channel1] + PioneerDDJFLX4.beatjumpPadPressed + 0x97 + 0x27 + + + + + + PAD 8 (DECK2) BEAT JUMP MODE - press - Jump 8 Beats forwards + [Channel2] + PioneerDDJFLX4.beatjumpPadPressed + 0x99 + 0x27 + + + + + + + PAD 7 (DECK1) +SHift BEAT JUMP MODE - press - decrease Beatjump by a factor of 16 + [Channel1] + PioneerDDJFLX4.decreaseBeatjumpSizes + 0x98 + 0x26 + + + + + + PAD 7 (DECK2) +Shift BEAT JUMP MODE - press - decrease Beatjump by a factor of 16 + [Channel2] + PioneerDDJFLX4.decreaseBeatjumpSizes + 0x9A + 0x26 + + + + + + PAD 8 (DECK1) +SHift BEAT JUMP MODE - press - increase Beatjump by a factor of 16 + [Channel1] + PioneerDDJFLX4.increaseBeatjumpSizes + 0x98 + 0x27 + + + + + + PAD 8 (DECK2) +Shift BEAT JUMP MODE - press - increase Beatjump by a factor of 16 + [Channel2] + PioneerDDJFLX4.increaseBeatjumpSizes + 0x9A + 0x27 + + + + + + + + + PAD 1 (LEFT) SAMPLE MODE - press - Play Sample or Load Track + [Sampler1] + PioneerDDJFLX4.samplerPadPressed + 0x97 + 0x30 + + + + + + PAD 1 (LEFT)+SHIFT SAMPLE MODE - press - Stop Playback or Eject Track + [Sampler1] + PioneerDDJFLX4.samplerPadShiftPressed + 0x98 + 0x30 + + + + + + PAD 2 (LEFT) SAMPLE MODE - press - Play Sample or Load Track + [Sampler2] + PioneerDDJFLX4.samplerPadPressed + 0x97 + 0x31 + + + + + + PAD 2 (LEFT)+SHIFT SAMPLE MODE - press - Stop Playback or Eject Track + [Sampler2] + PioneerDDJFLX4.samplerPadShiftPressed + 0x98 + 0x31 + + + + + + PAD 3 (LEFT) SAMPLE MODE - press - Play Sample or Load Track + [Sampler3] + PioneerDDJFLX4.samplerPadPressed + 0x97 + 0x32 + + + + + + PAD 3 (LEFT)+SHIFT SAMPLE MODE - press - Stop Playback or Eject Track + [Sampler3] + PioneerDDJFLX4.samplerPadShiftPressed + 0x98 + 0x32 + + + + + + PAD 4 (LEFT) SAMPLE MODE - press - Play Sample or Load Track + [Sampler4] + PioneerDDJFLX4.samplerPadPressed + 0x97 + 0x33 + + + + + + PAD 4 (LEFT)+SHIFT SAMPLE MODE - press - Stop Playback or Eject Track + [Sampler4] + PioneerDDJFLX4.samplerPadShiftPressed + 0x98 + 0x33 + + + + + + PAD 5 (LEFT) SAMPLE MODE - press - Play Sample or Load Track + [Sampler9] + PioneerDDJFLX4.samplerPadPressed + 0x97 + 0x34 + + + + + + PAD 5 (LEFT)+SHIFT SAMPLE MODE - press - Stop Playback or Eject Track + [Sampler9] + PioneerDDJFLX4.samplerPadShiftPressed + 0x98 + 0x34 + + + + + + PAD 6 (LEFT) SAMPLE MODE - press - Play Sample or Load Track + [Sampler10] + PioneerDDJFLX4.samplerPadPressed + 0x97 + 0x35 + + + + + + PAD 6 (LEFT)+SHIFT SAMPLE MODE - press - Stop Playback or Eject Track + [Sampler10] + PioneerDDJFLX4.samplerPadShiftPressed + 0x98 + 0x35 + + + + + + PAD 7 (LEFT) SAMPLE MODE - press - Play Sample or Load Track + [Sampler11] + PioneerDDJFLX4.samplerPadPressed + 0x97 + 0x36 + + + + + + PAD 7 (LEFT)+SHIFT SAMPLE MODE - press - Stop Playback or Eject Track + [Sampler11] + PioneerDDJFLX4.samplerPadShiftPressed + 0x98 + 0x36 + + + + + + PAD 8 (LEFT) SAMPLE MODE - press - Play Sample or Load Track + [Sampler12] + PioneerDDJFLX4.samplerPadPressed + 0x97 + 0x37 + + + + + + PAD 8 (LEFT)+SHIFT SAMPLE MODE - press - Stop Playback or Eject Track + [Sampler12] + PioneerDDJFLX4.samplerPadShiftPressed + 0x98 + 0x37 + + + + + + + + PAD 1 (RIGHT) SAMPLE MODE - press - Play Sample or Load Track + [Sampler5] + PioneerDDJFLX4.samplerPadPressed + 0x99 + 0x30 + + + + + + PAD 1 (Right)+SHIFT SAMPLE MODE - press - Stop Playback or Eject Track + [Sampler5] + PioneerDDJFLX4.samplerPadShiftPressed + 0x9A + 0x30 + + + + + + PAD 2 (RIGHT) SAMPLE MODE - press - Play Sample or Load Track + [Sampler6] + PioneerDDJFLX4.samplerPadPressed + 0x99 + 0x31 + + + + + + PAD 2 (Right)+SHIFT SAMPLE MODE - press - Stop Playback or Eject Track + [Sampler6] + PioneerDDJFLX4.samplerPadShiftPressed + 0x9A + 0x31 + + + + + + PAD 3 (RIGHT) SAMPLE MODE - press - Play Sample or Load Track + [Sampler7] + PioneerDDJFLX4.samplerPadPressed + 0x99 + 0x32 + + + + + + PAD 3 (Right)+SHIFT SAMPLE MODE - press - Stop Playback or Eject Track + [Sampler7] + PioneerDDJFLX4.samplerPadShiftPressed + 0x9A + 0x32 + + + + + + PAD 4 (RIGHT) SAMPLE MODE - press - Play Sample or Load Track + [Sampler8] + PioneerDDJFLX4.samplerPadPressed + 0x99 + 0x33 + + + + + + PAD 4 (Right)+SHIFT SAMPLE MODE - press - Stop Playback or Eject Track + [Sampler8] + PioneerDDJFLX4.samplerPadShiftPressed + 0x9A + 0x33 + + + + + + PAD 5 (RIGHT) SAMPLE MODE - press - Play Sample or Load Track + [Sampler13] + PioneerDDJFLX4.samplerPadPressed + 0x99 + 0x34 + + + + + + PAD 5 (Right)+SHIFT SAMPLE MODE - press - Stop Playback or Eject Track + [Sampler13] + PioneerDDJFLX4.samplerPadShiftPressed + 0x9A + 0x34 + + + + + + PAD 6 (RIGHT) SAMPLE MODE - press - Play Sample or Load Track + [Sampler14] + PioneerDDJFLX4.samplerPadPressed + 0x99 + 0x35 + + + + + + PAD 6 (Right)+SHIFT SAMPLE MODE - press - Stop Playback or Eject Track + [Sampler14] + PioneerDDJFLX4.samplerPadShiftPressed + 0x9A + 0x35 + + + + + + PAD 7 (RIGHT) SAMPLE MODE - press - Play Sample or Load Track + [Sampler15] + PioneerDDJFLX4.samplerPadPressed + 0x99 + 0x36 + + + + + + PAD 7 (Right)+SHIFT SAMPLE MODE - press - Stop Playback or Eject Track + [Sampler15] + PioneerDDJFLX4.samplerPadShiftPressed + 0x9A + 0x36 + + + + + + PAD 8 (RIGHT) SAMPLE MODE - press - Play Sample or Load Track + [Sampler16] + PioneerDDJFLX4.samplerPadPressed + 0x99 + 0x37 + + + + + + PAD 8 (Right)+SHIFT SAMPLE MODE - press - Stop Playback or Eject Track + [Sampler16] + PioneerDDJFLX4.samplerPadShiftPressed + 0x9A + 0x37 + + + + + + + + [Channel1] - beatloop_0.25_enabled - 0x98 - 0x60 + play_indicator + 0x90 + 0x0B + 0x7F + 0.5 + + + [Channel2] + play_indicator + 0x91 + 0x0B + 0x7F 0.5 [Channel1] - beatloop_0.25_enabled - 0x97 - 0x60 + play_indicator + 0x90 + 0x47 + 0x7F 0.5 - [Channel1] - beatloop_0.5_enabled - 0x98 - 0x61 - 0.5 - - - [Channel1] - beatloop_0.5_enabled - 0x97 - 0x61 - 0.5 - - - [Channel1] - beatloop_16_enabled - 0x98 - 0x66 - 0.5 - - - [Channel1] - beatloop_16_enabled - 0x97 - 0x66 - 0.5 - - - [Channel1] - beatloop_1_enabled - 0x98 - 0x62 - 0.5 - - - [Channel1] - beatloop_1_enabled - 0x97 - 0x62 - 0.5 - - - [Channel1] - beatloop_2_enabled - 0x98 - 0x63 - 0.5 - - - [Channel1] - beatloop_2_enabled - 0x97 - 0x63 - 0.5 - - - [Channel1] - beatloop_32_enabled - 0x98 - 0x67 - 0.5 - - - [Channel1] - beatloop_32_enabled - 0x97 - 0x67 - 0.5 - - - [Channel1] - beatloop_4_enabled - 0x98 - 0x64 - 0.5 - - - [Channel1] - beatloop_4_enabled - 0x97 - 0x64 - 0.5 - - - [Channel1] - beatloop_8_enabled - 0x98 - 0x65 - 0.5 - - - [Channel1] - beatloop_8_enabled - 0x97 - 0x65 - 0.5 - - - [Channel1] - cue_indicator - 0x90 - 0x47 + [Channel2] + play_indicator + 0x91 + 0x47 + 0x7F 0.5 + + [Channel1] cue_indicator 0x90 0x0C - 0.5 - - - [Channel1] - hotcue_1_enabled - 0x98 - 0x00 - 0.5 - - - [Channel1] - hotcue_1_enabled - 0x97 - 0x00 - 0.5 - - - [Channel1] - hotcue_2_enabled - 0x98 - 0x01 - 0.5 - - - [Channel1] - hotcue_2_enabled - 0x97 - 0x01 - 0.5 - - - [Channel1] - hotcue_3_enabled - 0x98 - 0x02 - 0.5 - - - [Channel1] - hotcue_3_enabled - 0x97 - 0x02 - 0.5 - - - [Channel1] - hotcue_4_enabled - 0x98 - 0x03 - 0.5 - - - [Channel1] - hotcue_4_enabled - 0x97 - 0x03 - 0.5 - - - [Channel1] - hotcue_5_enabled - 0x98 - 0x04 - 0.5 - - - [Channel1] - hotcue_5_enabled - 0x97 - 0x04 - 0.5 - - - [Channel1] - hotcue_6_enabled - 0x98 - 0x05 - 0.5 - - - [Channel1] - hotcue_6_enabled - 0x97 - 0x05 - 0.5 - - - [Channel1] - hotcue_7_enabled - 0x98 - 0x06 - 0.5 - - - [Channel1] - hotcue_7_enabled - 0x97 - 0x06 - 0.5 - - - [Channel1] - hotcue_8_enabled - 0x98 - 0x07 - 0.5 - - - [Channel1] - hotcue_8_enabled - 0x97 - 0x07 - 0.5 - - - [Channel1] - pfl - 0x90 - 0x54 - 0.5 - - - [Channel1] - play_indicator - 0x90 - 0x47 - 0.5 - - - [Channel1] - play_indicator - 0x90 - 0x0B - 0.5 - - - [Channel1] - sync_enabled - 0x90 - 0x58 - 0.5 - - - [Channel1] - track_loaded - 0x98 - 0x27 - 0.5 - - - [Channel1] - track_loaded - 0x98 - 0x26 - 0.5 - - - [Channel2] - beatloop_0.25_enabled - 0x9A - 0x60 - 0.5 - - - [Channel2] - beatloop_0.25_enabled - 0x99 - 0x60 - 0.5 - - - [Channel2] - beatloop_0.5_enabled - 0x9A - 0x61 - 0.5 - - - [Channel2] - beatloop_0.5_enabled - 0x99 - 0x61 - 0.5 - - - [Channel2] - beatloop_16_enabled - 0x9A - 0x66 - 0.5 - - - [Channel2] - beatloop_16_enabled - 0x99 - 0x66 - 0.5 - - - [Channel2] - beatloop_1_enabled - 0x9A - 0x62 - 0.5 - - - [Channel2] - beatloop_1_enabled - 0x99 - 0x62 - 0.5 - - - [Channel2] - beatloop_2_enabled - 0x9A - 0x63 - 0.5 - - - [Channel2] - beatloop_2_enabled - 0x99 - 0x63 - 0.5 - - - [Channel2] - beatloop_32_enabled - 0x9A - 0x67 - 0.5 - - - [Channel2] - beatloop_32_enabled - 0x99 - 0x67 - 0.5 - - - [Channel2] - beatloop_4_enabled - 0x9A - 0x64 - 0.5 - - - [Channel2] - beatloop_4_enabled - 0x99 - 0x64 - 0.5 - - - [Channel2] - beatloop_8_enabled - 0x9A - 0x65 - 0.5 - - - [Channel2] - beatloop_8_enabled - 0x99 - 0x65 - 0.5 - - - [Channel2] - cue_indicator - 0x91 - 0x47 + 0x7F 0.5 @@ -2587,139 +2316,35 @@ cue_indicator 0x91 0x0C + 0x7F + 0.5 + + + + + [Channel1] + cue_indicator + 0x90 + 0x47 + 0x7F 0.5 [Channel2] - hotcue_1_enabled - 0x9A - 0x00 - 0.5 - - - [Channel2] - hotcue_1_enabled - 0x99 - 0x00 - 0.5 - - - [Channel2] - hotcue_2_enabled - 0x9A - 0x01 - 0.5 - - - [Channel2] - hotcue_2_enabled - 0x99 - 0x01 - 0.5 - - - [Channel2] - hotcue_3_enabled - 0x9A - 0x02 - 0.5 - - - [Channel2] - hotcue_3_enabled - 0x99 - 0x02 - 0.5 - - - [Channel2] - hotcue_4_enabled - 0x9A - 0x03 - 0.5 - - - [Channel2] - hotcue_4_enabled - 0x99 - 0x03 - 0.5 - - - [Channel2] - hotcue_5_enabled - 0x9A - 0x04 - 0.5 - - - [Channel2] - hotcue_5_enabled - 0x99 - 0x04 - 0.5 - - - [Channel2] - hotcue_6_enabled - 0x9A - 0x05 - 0.5 - - - [Channel2] - hotcue_6_enabled - 0x99 - 0x05 - 0.5 - - - [Channel2] - hotcue_7_enabled - 0x9A - 0x06 - 0.5 - - - [Channel2] - hotcue_7_enabled - 0x99 - 0x06 - 0.5 - - - [Channel2] - hotcue_8_enabled - 0x9A - 0x07 - 0.5 - - - [Channel2] - hotcue_8_enabled - 0x99 - 0x07 - 0.5 - - - [Channel2] - pfl - 0x91 - 0x54 - 0.5 - - - [Channel2] - play_indicator + cue_indicator 0x91 0x47 + 0x7F 0.5 + + - [Channel2] - play_indicator - 0x91 - 0x0B + [Channel1] + sync_enabled + 0x90 + 0x58 + 0x7F 0.5 @@ -2727,13 +2352,567 @@ sync_enabled 0x91 0x58 + 0x7F + 0.5 + + + + + [Channel1] + pfl + 0x90 + 0x54 + 0x7F 0.5 [Channel2] - track_loaded + pfl + 0x91 + 0x54 + 0x7F + 0.5 + + + + + [Channel1] + hotcue_1_enabled + 0x97 + 0x00 + 0x7F + 0.5 + + + [Channel2] + hotcue_1_enabled + 0x99 + 0x00 + 0x7F + 0.5 + + + [Channel1] + hotcue_2_enabled + 0x97 + 0x01 + 0x7F + 0.5 + + + [Channel2] + hotcue_2_enabled + 0x99 + 0x01 + 0x7F + 0.5 + + + [Channel1] + hotcue_3_enabled + 0x97 + 0x02 + 0x7F + 0.5 + + + [Channel2] + hotcue_3_enabled + 0x99 + 0x02 + 0x7F + 0.5 + + + [Channel1] + hotcue_4_enabled + 0x97 + 0x03 + 0x7F + 0.5 + + + [Channel2] + hotcue_4_enabled + 0x99 + 0x03 + 0x7F + 0.5 + + + [Channel1] + hotcue_5_enabled + 0x97 + 0x04 + 0x7F + 0.5 + + + [Channel2] + hotcue_5_enabled + 0x99 + 0x04 + 0x7F + 0.5 + + + [Channel1] + hotcue_6_enabled + 0x97 + 0x05 + 0x7F + 0.5 + + + [Channel2] + hotcue_6_enabled + 0x99 + 0x05 + 0x7F + 0.5 + + + [Channel1] + hotcue_7_enabled + 0x97 + 0x06 + 0x7F + 0.5 + + + [Channel2] + hotcue_7_enabled + 0x99 + 0x06 + 0x7F + 0.5 + + + [Channel1] + hotcue_8_enabled + 0x97 + 0x07 + 0x7F + 0.5 + + + [Channel2] + hotcue_8_enabled + 0x99 + 0x07 + 0x7F + 0.5 + + + + + [Channel1] + hotcue_1_enabled + 0x98 + 0x00 + 0x7F + 0.5 + + + [Channel2] + hotcue_1_enabled 0x9A + 0x00 + 0x7F + 0.5 + + + [Channel1] + hotcue_2_enabled + 0x98 + 0x01 + 0x7F + 0.5 + + + [Channel2] + hotcue_2_enabled + 0x9A + 0x01 + 0x7F + 0.5 + + + [Channel1] + hotcue_3_enabled + 0x98 + 0x02 + 0x7F + 0.5 + + + [Channel2] + hotcue_3_enabled + 0x9A + 0x02 + 0x7F + 0.5 + + + [Channel1] + hotcue_4_enabled + 0x98 + 0x03 + 0x7F + 0.5 + + + [Channel2] + hotcue_4_enabled + 0x9A + 0x03 + 0x7F + 0.5 + + + [Channel1] + hotcue_5_enabled + 0x98 + 0x04 + 0x7F + 0.5 + + + [Channel2] + hotcue_5_enabled + 0x9A + 0x04 + 0x7F + 0.5 + + + [Channel1] + hotcue_6_enabled + 0x98 + 0x05 + 0x7F + 0.5 + + + [Channel2] + hotcue_6_enabled + 0x9A + 0x05 + 0x7F + 0.5 + + + [Channel1] + hotcue_7_enabled + 0x98 + 0x06 + 0x7F + 0.5 + + + [Channel2] + hotcue_7_enabled + 0x9A + 0x06 + 0x7F + 0.5 + + + [Channel1] + hotcue_8_enabled + 0x98 + 0x07 + 0x7F + 0.5 + + + [Channel2] + hotcue_8_enabled + 0x9A + 0x07 + 0x7F + 0.5 + + + + + [Channel1] + beatloop_0.25_enabled + 0x97 + 0x60 + 0x7F + 0.5 + + + [Channel2] + beatloop_0.25_enabled + 0x99 + 0x60 + 0x7F + 0.5 + + + [Channel1] + beatloop_0.5_enabled + 0x97 + 0x61 + 0x7F + 0.5 + + + [Channel2] + beatloop_0.5_enabled + 0x99 + 0x61 + 0x7F + 0.5 + + + [Channel1] + beatloop_1_enabled + 0x97 + 0x62 + 0x7F + 0.5 + + + [Channel2] + beatloop_1_enabled + 0x99 + 0x62 + 0x7F + 0.5 + + + [Channel1] + beatloop_2_enabled + 0x97 + 0x63 + 0x7F + 0.5 + + + [Channel2] + beatloop_2_enabled + 0x99 + 0x63 + 0x7F + 0.5 + + + [Channel1] + beatloop_4_enabled + 0x97 + 0x64 + 0x7F + 0.5 + + + [Channel2] + beatloop_4_enabled + 0x99 + 0x64 + 0x7F + 0.5 + + + [Channel1] + beatloop_8_enabled + 0x97 + 0x65 + 0x7F + 0.5 + + + [Channel2] + beatloop_8_enabled + 0x99 + 0x65 + 0x7F + 0.5 + + + [Channel1] + beatloop_16_enabled + 0x97 + 0x66 + 0x7F + 0.5 + + + [Channel2] + beatloop_16_enabled + 0x99 + 0x66 + 0x7F + 0.5 + + + [Channel1] + beatloop_32_enabled + 0x97 + 0x67 + 0x7F + 0.5 + + + [Channel2] + beatloop_32_enabled + 0x99 + 0x67 + 0x7F + 0.5 + + + + + [Channel1] + beatloop_0.25_enabled + 0x98 + 0x60 + 0x7F + 0.5 + + + [Channel2] + beatloop_0.25_enabled + 0x9A + 0x60 + 0x7F + 0.5 + + + [Channel1] + beatloop_0.5_enabled + 0x98 + 0x61 + 0x7F + 0.5 + + + [Channel2] + beatloop_0.5_enabled + 0x9A + 0x61 + 0x7F + 0.5 + + + [Channel1] + beatloop_1_enabled + 0x98 + 0x62 + 0x7F + 0.5 + + + [Channel2] + beatloop_1_enabled + 0x9A + 0x62 + 0x7F + 0.5 + + + [Channel1] + beatloop_2_enabled + 0x98 + 0x63 + 0x7F + 0.5 + + + [Channel2] + beatloop_2_enabled + 0x9A + 0x63 + 0x7F + 0.5 + + + [Channel1] + beatloop_4_enabled + 0x98 + 0x64 + 0x7F + 0.5 + + + [Channel2] + beatloop_4_enabled + 0x9A + 0x64 + 0x7F + 0.5 + + + [Channel1] + beatloop_8_enabled + 0x98 + 0x65 + 0x7F + 0.5 + + + [Channel2] + beatloop_8_enabled + 0x9A + 0x65 + 0x7F + 0.5 + + + [Channel1] + beatloop_16_enabled + 0x98 + 0x66 + 0x7F + 0.5 + + + [Channel2] + beatloop_16_enabled + 0x9A + 0x66 + 0x7F + 0.5 + + + [Channel1] + beatloop_32_enabled + 0x98 + 0x67 + 0x7F + 0.5 + + + [Channel2] + beatloop_32_enabled + 0x9A + 0x67 + 0x7F + 0.5 + + + + + [Channel1] + track_loaded + 0x98 + 0x26 + 0x7F + 0.5 + + + [Channel1] + track_loaded + 0x98 0x27 + 0x7F 0.5 @@ -2741,125 +2920,26 @@ track_loaded 0x9A 0x26 + 0x7F 0.5 - [Sampler10] - track_loaded - 0x98 - 0x35 - 0.5 - - - [Sampler10] - track_loaded - 0x97 - 0x35 - 0.5 - - - [Sampler11] - track_loaded - 0x98 - 0x36 - 0.5 - - - [Sampler11] - track_loaded - 0x97 - 0x36 - 0.5 - - - [Sampler12] - track_loaded - 0x98 - 0x37 - 0.5 - - - [Sampler12] - track_loaded - 0x97 - 0x37 - 0.5 - - - [Sampler13] + [Channel2] track_loaded 0x9A - 0x34 - 0.5 - - - [Sampler13] - track_loaded - 0x99 - 0x34 - 0.5 - - - [Sampler14] - track_loaded - 0x9A - 0x35 - 0.5 - - - [Sampler14] - track_loaded - 0x99 - 0x35 - 0.5 - - - [Sampler15] - track_loaded - 0x9A - 0x36 - 0.5 - - - [Sampler15] - track_loaded - 0x99 - 0x36 - 0.5 - - - [Sampler16] - track_loaded - 0x9A - 0x37 - 0.5 - - - [Sampler16] - track_loaded - 0x99 - 0x37 - 0.5 - - - [Sampler1] - track_loaded - 0x98 - 0x30 + 0x27 + 0x7F 0.5 + + + [Sampler1] track_loaded 0x97 0x30 - 0.5 - - - [Sampler2] - track_loaded - 0x98 - 0x31 + 0x7F 0.5 @@ -2867,13 +2947,7 @@ track_loaded 0x97 0x31 - 0.5 - - - [Sampler3] - track_loaded - 0x98 - 0x32 + 0x7F 0.5 @@ -2881,13 +2955,7 @@ track_loaded 0x97 0x32 - 0.5 - - - [Sampler4] - track_loaded - 0x98 - 0x33 + 0x7F 0.5 @@ -2895,69 +2963,7 @@ track_loaded 0x97 0x33 - 0.5 - - - [Sampler5] - track_loaded - 0x9A - 0x30 - 0.5 - - - [Sampler5] - track_loaded - 0x99 - 0x30 - 0.5 - - - [Sampler6] - track_loaded - 0x9A - 0x31 - 0.5 - - - [Sampler6] - track_loaded - 0x99 - 0x31 - 0.5 - - - [Sampler7] - track_loaded - 0x9A - 0x32 - 0.5 - - - [Sampler7] - track_loaded - 0x99 - 0x32 - 0.5 - - - [Sampler8] - track_loaded - 0x9A - 0x33 - 0.5 - - - [Sampler8] - track_loaded - 0x99 - 0x33 - 0.5 - - - [Sampler9] - track_loaded - 0x98 - 0x34 + 0x7F 0.5 @@ -2965,8 +2971,236 @@ track_loaded 0x97 0x34 + 0x7F 0.5 + + [Sampler10] + track_loaded + 0x97 + 0x35 + 0x7F + 0.5 + + + [Sampler11] + track_loaded + 0x97 + 0x36 + 0x7F + 0.5 + + + [Sampler12] + track_loaded + 0x97 + 0x37 + 0x7F + 0.5 + + + + + [Sampler5] + track_loaded + 0x99 + 0x30 + 0x7F + 0.5 + + + [Sampler6] + track_loaded + 0x99 + 0x31 + 0x7F + 0.5 + + + [Sampler7] + track_loaded + 0x99 + 0x32 + 0x7F + 0.5 + + + [Sampler8] + track_loaded + 0x99 + 0x33 + 0x7F + 0.5 + + + [Sampler13] + track_loaded + 0x99 + 0x34 + 0x7F + 0.5 + + + [Sampler14] + track_loaded + 0x99 + 0x35 + 0x7F + 0.5 + + + [Sampler15] + track_loaded + 0x99 + 0x36 + 0x7F + 0.5 + + + [Sampler16] + track_loaded + 0x99 + 0x37 + 0x7F + 0.5 + + + + + + + [Sampler1] + track_loaded + 0x98 + 0x30 + 0x7F + 0.5 + + + [Sampler2] + track_loaded + 0x98 + 0x31 + 0x7F + 0.5 + + + [Sampler3] + track_loaded + 0x98 + 0x32 + 0x7F + 0.5 + + + [Sampler4] + track_loaded + 0x98 + 0x33 + 0x7F + 0.5 + + + [Sampler9] + track_loaded + 0x98 + 0x34 + 0x7F + 0.5 + + + [Sampler10] + track_loaded + 0x98 + 0x35 + 0x7F + 0.5 + + + [Sampler11] + track_loaded + 0x98 + 0x36 + 0x7F + 0.5 + + + [Sampler12] + track_loaded + 0x98 + 0x37 + 0x7F + 0.5 + + + + + + + [Sampler5] + track_loaded + 0x9A + 0x30 + 0x7F + 0.5 + + + [Sampler6] + track_loaded + 0x9A + 0x31 + 0x7F + 0.5 + + + [Sampler7] + track_loaded + 0x9A + 0x32 + 0x7F + 0.5 + + + [Sampler8] + track_loaded + 0x9A + 0x33 + 0x7F + 0.5 + + + [Sampler13] + track_loaded + 0x9A + 0x34 + 0x7F + 0.5 + + + [Sampler14] + track_loaded + 0x9A + 0x35 + 0x7F + 0.5 + + + [Sampler15] + track_loaded + 0x9A + 0x36 + 0x7F + 0.5 + + + [Sampler16] + track_loaded + 0x9A + 0x37 + 0x7F + 0.5 + + - +