diff --git a/res/controllers/Hercules-DJControl-Inpulse-300-script.js b/res/controllers/Hercules-DJControl-Inpulse-300-script.js new file mode 100644 index 00000000000..8e5dbb35849 --- /dev/null +++ b/res/controllers/Hercules-DJControl-Inpulse-300-script.js @@ -0,0 +1,197 @@ +// DJControl_Inpulse_300_script.js +// +// *************************************************************************** +// * Mixxx mapping script file for the Hercules DJControl Inpulse 300. +// * Author: DJ Phatso, contributions by Kerrick Staley +// * Version 1.2 (March 2020) +// * Forum: https://www.mixxx.org/forums/viewtopic.php?f=7&t=12599 +// * Wiki: https://mixxx.org/wiki/doku.php/hercules_djcontrol_inpulse_300 +// +// Changes to v1.2 +// - Code cleanup. +// +// Changes to v1.1 +// - Fix seek-to-start and cue-master behavior. +// - Tweak scratch, seek, and bend behavior. +// - Controller knob/slider values are queried on startup, so MIXXX is synced. +// - Fixed vinyl button behavior the first time it's pressed. +// +// v1.0 : Original forum release +// +// TO DO: Functions that could be implemented to the script: +// +// * ROLL: Keep SLIP active (if already enabled) when exiting from rolls +// +// * SLICER/SLICER LOOP +// +// * TONEPLAY +// +// * FX: +// - See how to preselect effects for a rack +// **************************************************************************** +var DJCi300 = {}; +/////////////////////////////////////////////////////////////// +// USER OPTIONS // +/////////////////////////////////////////////////////////////// + +// How fast scratching is. +DJCi300.scratchScale = 1.0; + +// How much faster seeking (shift+scratch) is than scratching. +DJCi300.scratchShiftMultiplier = 4; + +// How fast bending is. +DJCi300.bendScale = 1.0; + +// Other scratch related options +DJCi300.kScratchActionNone = 0; +DJCi300.kScratchActionScratch = 1; +DJCi300.kScratchActionSeek = 2; +DJCi300.kScratchActionBend = 3; + +DJCi300.vuMeterUpdateMaster = function(value, _group, _control) { + value = (value * 122) + 5; + midi.sendShortMsg(0xB0, 0x40, value); + midi.sendShortMsg(0xB0, 0x41, value); +}; + +DJCi300.vuMeterUpdateDeck = function(value, group, _control, _status) { + value = (value * 122) + 5; + var status = (group === "[Channel1]") ? 0xB1 : 0xB2; + midi.sendShortMsg(status, 0x40, value); +}; + +DJCi300.init = function() { + // Scratch button state + DJCi300.scratchButtonState = true; + // Scratch Action + DJCi300.scratchAction = { + 1: DJCi300.kScratchActionNone, + 2: DJCi300.kScratchActionNone + }; + + // Turn On Vinyl buttons LED(one for each deck). + midi.sendShortMsg(0x91, 0x03, 0x7F); + midi.sendShortMsg(0x92, 0x03, 0x7F); + + //Turn On Browser button LED + midi.sendShortMsg(0x90, 0x04, 0x05); + + //Softtakeover for Pitch fader + engine.softTakeover("[Channel1]", "rate", true); + engine.softTakeover("[Channel2]", "rate", true); + engine.softTakeoverIgnoreNextValue("[Channel1]", "rate"); + engine.softTakeoverIgnoreNextValue("[Channel2]", "rate"); + + // Connect the VUMeters + engine.connectControl("[Channel1]", "VuMeter", "DJCi300.vuMeterUpdateDeck"); + engine.getValue("[Channel1]", "VuMeter", "DJCi300.vuMeterUpdateDeck"); + engine.connectControl("[Channel2]", "VuMeter", "DJCi300.vuMeterUpdateDeck"); + engine.getValue("[Channel2]", "VuMeter", "DJCi300.vuMeterUpdateDeck"); + engine.connectControl("[Master]", "VuMeterL", "DJCi300.vuMeterUpdateMaster"); + engine.connectControl("[Master]", "VuMeterR", "DJCi300.vuMeterUpdateMaster"); + engine.getValue("[Master]", "VuMeterL", "DJCi300.vuMeterUpdateMaster"); + engine.getValue("[Master]", "VuMeterR", "DJCi300.vuMeterUpdateMaster"); + + // Ask the controller to send all current knob/slider values over MIDI, which will update + // the corresponding GUI controls in MIXXX. + midi.sendShortMsg(0xB0, 0x7F, 0x7F); +}; + +// The Vinyl button, used to enable or disable scratching on the jog wheels (One per deck). +DJCi300.vinylButton = function(_channel, _control, value, status, _group) { + if (value) { + if (DJCi300.scratchButtonState) { + DJCi300.scratchButtonState = false; + midi.sendShortMsg(status, 0x03, 0x00); + } else { + DJCi300.scratchButtonState = true; + midi.sendShortMsg(status, 0x03, 0x7F); + } + } +}; + +DJCi300._scratchEnable = function(deck) { + var alpha = 1.0/8; + var beta = alpha/32; + engine.scratchEnable(deck, 248, 33 + 1/3, alpha, beta); +}; + +DJCi300._convertWheelRotation = function(value) { + // When you rotate the jogwheel, the controller always sends either 0x1 + // (clockwise) or 0x7F (counter clockwise). 0x1 should map to 1, 0x7F + // should map to -1 (IOW it's 7-bit signed). + return value < 0x40 ? 1 : -1; +}; + +// The touch action on the jog wheel's top surface +DJCi300.wheelTouch = function(channel, control, value, _status, _group) { + var deck = channel; + if (value > 0) { + // Touching the wheel. + if (engine.getValue("[Channel" + deck + "]", "play") !== 1 || DJCi300.scratchButtonState) { + DJCi300._scratchEnable(deck); + DJCi300.scratchAction[deck] = DJCi300.kScratchActionScratch; + } else { + DJCi300.scratchAction[deck] = DJCi300.kScratchActionBend; + } + } else { + // Released the wheel. + engine.scratchDisable(deck); + DJCi300.scratchAction[deck] = DJCi300.kScratchActionNone; + } +}; + +// The touch action on the jog wheel's top surface while holding shift +DJCi300.wheelTouchShift = function(channel, control, value, _status, _group) { + var deck = channel - 3; + // We always enable scratching regardless of button state. + if (value > 0) { + DJCi300._scratchEnable(deck); + DJCi300.scratchAction[deck] = DJCi300.kScratchActionSeek; + } else { + // Released the wheel. + engine.scratchDisable(deck); + DJCi300.scratchAction[deck] = DJCi300.kScratchActionNone; + } +}; + +// Scratching on the jog wheel (rotating it while pressing the top surface) +DJCi300.scratchWheel = function(channel, control, value, status, _group) { + var deck; + switch (status) { + case 0xB1: + case 0xB4: + deck = 1; + break; + case 0xB2: + case 0xB5: + deck = 2; + break; + default: + return; + } + var interval = DJCi300._convertWheelRotation(value); + var scratchAction = DJCi300.scratchAction[deck]; + if (scratchAction === DJCi300.kScratchActionScratch) { + engine.scratchTick(deck, interval * DJCi300.scratchScale); + } else if (scratchAction === DJCi300.kScratchActionSeek) { + engine.scratchTick(deck, + interval * DJCi300.scratchScale * + DJCi300.scratchShiftMultiplier); + } else { + engine.setValue( + "[Channel" + deck + "]", "jog", interval * DJCi300.bendScale); + } +}; + +// Bending on the jog wheel (rotating using the edge) +DJCi300.bendWheel = function(channel, control, value, _status, _group) { + var interval = DJCi300._convertWheelRotation(value); + engine.setValue( + "[Channel" + channel + "]", "jog", interval * DJCi300.bendScale); +}; + +DJCi300.shutdown = function() { + midi.sendShortMsg(0xB0, 0x7F, 0x00); +}; diff --git a/res/controllers/Hercules_DJControl_Inpulse_300.midi.xml b/res/controllers/Hercules_DJControl_Inpulse_300.midi.xml new file mode 100644 index 00000000000..d43df23ad9d --- /dev/null +++ b/res/controllers/Hercules_DJControl_Inpulse_300.midi.xml @@ -0,0 +1,2669 @@ + + + + Hercules DJControl Inpulse 300 + DJ Phatso for Hercules Technical Support + MIDI Preset for Hercules DJControl Inpulse 300 + https://www.mixxx.org/wiki/doku.php/hercules_djcontrol_inpulse_300 + https://www.mixxx.org/forums/viewtopic.php?f=7&t=12599 + + + + + + + + + + + + + + [Library] + MoveFocus + Browser button + 0x90 + 0x00 + + + + + + + + [AutoDJ] + enabled + AutoDJ On/Off + 0x90 + 0x03 + + + + + + + + [Channel1] + play + Play button + 0x91 + 0x07 + + + + + + + [Channel1] + cue_default + Cue button + 0x91 + 0x06 + + + + + + + [Channel1] + sync_enabled + Sync button + 0x91 + 0x05 + + + + + + + [Channel1] + pfl + PFL button + 0x91 + 0x0C + + + + + + + [Channel1] + LoadSelectedTrack + LOAD A button + 0x91 + 0x0D + + + + + + + [Channel1] + slip_enabled + SLIP button + 0x91 + 0x01 + + + + + + + [Channel1] + keylock + Q button + 0x91 + 0x02 + + + + + + + + [Channel1] + DJCi300.vinylButton + Vinyl Deck A + 0x91 + 0x03 + + + + + + + + [Channel1] + DJCi300.wheelTouch + Jog Wheel Touch Deck A + 0x91 + 0x08 + + + + + + + + [Channel1] + beatloop_4_activate + Loop In button + 0x91 + 0x09 + + + + + + [Channel1] + reloop_toggle + Loop Out button + 0x91 + 0x0A + + + + + + + + [EffectRack1_EffectUnit1_Effect3] + enabled + FX Rack 1 - Slot 3 On/Off + 0x91 + 0x00 + + + + + + + + + + [Channel2] + play + Play button + 0x92 + 0x07 + + + + + + + [Channel2] + cue_default + Cue button + 0x92 + 0x06 + + + + + + + [Channel2] + sync_enabled + Sync button + 0x92 + 0x05 + + + + + + + [Channel2] + pfl + PFL button + 0x92 + 0x0C + + + + + + + [Channel2] + LoadSelectedTrack + LOAD B button + 0x92 + 0x0D + + + + + + + [Channel2] + slip_enabled + SLIP button + 0x92 + 0x01 + + + + + + + [Channel2] + keylock + Q button + 0x92 + 0x02 + + + + + + + [Channel2] + DJCi300.vinylButton + Vinyl Deck B + 0x92 + 0x03 + + + + + + + [Channel2] + DJCi300.wheelTouch + Jog Wheel Touch Deck B + 0x92 + 0x08 + + + + + + + [Channel2] + beatloop_4_activate + Loop In button + 0x92 + 0x09 + + + + + + [Channel2] + reloop_toggle + Loop Out button + 0x92 + 0x0A + + + + + + + + [EffectRack1_EffectUnit2_Effect3] + enabled + FX Rack 2 - Slot 3 On/Off + 0x92 + 0x00 + + + + + + + + + + [Master] + maximize_library + Browser button - Maximize Library view + 0x93 + 0x00 + + + + + + + + + [Channel1] + DJCi300.wheelTouchShift + Jog Wheel Shift Touch Deck A + 0x94 + 0x08 + + + + + + + + [Channel1] + play_stutter + SHIFT + Play: Play Stutter + 0x94 + 0x07 + + + + + + + [Channel1] + start_play + SHIFT + Cue: REWIND to beginning + 0x94 + 0x06 + + + + + + + [Channel1] + sync_master + SHIFT + Sync: Sync Master + 0x94 + 0x05 + + + + + + + [Channel1] + loop_halve + SHIFT + Loop In: Loop Half + 0x94 + 0x09 + + + + + + [Channel1] + loop_double + SHIFT + Loop Out: Loop Double + 0x94 + 0x0A + + + + + + + [EffectRack1_EffectUnit1_Effect3] + next_effect + SHIFT + Effect ON: Next effect + 0x94 + 0x00 + + + + + + + + + [Channel2] + DJCi300.wheelTouchShift + Jog Wheel Shift Touch Deck B + 0x95 + 0x08 + + + + + + + + [Channel2] + play_stutter + SHIFT + Play: Play Stutter + 0x95 + 0x07 + + + + + + + [Channel2] + start_play + SHIFT + Cue: REWIND to beginning + 0x95 + 0x06 + + + + + + + [Channel2] + sync_master + SHIFT + Sync: Sync Master + 0x95 + 0x05 + + + + + + + [Channel2] + loop_halve + SHIFT + Loop In: Loop Half + 0x95 + 0x09 + + + + + + [Channel2] + loop_double + SHIFT + Loop Ou: Loop Double + 0x95 + 0x0A + + + + + + + [EffectRack1_EffectUnit2_Effect3] + next_effect + SHIFT + Effect ON: Next effect + 0x95 + 0x00 + + + + + + + + + + [Channel1] + hotcue_1_activate + PAD 1 + 0x96 + 0x00 + + + + + + [Channel1] + hotcue_2_activate + PAD 2 + 0x96 + 0x01 + + + + + + [Channel1] + hotcue_3_activate + PAD 3 + 0x96 + 0x02 + + + + + + [Channel1] + hotcue_4_activate + PAD 4 + 0x96 + 0x03 + + + + + + [Channel1] + hotcue_5_activate + PAD 5 + 0x96 + 0x04 + + + + + + [Channel1] + hotcue_6_activate + PAD 6 + 0x96 + 0x05 + + + + + + [Channel1] + hotcue_7_activate + PAD 7 + 0x96 + 0x06 + + + + + + [Channel1] + hotcue_8_activate + PAD 8 + 0x96 + 0x07 + + + + + + + [Channel1] + hotcue_1_clear + PAD 1 + 0x96 + 0x08 + + + + + + [Channel1] + hotcue_2_clear + PAD 2 + 0x96 + 0x09 + + + + + + [Channel1] + hotcue_3_clear + PAD 3 + 0x96 + 0x0A + + + + + + [Channel1] + hotcue_4_clear + PAD 4 + 0x96 + 0x0B + + + + + + [Channel1] + hotcue_5_clear + PAD 5 + 0x96 + 0x0C + + + + + + [Channel1] + hotcue_6_clear + PAD 6 + 0x96 + 0x0D + + + + + + [Channel1] + hotcue_7_clear + PAD 7 + 0x96 + 0x0E + + + + + + [Channel1] + hotcue_8_clear + PAD 8 + 0x96 + 0x0F + + + + + + + [Channel1] + beatlooproll_0.125_activate + Loop 1/8 Beat (Pad 1) + 0x96 + 0x10 + + + + + + [Channel1] + beatlooproll_0.25_activate + Loop 1/4 Beat (Pad 2) + 0x96 + 0x11 + + + + + + [Channel1] + beatlooproll_0.5_activate + Loop 1/2 Beat (Pad 3) + 0x96 + 0x12 + + + + + + [Channel1] + beatlooproll_1_activate + Loop 1 Beat (Pad 4) + 0x96 + 0x13 + + + + + + [Channel1] + beatlooproll_2_activate + Loop 2 Beat (Pad 5) + 0x96 + 0x14 + + + + + + [Channel1] + beatlooproll_4_activate + Loop 2 Beat (Pad 6) + 0x96 + 0x15 + + + + + + [Channel1] + beatlooproll_8_activate + Loop 8 Beat (Pad 7) + 0x96 + 0x16 + + + + + + [Channel1] + beatlooproll_16_activate + Loop 2 Beat (Pad 8) + 0x96 + 0x17 + + + + + + + [Sampler1] + cue_gotoandplay + PAD 1 + 0x96 + 0x30 + + + + + + [Sampler2] + cue_gotoandplay + PAD 2 + 0x96 + 0x31 + + + + + + [Sampler3] + cue_gotoandplay + PAD 3 + 0x96 + 0x32 + + + + + + [Sampler4] + cue_gotoandplay + PAD 4 + 0x96 + 0x33 + + + + + + [Sampler5] + cue_gotoandplay + PAD 5 + 0x96 + 0x34 + + + + + + [Sampler6] + cue_gotoandplay + PAD 6 + 0x96 + 0x35 + + + + + + [Sampler7] + cue_gotoandplay + PAD 7 + 0x96 + 0x36 + + + + + + [Sampler8] + cue_gotoandplay + PAD 8 + 0x96 + 0x37 + + + + + + + + + + + + + [Channel1] + beatjump_1_backward + PAD 1 + 0x96 + 0x70 + + + + + + [Channel1] + beatjump_1_forward + PAD 2 + 0x96 + 0x71 + + + + + + [Channel1] + beatjump_2_backward + PAD 3 + 0x96 + 0x72 + + + + + + [Channel1] + beatjump_2_forward + PAD 4 + 0x96 + 0x73 + + + + + + [Channel1] + beatjump_4_backward + PAD 5 + 0x96 + 0x74 + + + + + + [Channel1] + beatjump_4_forward + PAD 6 + 0x96 + 0x75 + + + + + + [Channel1] + beatjump_8_backward + PAD 7 + 0x96 + 0x76 + + + + + + [Channel1] + beatjump_8_forward + PAD 8 + 0x96 + 0x77 + + + + + + + + + + + [Channel2] + hotcue_1_activate + PAD 1 + 0x97 + 0x00 + + + + + + [Channel2] + hotcue_2_activate + PAD 2 + 0x97 + 0x01 + + + + + + [Channel2] + hotcue_3_activate + PAD 3 + 0x97 + 0x02 + + + + + + [Channel2] + hotcue_4_activate + PAD 4 + 0x97 + 0x03 + + + + + + [Channel2] + hotcue_5_activate + PAD 5 + 0x97 + 0x04 + + + + + + [Channel2] + hotcue_6_activate + PAD 6 + 0x97 + 0x05 + + + + + + [Channel2] + hotcue_7_activate + PAD 7 + 0x97 + 0x06 + + + + + + [Channel2] + hotcue_8_activate + PAD 8 + 0x97 + 0x07 + + + + + + + [Channel2] + hotcue_1_clear + PAD 1 + 0x97 + 0x08 + + + + + + [Channel2] + hotcue_2_clear + PAD 2 + 0x97 + 0x09 + + + + + + [Channel2] + hotcue_3_clear + PAD 3 + 0x97 + 0x0A + + + + + + [Channel2] + hotcue_4_clear + PAD 4 + 0x97 + 0x0B + + + + + + [Channel2] + hotcue_5_clear + PAD 5 + 0x97 + 0x0C + + + + + + [Channel2] + hotcue_6_clear + PAD 6 + 0x97 + 0x0D + + + + + + [Channel2] + hotcue_7_clear + PAD 7 + 0x97 + 0x0E + + + + + + [Channel2] + hotcue_8_clear + PAD 8 + 0x97 + 0x0F + + + + + + + [Channel2] + beatlooproll_0.125_activate + Loop 1/8 Beat (Pad 1) + 0x97 + 0x10 + + + + + + [Channel2] + beatlooproll_0.25_activate + Loop 1/4 Beat (Pad 2) + 0x97 + 0x11 + + + + + + [Channel2] + beatlooproll_0.5_activate + Loop 1/2 Beat (Pad 3) + 0x97 + 0x12 + + + + + + [Channel2] + beatlooproll_1_activate + Loop 1 Beat (Pad 4) + 0x97 + 0x13 + + + + + + [Channel2] + beatlooproll_2_activate + Loop 2 Beat (Pad 5) + 0x97 + 0x14 + + + + + + [Channel2] + beatlooproll_4_activate + Loop 2 Beat (Pad 6) + 0x97 + 0x15 + + + + + + [Channel2] + beatlooproll_8_activate + Loop 8 Beat (Pad 7) + 0x97 + 0x16 + + + + + + [Channel2] + beatlooproll_16_activate + Loop 2 Beat (Pad 8) + 0x97 + 0x17 + + + + + + + [Sampler1] + cue_gotoandplay + PAD 1 + 0x97 + 0x30 + + + + + + [Sampler2] + cue_gotoandplay + PAD 2 + 0x97 + 0x31 + + + + + + [Sampler3] + cue_gotoandplay + PAD 3 + 0x97 + 0x32 + + + + + + [Sampler4] + cue_gotoandplay + PAD 1 + 0x97 + 0x33 + + + + + + [Sampler5] + cue_gotoandplay + PAD 5 + 0x97 + 0x34 + + + + + + [Sampler6] + cue_gotoandplay + PAD 6 + 0x97 + 0x35 + + + + + + [Sampler7] + cue_gotoandplay + PAD 7 + 0x97 + 0x36 + + + + + + [Sampler8] + cue_gotoandplay + PAD 8 + 0x97 + 0x37 + + + + + + + + + + + + + [Channel2] + beatjump_1_backward + PAD 1 + 0x97 + 0x70 + + + + + + [Channel2] + beatjump_1_forward + PAD 2 + 0x97 + 0x71 + + + + + + [Channel2] + beatjump_2_backward + PAD 3 + 0x97 + 0x72 + + + + + + [Channel2] + beatjump_2_forward + PAD 4 + 0x97 + 0x73 + + + + + + [Channel2] + beatjump_4_backward + PAD 5 + 0x97 + 0x74 + + + + + + [Channel2] + beatjump_4_forward + PAD 6 + 0x97 + 0x75 + + + + + + [Channel2] + beatjump_8_backward + PAD 7 + 0x97 + 0x76 + + + + + + [Channel2] + beatjump_8_forward + PAD 8 + 0x97 + 0x77 + + + + + + + + + + + [Master] + crossfader + Crossfader + 0xB0 + 0x00 + + + + + + + [Library] + MoveVertical + Move Vertical (Browser Knob) + 0xB0 + 0x01 + + + + + + + + + + [Channel1] + volume + Volume Deck A + 0xB1 + 0x00 + + + + + + + [EqualizerRack1_[Channel1]_Effect1] + parameter1 + EQ LOW Deck A + 0xB1 + 0x02 + + + + + + [EqualizerRack1_[Channel1]_Effect1] + parameter2 + EQ MID Deck A + 0xB1 + 0x03 + + + + + + [EqualizerRack1_[Channel1]_Effect1] + parameter3 + EQ HIGH Deck A + 0xB1 + 0x04 + + + + + + + [Channel1] + pregain + Gain Deck A + 0xB1 + 0x05 + + + + + + + [QuickEffectRack1_[Channel1]] + super1 + Filter Deck A + 0xB1 + 0x01 + + + + + + + [Channel1] + rate + 0xB1 + 0x08 + + + + + + [Channel1] + rate + 0xB1 + 0x28 + + + + + + + [Channel1] + DJCi300.scratchWheel + Scratch Deck A (Jog-Wheel) + 0xB1 + 0x0A + + + + + + [Channel1] + DJCi300.bendWheel + Pitch Bend Deck A (Jog-Wheel) + 0xB1 + 0x09 + + + + + + [Channel1] + DJCi300.scratchPad + Pitch Bend Deck A (FX PAD 7 / 8 ) + 0xB1 + 0x0C + + + + + + + [EffectRack1_EffectUnit1_Effect3] + meta + Effect Rack 1 - Slot 3 Level + 0xB1 + 0x06 + + + + + + [EffectRack1_EffectUnit1] + mix + Effect Rack 1 - Dry/Wet Level + 0xB1 + 0x07 + + + + + + + + + + + [Channel2] + volume + Volume Deck A + 0xB2 + 0x00 + + + + + + + [EqualizerRack1_[Channel2]_Effect1] + parameter1 + EQ LOW Deck A + 0xB2 + 0x02 + + + + + + [EqualizerRack1_[Channel2]_Effect1] + parameter2 + EQ MID Deck A + 0xB2 + 0x03 + + + + + + [EqualizerRack1_[Channel2]_Effect1] + parameter3 + EQ HIGH Deck A + 0xB2 + 0x04 + + + + + + + [Channel2] + pregain + Gain Deck A + 0xB2 + 0x05 + + + + + + + [QuickEffectRack1_[Channel2]] + super1 + Filter Deck A + 0xB2 + 0x01 + + + + + + + [Channel2] + rate + 0xB2 + 0x08 + + + + + + [Channel2] + rate + 0xB2 + 0x28 + + + + + + + [Channel2] + DJCi300.scratchWheel + Pitch Bend Deck B (Jog-Wheel) + 0xB2 + 0x0A + + + + + + [Channel2] + DJCi300.bendWheel + Pitch Bend Deck B (Jog-Wheel) + 0xB2 + 0x09 + + + + + + [Channel2] + DJCi300.scratchPad + Pitch Bend Deck B (FX PAD 7 / 8 ) + 0xB2 + 0x0C + + + + + + + + [EffectRack1_EffectUnit2_Effect3] + meta + Effect Rack 2 - Slot 3 Level + 0xB2 + 0x06 + + + + + + [EffectRack1_EffectUnit2] + mix + Effect Rack 2 - Dry/Wet Level + 0xB2 + 0x07 + + + + + + + + + [Channel1] + DJCi300.scratchWheel + SHIFT + Scratch Deck A (Jog-Wheel) + 0xB4 + 0x0A + + + + + + + + + [Channel2] + DJCi300.scratchWheel + SHIFT + Scratch Deck B (Jog-Wheel) + 0xB5 + 0x0A + + + + + + + + + + + [Channel1] + play_indicator + PLAY LED Deck A + 0.5 + 1 + 0x91 + 0x07 + 0x7f + 0x0 + + + [Channel1] + cue_indicator + CUE LED Deck A + 0.5 + 1 + 0x91 + 0x06 + 0x7f + 0x0 + + + [Channel1] + start_play + CUE LED Deck A(SHIFT MODE) + 0.5 + 1 + 0x94 + 0x06 + 0x7f + 0x0 + + + [Channel1] + sync_enabled + SYNC LED Deck A + 0.5 + 1 + 0x91 + 0x05 + 0x7f + 0x0 + + + [Channel1] + sync_master + SYNC LED Deck A(SHIFT mode) + 0.5 + 1 + 0x93 + 0x05 + 0x7f + 0x0 + + + [Channel1] + slip_enabled + Slip button Deck A + 0.5 + 1 + 0x91 + 0x01 + 0x7f + 0x0 + + + [Channel1] + keylock + Q button Deck A + 0.5 + 1 + 0x91 + 0x02 + 0x7f + 0x0 + + + [Channel2] + play_indicator + PLAY LED Deck B + 0.5 + 1 + 0x92 + 0x07 + 0x7f + 0x0 + + + [Channel2] + cue_indicator + CUE LED Deck B + 0.5 + 1 + 0x92 + 0x06 + 0x7f + 0x0 + + + [Channel2] + sync_enabled + SYNC LED Deck B + 0.5 + 1 + 0x92 + 0x05 + 0x7f + 0x0 + + + [Channel2] + sync_master + SYNC LED Deck B(SHIFT mode) + 0.5 + 1 + 0x94 + 0x05 + 0x7f + 0x0 + + + [Channel2] + slip_enabled + Slip button Deck B + 0.5 + 1 + 0x92 + 0x01 + 0x7f + 0x0 + + + [Channel2] + keylock + Q button Deck B + 0.5 + 1 + 0x92 + 0x02 + 0x7f + 0x0 + + + + [Channel1] + beatloop_4_enabled + Loop In LED DA + 0.5 + 1 + 0x91 + 0x09 + 0x7f + 0x00 + + + [Channel2] + beatloop_4_enabled + Loop In LED DB + 0.5 + 1 + 0x92 + 0x09 + 0x7f + 0x00 + + + + [Channel1] + pfl + PFL LED DECK A + 0.5 + 1 + 0x91 + 0x0C + 0x7f + 0x0 + + + [Channel2] + pfl + PFL LED DECK B + 0.5 + 1 + 0x92 + 0x0C + 0x7f + 0x0 + + + + [Library] + MoveFocus + Browser LED (BLUE) + 0.5 + 1 + 0x90 + 0x04 + 0x05 + 0x07 + + + [Master] + maximize_library + Browser LED (GREEN) + 0.5 + 1 + 0x90 + 0x04 + 0x07 + 0x05 + + + + [AutoDJ] + enabled + Auto DJ On + 0.5 + 1 + 0x90 + 0x03 + 0x7f + 0x0 + + + + [EffectRack1_EffectUnit1_Effect3] + enabled + Effect On/Off button + 0.5 + 1 + 0x91 + 0x00 + 0x7f + 0x0 + + + [EffectRack1_EffectUnit2_Effect3] + enabled + Effect On/Off buttonn + 0.5 + 1 + 0x92 + 0x00 + 0x7f + 0x0 + + + + [Channel1] + end_of_track + Auto DJ On + 0.5 + 1 + 0x91 + 0x1C + 0x7f + 0x0 + + + [Channel1] + end_of_track + Auto DJ On + 0.5 + 1 + 0x91 + 0x1D + 0x7f + 0x0 + + + [Channel2] + end_of_track + Auto DJ On + 0.5 + 1 + 0x92 + 0x1C + 0x7f + 0x0 + + + [Channel2] + end_of_track + Auto DJ On + 0.5 + 1 + 0x92 + 0x1D + 0x7f + 0x0 + + + + [Channel1] + hotcue_1_enabled + Hotcue 1 (Pad 1) + 0x96 + 0x00 + 0x7E + 0.5 + + + [Channel1] + hotcue_2_enabled + Hotcue 2 (Pad 2) + 0x96 + 0x01 + 0x7E + 0.5 + + + [Channel1] + hotcue_3_enabled + Hotcue 3 (Pad 3) + 0x96 + 0x02 + 0x7E + 0.5 + + + [Channel1] + hotcue_4_enabled + Hotcue 4 (Pad 4) + 0x96 + 0x03 + 0x7E + 0.5 + + + [Channel1] + hotcue_5_enabled + Hotcue 5 (Pad 5) + 0x96 + 0x04 + 0x7E + 0.5 + + + [Channel1] + hotcue_6_enabled + Hotcue 6 (Pad 6) + 0x96 + 0x05 + 0x7E + 0.5 + + + [Channel1] + hotcue_7_enabled + Hotcue 7 (Pad 7) + 0x96 + 0x06 + 0x7E + 0.5 + + + [Channel1] + hotcue_8_enabled + Hotcue 8 (Pad 8) + 0x96 + 0x07 + 0x7E + 0.5 + + + [Channel2] + hotcue_1_enabled + Hotcue 1 (Pad 1) + 0x97 + 0x00 + 0x7E + 0.5 + + + [Channel2] + hotcue_2_enabled + Hotcue 2 (Pad 2) + 0x97 + 0x01 + 0x7E + 0.5 + + + [Channel2] + hotcue_3_enabled + Hotcue 3 (Pad 3) + 0x97 + 0x02 + 0x7E + 0.5 + + + [Channel2] + hotcue_4_enabled + Hotcue 4 (Pad 4) + 0x97 + 0x03 + 0x7E + 0.5 + + + [Channel2] + hotcue_5_enabled + Hotcue 5 (Pad 5) + 0x97 + 0x04 + 0x7E + 0.5 + + + [Channel2] + hotcue_6_enabled + Hotcue 6 (Pad 6) + 0x97 + 0x05 + 0x7E + 0.5 + + + [Channel2] + hotcue_7_enabled + Hotcue 7 (Pad 7) + 0x97 + 0x06 + 0x7E + 0.5 + + + [Channel2] + hotcue_8_enabled + Hotcue 8 (Pad 8) + 0x97 + 0x07 + 0x7E + 0.5 + + + + [Channel1] + hotcue_1_enabled + Hotcue 1 (Pad 1) + 0x96 + 0x08 + 0x7E + 0.5 + + + [Channel1] + hotcue_2_enabled + Hotcue 2 (Pad 2) + 0x96 + 0x09 + 0x7E + 0.5 + + + [Channel1] + hotcue_3_enabled + Hotcue 3 (Pad 3) + 0x96 + 0x0A + 0x7E + 0.5 + + + [Channel1] + hotcue_4_enabled + Hotcue 4 (Pad 4) + 0x96 + 0x0B + 0x7E + 0.5 + + + [Channel1] + hotcue_5_enabled + Hotcue 5 (Pad 5) + 0x96 + 0x0C + 0x7E + 0.5 + + + [Channel1] + hotcue_6_enabled + Hotcue 6 (Pad 6) + 0x96 + 0x0D + 0x7E + 0.5 + + + [Channel1] + hotcue_7_enabled + Hotcue 7 (Pad 7) + 0x96 + 0x0E + 0x7E + 0.5 + + + [Channel1] + hotcue_8_enabled + Hotcue 8 (Pad 8) + 0x96 + 0x0F + 0x7E + 0.5 + + + [Channel2] + hotcue_1_enabled + Hotcue 1 (Pad 1) + 0x97 + 0x08 + 0x7E + 0.5 + + + [Channel2] + hotcue_2_enabled + Hotcue 2 (Pad 2) + 0x97 + 0x09 + 0x7E + 0.5 + + + [Channel2] + hotcue_3_enabled + Hotcue 3 (Pad 3) + 0x97 + 0x0A + 0x7E + 0.5 + + + [Channel2] + hotcue_4_enabled + Hotcue 4 (Pad 4) + 0x97 + 0x0B + 0x7E + 0.5 + + + [Channel2] + hotcue_5_enabled + Hotcue 5 (Pad 5) + 0x97 + 0x0C + 0x7E + 0.5 + + + [Channel2] + hotcue_6_enabled + Hotcue 6 (Pad 6) + 0x97 + 0x0D + 0x7E + 0.5 + + + [Channel2] + hotcue_7_enabled + Hotcue 7 (Pad 7) + 0x97 + 0x0E + 0x7E + 0.5 + + + [Channel2] + hotcue_8_enabled + Hotcue 8 (Pad 8) + 0x97 + 0x0F + 0x7E + 0.5 + + + + [Channel1] + beatlooproll_0.125_activate + Loop 1/8 Beat (Pad 1) + 0x96 + 0x10 + 0x7F + 0.5 + + + [Channel1] + beatlooproll_0.25_activate + Loop 1/4 Beat (Pad 2) + 0x96 + 0x11 + 0x7F + 0.5 + + + [Channel1] + beatlooproll_0.5_activate + Loop 1/2 Beat (Pad 3) + 0x96 + 0x12 + 0x7F + 0.5 + + + [Channel1] + beatlooproll_1_activate + Loop 1 Beat (Pad 4) + 0x96 + 0x13 + 0x7F + 0.5 + + + [Channel1] + beatlooproll_2_activate + Loop 2 Beat (Pad 5) + 0x96 + 0x14 + 0x7F + 0.5 + + + [Channel1] + beatlooproll_4_activate + Loop 4 Beat (Pad 6) + 0x96 + 0x15 + 0x7F + 0.5 + + + [Channel1] + beatlooproll_8_activate + Loop 8 Beat (Pad 7) + 0x96 + 0x16 + 0x7F + 0.5 + + + [Channel1] + beatlooproll_16_activate + Loop 16 Beat (Pad 8) + 0x96 + 0x17 + 0x7F + 0.5 + + + [Channel2] + beatlooproll_0.125_activate + Loop 1/8 Beat (Pad 1) + 0x97 + 0x10 + 0x7F + 0.5 + + + [Channel2] + beatlooproll_0.25_activate + Loop 1/4 Beat (Pad 2) + 0x97 + 0x11 + 0x7F + 0.5 + + + [Channel2] + beatlooproll_0.5_activate + Loop 1/2 Beat (Pad 3) + 0x97 + 0x12 + 0x7F + 0.5 + + + [Channel2] + beatlooproll_1_activate + Loop 1 Beat (Pad 4) + 0x97 + 0x13 + 0x7F + 0.5 + + + [Channel2] + beatlooproll_2_activate + Loop 2 Beat (Pad 5) + 0x97 + 0x14 + 0x7F + 0.5 + + + [Channel2] + beatlooproll_4_activate + Loop 4 Beat (Pad 6) + 0x97 + 0x15 + 0x7F + 0.5 + + + [Channel2] + beatlooproll_8_activate + Loop 8 Beat (Pad 7) + 0x97 + 0x16 + 0x7F + 0.5 + + + [Channel2] + beatlooproll_16_activate + Loop 16 Beat (Pad 8) + 0x97 + 0x17 + 0x7F + 0.5 + + + + [Sampler1] + play_indicator + (Pad 1 DECK A) + 0x96 + 0x30 + 0x7F + 0.5 + + + [Sampler1] + play_indicator + (Pad 1 DECK B) + 0x97 + 0x30 + 0x7F + 0.5 + + + [Sampler2] + play_indicator + (Pad 2 DECK A) + 0x96 + 0x31 + 0x7F + 0.5 + + + [Sampler2] + play_indicator + (Pad 2 DECK B) + 0x97 + 0x31 + 0x7F + 0.5 + + + [Sampler3] + play_indicator + (Pad 3 DECK A) + 0x96 + 0x32 + 0x7F + 0.5 + + + [Sampler3] + play_indicator + (Pad 3 DECK B) + 0x97 + 0x32 + 0x7F + 0.5 + + + [Sampler4] + play_indicator + (Pad 4 DECK A) + 0x96 + 0x33 + 0x7F + 0.5 + + + [Sampler4] + play_indicator + (Pad 4 DECK B) + 0x97 + 0x33 + 0x7F + 0.5 + + + [Sampler5] + play_indicator + (Pad 5 DECK A) + 0x96 + 0x34 + 0x7F + 0.5 + + + [Sampler5] + play_indicator + (Pad 5 DECK B) + 0x97 + 0x34 + 0x7F + 0.5 + + + [Sampler6] + play_indicator + (Pad 6 DECK A) + 0x96 + 0x35 + 0x7F + 0.5 + + + [Sampler6] + play_indicator + (Pad 6 DECK B) + 0x97 + 0x35 + 0x7F + 0.5 + + + [Sampler7] + play_indicator + (Pad 7 DECK A) + 0x96 + 0x36 + 0x7F + 0.5 + + + [Sampler7] + play_indicator + (Pad 7 DECK B) + 0x97 + 0x36 + 0x7F + 0.5 + + + [Sampler8] + play_indicator + (Pad 8 DECK A) + 0x96 + 0x37 + 0x7F + 0.5 + + + [Sampler8] + play_indicator + (Pad 4 DECK B) + 0x97 + 0x37 + 0x7F + 0.5 + + + + [Channel1] + beatjump_1_backward + (Beatjump 1 backward DECK A) + 0x96 + 0x70 + 0x7F + 0.5 + + + [Channel2] + beatjump_1_backward + (Beatjump 1 backward DECK B) + 0x97 + 0x70 + 0x7F + 0.5 + + + [Channel1] + beatjump_1_forward + (Beatjump 1 forward DECK A) + 0x96 + 0x71 + 0x7F + 0.5 + + + [Channel2] + beatjump_1_forward + (Beatjump 1 forward DECK B) + 0x97 + 0x71 + 0x7F + 0.5 + + + [Channel1] + beatjump_2_backward + (Beatjump 2 backward DECK A) + 0x96 + 0x72 + 0x7F + 0.5 + + + [Channel2] + beatjump_2_backward + (Beatjump 2 backward DECK B) + 0x97 + 0x72 + 0x7F + 0.5 + + + [Channel1] + beatjump_2_forward + (Beatjump 2 forward DECK A) + 0x96 + 0x73 + 0x7F + 0.5 + + + [Channel2] + beatjump_2_forward + (Beatjump 2 forward DECK B) + 0x97 + 0x73 + 0x7F + 0.5 + + + [Channel1] + beatjump_4_backward + (Beatjump 4 backward DECK A) + 0x96 + 0x74 + 0x7F + 0.5 + + + [Channel2] + beatjump_4_backward + (Beatjump 4 backward DECK B) + 0x97 + 0x74 + 0x7F + 0.5 + + + [Channel1] + beatjump_4_forward + (Beatjump 4 forward DECK A) + 0x96 + 0x75 + 0x7F + 0.5 + + + [Channel2] + beatjump_4_forward + (Beatjump 4 forward DECK B) + 0x97 + 0x75 + 0x7F + 0.5 + + + [Channel1] + beatjump_8_backward + (Beatjump 8 backward DECK A) + 0x96 + 0x76 + 0x7F + 0.5 + + + [Channel2] + beatjump_8_backward + (Beatjump 8 backward DECK B) + 0x97 + 0x76 + 0x7F + 0.5 + + + [Channel1] + beatjump_8_forward + (Beatjump 8 forward DECK A) + 0x96 + 0x77 + 0x7F + 0.5 + + + [Channel2] + beatjump_8_forward + (Beatjump 8 forward Deck B) + 0x97 + 0x77 + 0x7F + 0.5 + + + +