diff --git a/res/controllers/Pioneer-DDJ-400-script.js b/res/controllers/Pioneer-DDJ-400-script.js
index 6d29ba46462..ccf4ae395a7 100644
--- a/res/controllers/Pioneer-DDJ-400-script.js
+++ b/res/controllers/Pioneer-DDJ-400-script.js
@@ -217,6 +217,34 @@ PioneerDDJ400.jogTouch = function(channel, _control, value) {
}
};
+///////////////////////////////////////////////////////////////
+// HIGH RESOLUTION MIDI INPUT HANDLERS //
+///////////////////////////////////////////////////////////////
+
+PioneerDDJ400.highResMSB = {
+ '[Channel1]': {},
+ '[Channel2]': {},
+ '[Channel3]': {},
+ '[Channel4]': {}
+};
+
+
+PioneerDDJ400.tempoSliderMSB = function (channel, control, value, status, group) {
+ PioneerDDJ400.highResMSB[group].tempoSlider = value;
+};
+
+PioneerDDJ400.tempoSliderLSB = function (channel, control, value, status, group) {
+ var fullValue = (PioneerDDJ400.highResMSB[group].tempoSlider << 7) + value;
+
+ engine.setValue(
+ group,
+ 'rate',
+ ((0x4000 - fullValue) - 0x2000) / 0x2000
+ );
+
+
+};
+
PioneerDDJ400.cycleTempoRange = function(_channel, _control, value, _status, group) {
"use strict";
if (value === 0) return; // ignore release
diff --git a/res/controllers/Pioneer-DDJ-400.midi.xml b/res/controllers/Pioneer-DDJ-400.midi.xml
index b1aee902c79..0e64bf658f0 100644
--- a/res/controllers/Pioneer-DDJ-400.midi.xml
+++ b/res/controllers/Pioneer-DDJ-400.midi.xml
@@ -323,47 +323,43 @@
- TEMPO (DECK1) - fader - Tempo control
+ TEMPO (DECK1) - fader - Tempo control LSB
[Channel1]
- rate
+ PioneerDDJ400.tempoSliderLSB
0xB0
0x20
-
-
+
- TEMPO (DECK1) - fader - Tempo control
+ TEMPO (DECK1) - fader - Tempo control MSB
[Channel1]
- rate
+ PioneerDDJ400.tempoSliderMSB
0xB0
0x00
-
-
+
- TEMPO (DECK2) - fader - Tempo control
+ TEMPO (DECK2) - fader - Tempo control LSB
[Channel2]
- rate
+ PioneerDDJ400.tempoSliderLSB
0xB1
0x20
-
-
+
- TEMPO (DECK2) - fader - Tempo control
+ TEMPO (DECK2) - fader - Tempo control MSB
[Channel2]
- rate
+ PioneerDDJ400.tempoSliderMSB
0xB1
0x00
-
-
+