diff --git a/res/controllers/Korg-KAOSS-DJ-scripts.js b/res/controllers/Korg-KAOSS-DJ-scripts.js index 35827ebb10f0..09bfcb902e6e 100644 --- a/res/controllers/Korg-KAOSS-DJ-scripts.js +++ b/res/controllers/Korg-KAOSS-DJ-scripts.js @@ -1,5 +1,5 @@ // Korg KAOSS DJ controller mapping for Mixxx -// Seb Dooris, Fayaaz Ahmed, Lee Arromba +// Seb Dooris, Fayaaz Ahmed, Lee Arromba, Raphael Quast var KAOSSDJ = {}; var ON = 0x7F, @@ -7,26 +7,31 @@ var ON = 0x7F, UP = 0x01, DOWN = 0x7F; var ledChannel = { - 'btnsL': 0x97, - 'btnsR': 0x98, - 'knobsL': 0xB7, - 'knobsR': 0xB8, - 'master': 0xB6 -}; -var led = { - 'cue': 0x1E, - 'sync': 0x1D, - 'play': 0x1B, - 'headphones': 0x19, - 'fx': 0x18, // warning: led is owned by controller - 'stripL': 0x15, - 'stripM': 0x16, - 'stripR': 0x17, - 'loopStripL': 0x0F, - 'loopStripM': 0x10, - 'loopStripR': 0x11, + "btnsL": 0x97, + "btnsR": 0x98, + "knobsL": 0xB7, + "knobsR": 0xB8, + "master": 0xB6 }; +// var led = { +// "cue": 0x1E, +// "sync": 0x1D, +// "play": 0x1B, +// "headphones": 0x19, +// "fx": 0x18, // warning: led is owned by controller +// "stripL": 0x15, +// "stripM": 0x16, +// "stripR": 0x17, +// "loopStripL": 0x0F, +// "loopStripM": 0x10, +// "loopStripR": 0x11, +// }; + +// shift button state variables +var shiftLeftPressed = false; +var shiftRightPressed = false; + // initialise decks KAOSSDJ.deck = function(deckNumber) { this.deckNumber = deckNumber; @@ -42,13 +47,13 @@ for (var i = 0; i < 4; i++) { // TODO: currently only 2 decks supported. is 4 po // ==== lifecycle ==== -KAOSSDJ.init = function(id, debugging) { +KAOSSDJ.init = function(_id, _debugging) { // turn on main led channels var ledChannels = [ - ledChannel['knobsL'], - ledChannel['knobsR'], - ledChannel['master'] - ] + ledChannel.knobsL, + ledChannel.knobsR, + ledChannel.master + ]; for (var led = 0x00; led <= 0xFF; led++) { for (var i = 0; i < ledChannels.length; i++) { midi.sendShortMsg(ledChannels[i], led, ON); @@ -61,10 +66,10 @@ KAOSSDJ.init = function(id, debugging) { midi.sendSysexMsg(ControllerStatusSysex, ControllerStatusSysex.length); }; -KAOSSDJ.shutdown = function(id, debugging) { +KAOSSDJ.shutdown = function(_id, _debugging) { // turn off all LEDs for (var led = 0x00; led <= 0xFF; led++) { - for (key in ledChannel) { + for (var key in ledChannel) { midi.sendShortMsg(ledChannel[key], led, OFF); } } @@ -73,7 +78,7 @@ KAOSSDJ.shutdown = function(id, debugging) { // ==== helper ==== KAOSSDJ.getDeckIndexFromChannel = function(channel) { - return channel - 7 + return channel - 7; }; KAOSSDJ.getDeckByChannel = function(channel) { @@ -88,15 +93,15 @@ KAOSSDJ.updateDeckByChannel = function(channel, key, value) { // ==== mapped functions ==== -KAOSSDJ.wheelTouch = function(channel, control, value, status, group) { +KAOSSDJ.wheelTouch = function(channel, _control, value, _status, _group) { var alpha = 1.0 / 8; var beta = alpha / 32; var deck = KAOSSDJ.getDeckByChannel(channel); var deckNumber = deck.deckNumber; - var deck_playing = engine.getValue('[Channel' + deckNumber + ']', 'play_indicator'); + var deckPlaying = engine.getValue("[Channel" + deckNumber + "]", "play_indicator"); // If in scratch mode or not playing enable vinyl-like control - if (deck.jogWheelsInScratchMode || !deck_playing ) { + if (deck.jogWheelsInScratchMode || !deckPlaying) { if (value === ON) { // Enable scratching on touch engine.scratchEnable(deckNumber, 128, 33 + 1 / 3, alpha, beta); @@ -107,7 +112,7 @@ KAOSSDJ.wheelTouch = function(channel, control, value, status, group) { } }; -KAOSSDJ.wheelTurn = function(channel, control, value, status, group) { +KAOSSDJ.wheelTurn = function(channel, _control, value, _status, _group) { var deck = KAOSSDJ.getDeckByChannel(channel); var deckNumber = deck.deckNumber; var newValue = 0; @@ -119,11 +124,11 @@ KAOSSDJ.wheelTurn = function(channel, control, value, status, group) { if (engine.isScratching(deckNumber)) { engine.scratchTick(deckNumber, newValue); } else { - engine.setValue('[Channel' + deckNumber + ']', 'jog', newValue); // Pitch bend + engine.setValue("[Channel" + deckNumber + "]", "jog", newValue); // Pitch bend } }; -KAOSSDJ.wheelTurnShift = function(channel, control, value, status, group) { +KAOSSDJ.wheelTurnShift = function(channel, _control, value, _status, _group) { var deck = KAOSSDJ.getDeckByChannel(channel); if (deck.jogWheelsInScratchMode) { // Fast scratch @@ -137,68 +142,190 @@ KAOSSDJ.wheelTurnShift = function(channel, control, value, status, group) { engine.scratchTick(deck.deckNumber, newValue); } else { // Move beatgrid - if(value === UP){ - engine.setValue(deck.group, 'beats_translate_later', true); - } else if (value === DOWN){ - engine.setValue(deck.group, 'beats_translate_earlier', true); + if (value === UP) { + engine.setValue(deck.group, "beats_translate_later", true); + } else if (value === DOWN) { + engine.setValue(deck.group, "beats_translate_earlier", true); } } }; -KAOSSDJ.scratchMode = function(channel, control, value, status, group) { +KAOSSDJ.scratchMode = function(channel, _control, value, _status, _group) { if (value === ON) { // Turn scratch mode on jogwheel (LED is red) - KAOSSDJ.updateDeckByChannel(channel, 'jogWheelsInScratchMode', true); + KAOSSDJ.updateDeckByChannel(channel, "jogWheelsInScratchMode", true); } else if (value === OFF) { // Turn scratch mode on jogwheel (LED is off) - KAOSSDJ.updateDeckByChannel(channel, 'jogWheelsInScratchMode', false); + KAOSSDJ.updateDeckByChannel(channel, "jogWheelsInScratchMode", false); } }; -KAOSSDJ.browseKnob = function(channel, control, value, status, group) { - var nval = (value > 0x40 ? value - 0x80 : value); - engine.setValue(group, "SelectTrackKnob", nval); -}; - -KAOSSDJ.leftFxSwitch = function(channel, control, value, status, group) { - var deck = KAOSSDJ.getDeckByChannel(channel); - if(value === ON) { - KAOSSDJ.updateDeckByChannel(channel, 'fx', true); +KAOSSDJ.leftFxSwitch = function(channel, _control, value, _status, _group) { + if (value === ON) { + KAOSSDJ.updateDeckByChannel(channel, "fx", true); } else { - KAOSSDJ.updateDeckByChannel(channel, 'fx', false); + KAOSSDJ.updateDeckByChannel(channel, "fx", false); } }; -KAOSSDJ.rightFxSwitch = function(channel, control, value, status, group) { - if(value === ON) { - KAOSSDJ.updateDeckByChannel(channel, 'fx', true); +KAOSSDJ.rightFxSwitch = function(channel, _control, value, _status, _group) { + if (value === ON) { + KAOSSDJ.updateDeckByChannel(channel, "fx", true); } else { - KAOSSDJ.updateDeckByChannel(channel, 'fx', false); + KAOSSDJ.updateDeckByChannel(channel, "fx", false); } }; -KAOSSDJ.controllerFxTouchMoveVertical = function(channel, control, value, status, group) { +KAOSSDJ.controllerFxTouchMoveVertical = function(_channel, _control, value, _status, _group) { var decks = KAOSSDJ.decks; - for(key in decks) { + for (var key in decks) { var deck = decks[key]; - if(deck.fx) { - engine.setValue('[EffectRack1_EffectUnit'+deck.deckNumber +']', 'mix', value / 127); + if (deck.fx) { + engine.setValue("[EffectRack1_EffectUnit"+deck.deckNumber +"]", "mix", value / 127); } } }; -KAOSSDJ.controllerFxTouchMoveHorizontal = function(channel, control, value, status, group) { +KAOSSDJ.controllerFxTouchMoveHorizontal = function(_channel, _control, value, _status, _group) { var decks = KAOSSDJ.decks; - for(key in decks) { + for (var key in decks) { var deck = decks[key]; - if(deck.fx) { - engine.setValue('[EffectRack1_EffectUnit'+deck.deckNumber +']', 'super1', value / 127); + if (deck.fx) { + engine.setValue("[EffectRack1_EffectUnit"+deck.deckNumber +"]", "super1", value / 127); + } + } +}; + +KAOSSDJ.controllerFxTouchUp = function(channel, _control, _value, _status, _group) { + var deck = KAOSSDJ.getDeckByChannel(channel); + engine.setValue("[EffectRack1_EffectUnit"+deck.deckNumber +"]", "mix", 0); + engine.setValue("[EffectRack1_EffectUnit"+deck.deckNumber +"]", "super1", 0); +}; + +// use loop-button to deactivate an active loop or initialize a beatloop at the current playback position +KAOSSDJ.toggleLoop = function(channel, _control, value, _status, _group) { + var deck = KAOSSDJ.getDeckByChannel(channel); + var loopEnabled = engine.getValue(deck.group, "loop_enabled"); + + if (value === ON) { + if (loopEnabled) { + engine.setValue(deck.group, "reloop_exit", true); + engine.setValue(deck.group, "beatloop_activate", false); + } else { + engine.setValue(deck.group, "beatloop_activate", true); } } }; -KAOSSDJ.controllerFxTouchUp = function(channel, control, value, status, group) { + +// : load track +// + : open/close folder in file-browser +KAOSSDJ.loadCallback = function(channel, _control, value, _status, _group) { var deck = KAOSSDJ.getDeckByChannel(channel); - engine.setValue('[EffectRack1_EffectUnit'+deck.deckNumber +']', 'mix', 0); - engine.setValue('[EffectRack1_EffectUnit'+deck.deckNumber +']', 'super1', 0); -}; \ No newline at end of file + if (value === ON) { + if ((shiftLeftPressed) || (shiftRightPressed)) { + if (deck.deckNumber === 1) { + engine.setValue("[Library]", "MoveLeft", true); + } else { + engine.setValue("[Library]", "MoveRight", true); + } + } else { + engine.setValue(deck.group, "LoadSelectedTrack", true); + } + } +}; + +KAOSSDJ.shiftLeftCallback = function(_channel, _control, value, _status, _group) { + if (value === ON) { + // if (shiftRightPressed == true) { + // TODO add functionality if is active while is pressed? + // } + shiftLeftPressed = true; + } else { shiftLeftPressed = false; } +}; + +KAOSSDJ.shiftRightCallback = function(_channel, _control, value, _status, _group) { + if (value === ON) { + // if (shiftLeftPressed == true) { + // TODO add functionality if is active while is pressed? + // } + shiftRightPressed = true; + } else { shiftRightPressed = false; } +}; + +KAOSSDJ.changeFocus = function(_channel, _control, value, _status, _group) { + if (value === ON) { + // toggle focus between Playlist and File-Browser + engine.setValue("[Library]", "MoveFocusForward", true); + } +}; + +// : browse library up & down +// + : toggle focus between Playlist and File-Browser +KAOSSDJ.browseKnob = function(_channel, _control, value, _status, _group) { + if (value > 0x40) { + if ((shiftLeftPressed) || (shiftRightPressed)) { + engine.setValue("[Library]", "MoveFocusForward", true); + } else { + engine.setValue("[Library]", "MoveUp", true); + } + } else { + if ((shiftLeftPressed) || (shiftRightPressed)) { + engine.setValue("[Library]", "MoveFocusBackward", true); + } else { + engine.setValue("[Library]", "MoveDown", true); + } + } +}; + +// : open folder +// + : double-tap to close folder +// + : tap bpm of LEFT track +// + : tap bpm of RIGHT track +var doubleTapTime; +KAOSSDJ.tapButtonCallback = function(_channel, _control, value, _status, _group) { + var now = new Date().getTime(); + var timesince = now - doubleTapTime; + + /* shift tab to move focus view */ + if ((value === ON) && ((shiftLeftPressed))) { + // engine.setValue("[Library]", "MoveFocusForward", true); + engine.setValue("[Channel1]", "bpm_tap", true); + return; + } + if ((value === ON) && ((shiftRightPressed))) { + // engine.setValue("[Library]", "MoveFocusForward", true); + engine.setValue("[Channel2]", "bpm_tap", true); + return; + } + + /* tap to open folder, double-tap to close folder (twice to undo first tap)*/ + if (value === ON) { + if ((timesince < 600) && (timesince > 0)) { + engine.setValue("[Library]", "MoveLeft", true); + engine.setValue("[Library]", "MoveLeft", true); + } else { + engine.setValue("[Library]", "MoveRight", true); + } + + doubleTapTime = new Date().getTime(); + } +}; + +// + : control super knob of QuickEffectRack for deck 1 +KAOSSDJ.controllerFxTouchMoveVerticalShift = function(_channel, _control, value, _status, _group) { + var deck = KAOSSDJ.decks[0]; + if (deck.fx) { + var val = script.absoluteLin(value, 0, 1, 0, 127); + engine.setValue("[QuickEffectRack1_" + deck.group + "]", "super1", val); + } +}; + +// + : control super knob of QuickEffectRack for deck 2 +KAOSSDJ.controllerFxTouchMoveHorizontalShift = function(_channel, _control, value, _status, _group) { + var deck = KAOSSDJ.decks[1]; + if (deck.fx) { + var val = script.absoluteLin(value, 0, 1, 0, 127); + engine.setValue("[QuickEffectRack1_" + deck.group + "]", "super1", val); + } +}; diff --git a/res/controllers/Korg-KAOSS-DJ.midi.xml b/res/controllers/Korg-KAOSS-DJ.midi.xml index ad6f66a97a5f..59fa69da85ad 100644 --- a/res/controllers/Korg-KAOSS-DJ.midi.xml +++ b/res/controllers/Korg-KAOSS-DJ.midi.xml @@ -1,105 +1,103 @@ - + Korg KAOSS DJ - Seb Dooris, Fayaaz Ahmed, Lee Arromba + Seb Dooris, Fayaaz Ahmed, Lee Arromba, Raphael Quast Controller mapping for the Korg KAOSS DJ Controller. https://www.mixxx.org/forums/viewtopic.php?f=7&t=8479 - korg_kaoss_dj - + [Channel1] - sync_enabled - Left Sync - 0x97 - 0x1D + KAOSSDJ.changeFocus + Change focus between library and playlist + 0x96 + 0x07 - + [Channel1] - KAOSSDJ.wheelTurn - Left Jog Wheel Turn Scratch - 0xB7 - 0x10 + KAOSSDJ.tapButtonCallback + 0x96 + 0x0B - [Channel2] - play - Right Play - 0x98 - 0x1B + [Channel1] + KAOSSDJ.controllerFxTouchMoveHorizontal + Fx Control + 0xB8 + 0x0C - + [Channel1] - play - Left Play - 0x97 - 0x1B + KAOSSDJ.controllerFxTouchMoveVertical + Fx Control + 0xB8 + 0x0D - + - [Playlist] - KAOSSDJ.browseKnob - Library Browse - 0xB6 - 0x1E + [Channel1] + KAOSSDJ.loadCallback + Load into Deck 1 + 0x97 + 0x0E [Channel2] - LoadSelectedTrack + KAOSSDJ.loadCallback Load into Deck 2 0x98 0x0E - + - [Channel2] - KAOSSDJ.rightFxSwitch - Right Fx switch - 0x98 - 0x18 + [Channel1] + KAOSSDJ.wheelTurn + Left Jog Wheel Turn + 0xB7 + 0x0E - [Channel1] - LoadSelectedTrack - Load into Deck 1 - 0x97 + [Channel2] + KAOSSDJ.wheelTurn + Right Jog Wheel Turn + 0xB8 0x0E - + [Channel1] - KAOSSDJ.leftFxSwitch - Left Fx switch + loop_halve + MIDI Learned from 2 messages. 0x97 - 0x18 + 0x0F - + @@ -112,182 +110,250 @@ + + [Channel1] + KAOSSDJ.wheelTurnShift + Left Jog Wheel Turn Shift + 0xB7 + 0x0F + + + + [Channel2] - pfl - Right Headphones Button - 0x98 - 0x19 + KAOSSDJ.wheelTurnShift + Right Jog Wheel Turn Shift + 0xB8 + 0x0F - + [Channel1] - loop_halve + KAOSSDJ.toggleLoop MIDI Learned from 2 messages. 0x97 - 0x0F + 0x10 - + - [EqualizerRack1_[Channel2]_Effect1] - parameter2 - Right Equaliser Mid + [Channel1] + KAOSSDJ.wheelTurn + Left Jog Wheel Turn Scratch + 0x97 + 0x10 + + + + + + [Channel2] + KAOSSDJ.toggleLoop + MIDI Learned from 2 messages. + 0x98 + 0x10 + + + + + + [Channel2] + KAOSSDJ.wheelTurn + Right Jog Wheel Turn SCRATCH 0xB8 - 0x1C + 0x10 - + [Channel1] - pfl - Left Headphones Button + loop_double + MIDI Learned from 4 messages. 0x97 - 0x19 + 0x11 - [EqualizerRack1_[Channel1]_Effect1] - parameter2 - Left Equaliser Mid - 0xB7 - 0x1C + [Channel2] + loop_double + MIDI Learned from 8 messages. + 0x98 + 0x11 - [EqualizerRack1_[Channel2]_Effect1] - parameter1 - Right Equaliser Low - 0xB8 - 0x1D + [Channel1] + KAOSSDJ.controllerFxTouchMoveVerticalShift + 0xB6 + 0x11 - + - [EqualizerRack1_[Channel1]_Effect1] - parameter1 - Left Equaliser Low - 0xB7 - 0x1D + [Channel1] + hotcue_1_activate + Left HotCue 1 + 0x97 + 0x12 [Channel2] - pregain - Right Gain - 0xB8 - 0x1A + hotcue_1_activate + Right HotCue 1 + 0x98 + 0x12 - [Channel2] - pregain - Right Gain - 0xB8 - 0x1A + [Channel1] + KAOSSDJ.controllerFxTouchMoveHorizontalShift + 0xB6 + 0x12 + + + + + + [Channel1] + hotcue_2_activate + Left HotCue 2 + 0x97 + 0x13 - [Sampler3] - cue_gotoandplay - Sampler 3 Play - 0x96 - 0x4C + [Channel2] + hotcue_2_activate + Right HotCue 2 + 0x98 + 0x13 [Channel1] - pregain - Left Gain - 0xB7 - 0x1A + hotcue_3_activate + Left HotCue 3 + 0x97 + 0x14 - [EqualizerRack1_[Channel2]_Effect1] - parameter3 - Right Equaliser High - 0xB8 - 0x1B + [Channel2] + hotcue_3_activate + Right HotCue 3 + 0x98 + 0x14 - [Sampler4] - cue_gotoandplay - Sampler 4 Play - 0x96 - 0x4D + [Channel1] + rate_temp_down + Nudge (pitch -) + 0x97 + 0x15 - [EqualizerRack1_[Channel1]_Effect1] - parameter3 - Left Equaliser High - 0xB7 - 0x1B + [Channel2] + rate_temp_down + Nudge (pitch-) + 0x98 + 0x15 + + [Channel1] + KAOSSDJ.scratchMode + Scratch mode button + 0x97 + 0x16 + + + + [Channel2] - KAOSSDJ.wheelTurn - Right Jog Wheel Turn - 0xB8 - 0x0E + KAOSSDJ.scratchMode + Scratch mode button + 0x98 + 0x16 + + + + + + [Channel1] + rate_temp_up + Nudge (pitch +) + 0x97 + 0x17 - + [Channel2] - volume - MIDI Learned from 238 messages. - 0xB8 - 0x18 + rate_temp_up + Nudge (pitch+) + 0x98 + 0x17 - [Sampler1] - cue_gotoandplay - Sampler 1 Play - 0x96 - 0x4A + [Master] + crossfader + X-Fader + 0xB6 + 0x17 [Channel1] - KAOSSDJ.wheelTurn - Left Jog Wheel Turn - 0xB7 - 0x0E + KAOSSDJ.leftFxSwitch + Left Fx switch + 0x97 + 0x18 + + + + + + [Channel2] + KAOSSDJ.rightFxSwitch + Right Fx switch + 0x98 + 0x18 @@ -304,44 +370,34 @@ [Channel2] - KAOSSDJ.wheelTurnShift - Right Jog Wheel Turn Shift + volume + MIDI Learned from 238 messages. 0xB8 - 0x0F + 0x18 - + - [Channel2] - rate - Right Pitch Bend - 0xB8 + [Channel1] + pfl + Left Headphones Button + 0x97 0x19 - [Sampler2] - cue_gotoandplay - Sampler 2 Play - 0x96 - 0x4B + [Channel2] + pfl + Right Headphones Button + 0x98 + 0x19 - - [Channel1] - KAOSSDJ.wheelTurnShift - Left Jog Wheel Turn Shift - 0xB7 - 0x0F - - - - [Channel1] rate @@ -354,269 +410,249 @@ [Channel2] - KAOSSDJ.scratchMode - Scratch mode button - 0x98 - 0x16 - - - - - - [Channel1] - KAOSSDJ.controllerFxTouchMoveVertical - Fx Control - 0xB8 - 0x0D - - - - - - [Channel1] - KAOSSDJ.controllerFxTouchMoveHorizontal - Fx Control + rate + Right Pitch Bend 0xB8 - 0x0C + 0x19 - + [Channel1] - KAOSSDJ.controllerFxTouchUp - Fx Control + KAOSSDJ.shiftLeftCallback + Right shift button 0x97 - 0x20 + 0x1A [Channel2] - KAOSSDJ.controllerFxTouchUp - Fx Control + KAOSSDJ.shiftRightCallback + Left shift button 0x98 - 0x20 + 0x1A [Channel1] - KAOSSDJ.scratchMode - Scratch mode button - 0x97 - 0x16 - - - - - - [Channel2] - rate_temp_up - Nudge (pitch+) - 0x98 - 0x17 + pregain + Left Gain + 0xB7 + 0x1A - [Channel1] - rate_temp_up - Nudge (pitch +) - 0x97 - 0x17 + [Channel2] + pregain + Right Gain + 0xB8 + 0x1A [Channel2] - hotcue_3_activate - Right HotCue 3 - 0x98 - 0x14 + pregain + Right Gain + 0xB8 + 0x1A [Channel1] - hotcue_3_activate - Left HotCue 3 + play + Left Play 0x97 - 0x14 + 0x1B [Channel2] - rate_temp_down - Nudge (pitch-) + play + Right Play 0x98 - 0x15 + 0x1B - [Channel1] - rate_temp_down - Nudge (pitch -) - 0x97 - 0x15 + [EqualizerRack1_[Channel1]_Effect1] + parameter3 + Left Equaliser High + 0xB7 + 0x1B - [Channel2] - hotcue_1_activate - Right HotCue 1 - 0x98 - 0x12 + [EqualizerRack1_[Channel2]_Effect1] + parameter3 + Right Equaliser High + 0xB8 + 0x1B - [Channel1] - hotcue_1_activate - Left HotCue 1 - 0x97 - 0x12 + [EqualizerRack1_[Channel1]_Effect1] + parameter2 + Left Equaliser Mid + 0xB7 + 0x1C - [Channel2] - hotcue_2_activate - Right HotCue 2 - 0x98 - 0x13 + [EqualizerRack1_[Channel2]_Effect1] + parameter2 + Right Equaliser Mid + 0xB8 + 0x1C [Channel1] - hotcue_2_activate - Left HotCue 2 + sync_enabled + Left Sync 0x97 - 0x13 + 0x1D [Channel2] - hotcue_2_clear - Right HotCue 2 clear + sync_enabled + Right Sync 0x98 - 0x2C + 0x1D - [Channel2] - reloop_exit - MIDI Learned from 2 messages. - 0x98 - 0x10 + [EqualizerRack1_[Channel1]_Effect1] + parameter1 + Left Equaliser Low + 0xB7 + 0x1D - [Channel1] - hotcue_2_clear - Left HotCue 2 clear - 0x97 - 0x2C + [EqualizerRack1_[Channel2]_Effect1] + parameter1 + Right Equaliser Low + 0xB8 + 0x1D [Channel1] - reloop_exit - MIDI Learned from 2 messages. + cue_default + Left CUE 0x97 - 0x10 + 0x1E [Channel2] - hotcue_3_clear - Right HotCue 3 clear + cue_default + Right CUE 0x98 - 0x2D + 0x1E - [Master] - crossfader - X-Fader + [Playlist] + KAOSSDJ.browseKnob + Library Browse 0xB6 - 0x17 + 0x1E + + + + + + [Channel1] + KAOSSDJ.wheelTouch + Left Jog Wheel Touch + 0x97 + 0x1F - + [Channel2] - loop_double - MIDI Learned from 8 messages. + KAOSSDJ.wheelTouch + Right Jog Wheel Touch 0x98 - 0x11 + 0x1F - + [Channel1] - hotcue_3_clear - Left HotCue 3 clear - 0x97 - 0x2D + KAOSSDJ.MoveFocus + fx knob + 0xB6 + 0x1F [Channel1] - loop_double - MIDI Learned from 4 messages. + KAOSSDJ.controllerFxTouchUp + Fx Control 0x97 - 0x11 + 0x20 - + [Channel2] - loop_out - Right Loop out + KAOSSDJ.controllerFxTouchUp + Fx Control 0x98 - 0x2A + 0x20 - + - [Channel2] + [Channel1] playposition Track Seek - 0xB8 + 0xB7 0x21 @@ -624,62 +660,72 @@ [Channel2] - cue_default - Right CUE - 0x98 - 0x1E + playposition + Track Seek + 0xB8 + 0x21 [Channel1] - loop_out - Left Loop out + loop_in + Left Loop in 0x97 - 0x2A + 0x28 - [Channel1] - playposition - Track Seek - 0xB7 - 0x21 + [Channel2] + loop_in + Right Loop in + 0x98 + 0x28 [Channel1] - cue_default - Left CUE + reloop_toggle + MIDI Learned from 2 messages. 0x97 - 0x1E + 0x29 [Channel2] - hotcue_1_clear - Right HotCue 1 clear + reloop_toggle + MIDI Learned from 4 messages. 0x98 - 0x2B + 0x29 + + + + + + [Channel1] + loop_out + Left Loop out + 0x97 + 0x2A [Channel2] - KAOSSDJ.wheelTouch - Right Jog Wheel Touch + loop_out + Right Loop out 0x98 - 0x1F + 0x2A - + @@ -692,218 +738,238 @@ + + [Channel2] + hotcue_1_clear + Right HotCue 1 clear + 0x98 + 0x2B + + + + [Channel1] - KAOSSDJ.wheelTouch - Left Jog Wheel Touch + hotcue_2_clear + Left HotCue 2 clear 0x97 - 0x1F + 0x2C - + [Channel2] - loop_in - Right Loop in + hotcue_2_clear + Right HotCue 2 clear 0x98 - 0x28 + 0x2C [Channel1] - loop_in - Left Loop in + hotcue_3_clear + Left HotCue 3 clear 0x97 - 0x28 + 0x2D [Channel2] - beatloop_activate - MIDI Learned from 4 messages. + hotcue_3_clear + Right HotCue 3 clear 0x98 - 0x29 + 0x2D - [Channel2] - sync_enabled - Right Sync - 0x98 - 0x1D + [Sampler1] + cue_gotoandplay + Sampler 1 Play + 0x96 + 0x4A - [Channel1] - beatloop_activate - MIDI Learned from 2 messages. - 0x97 - 0x29 + [Sampler2] + cue_gotoandplay + Sampler 2 Play + 0x96 + 0x4B - [Channel2] - KAOSSDJ.wheelTurn - Right Jog Wheel Turn SCRATCH - 0xB8 - 0x10 + [Sampler3] + cue_gotoandplay + Sampler 3 Play + 0x96 + 0x4C - + + + + + [Sampler4] + cue_gotoandplay + Sampler 4 Play + 0x96 + 0x4D + + [Channel1] - loop_enabled + cue_indicator 0x97 - 0x10 + 0x1E 0x00 0x7F 0 - [Channel2] - hotcue_3_enabled - 0x98 - 0x14 + [Channel1] + hotcue_1_enabled + 0x97 + 0x12 0x00 0x7F 0 [Channel1] - play_indicator + hotcue_2_enabled 0x97 - 0x1B + 0x13 0x00 0x7F 0 - [Channel2] - sync_enabled - 0x98 - 0x1D + [Channel1] + hotcue_3_enabled + 0x97 + 0x14 0x00 0x7F 0 [Channel1] - sync_enabled + loop_enabled 0x97 - 0x1D + 0x10 0x00 0x7F 0 - [Channel2] - loop_enabled - 0x98 - 0x10 + [Channel1] + pfl + 0x97 + 0x19 0x00 0x7F 0 [Channel1] - cue_indicator + play_indicator 0x97 - 0x1E + 0x1B 0x00 0x7F 0 [Channel1] - pfl + sync_enabled 0x97 - 0x19 + 0x1D 0x00 0x7F 0 [Channel2] - pfl + cue_indicator 0x98 - 0x19 + 0x1E 0x00 0x7F 0 - [Channel1] - hotcue_3_enabled - 0x97 - 0x14 + [Channel2] + hotcue_1_enabled + 0x98 + 0x12 0x00 0x7F 0 [Channel2] - play_indicator + hotcue_2_enabled 0x98 - 0x1B + 0x13 0x00 0x7F 0 - [Channel1] - hotcue_1_enabled - 0x97 - 0x12 + [Channel2] + hotcue_3_enabled + 0x98 + 0x14 0x00 0x7F 0 [Channel2] - hotcue_1_enabled + loop_enabled 0x98 - 0x12 + 0x10 0x00 0x7F 0 [Channel2] - hotcue_2_enabled + pfl 0x98 - 0x13 + 0x19 0x00 0x7F 0 - [Channel1] - hotcue_2_enabled - 0x97 - 0x13 + [Channel2] + play_indicator + 0x98 + 0x1B 0x00 0x7F 0 [Channel2] - cue_indicator + sync_enabled 0x98 - 0x1E + 0x1D 0x00 0x7F 0