diff --git a/res/controllers/Roland_DJ-202.midi.xml b/res/controllers/Roland_DJ-202.midi.xml
index d8e072fc68b6..eb398e7a3740 100644
--- a/res/controllers/Roland_DJ-202.midi.xml
+++ b/res/controllers/Roland_DJ-202.midi.xml
@@ -13,15 +13,7 @@
-
- [Channel1]
- DJ202.shiftButton
- 0x9F
- 0x00
-
-
-
-
+
[Channel1]
DJ202.leftDeck.play.input
@@ -692,6 +684,689 @@
+
+
+
+ [Channel2]
+ DJ202.rightDeck.play.input
+ 0x91
+ 0x00
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.cue.input
+ 0x91
+ 0x01
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.sync.input
+ 0x91
+ 0x02
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.sync.input
+ 0x91
+ 0x03
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.play.input
+ 0x91
+ 0x04
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.cue.input
+ 0x91
+ 0x05
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.tempoFader.input
+ 0xB1
+ 0x09
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.keylock.input
+ 0x91
+ 0x0D
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.keylock.input
+ 0x91
+ 0x0E
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.hotcueButton[1].input
+ 0x95
+ 0x01
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.hotcueButton[2].input
+ 0x95
+ 0x02
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.hotcueButton[3].input
+ 0x95
+ 0x03
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.hotcueButton[4].input
+ 0x95
+ 0x04
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.hotcueButton[5].input
+ 0x95
+ 0x05
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.hotcueButton[6].input
+ 0x95
+ 0x06
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.hotcueButton[7].input
+ 0x95
+ 0x07
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.hotcueButton[8].input
+ 0x95
+ 0x08
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.loopButton[1].input
+ 0x95
+ 0x11
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.loopButton[2].input
+ 0x95
+ 0x12
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.loopButton[3].input
+ 0x95
+ 0x13
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.loopButton[4].input
+ 0x95
+ 0x14
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.loopIn.input
+ 0x95
+ 0x15
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.loopOut.input
+ 0x95
+ 0x16
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.loopToggle.input
+ 0x95
+ 0x18
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.samplerButton[1].input
+ 0x95
+ 0x21
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.samplerButton[2].input
+ 0x95
+ 0x22
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.samplerButton[3].input
+ 0x95
+ 0x23
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.samplerButton[4].input
+ 0x95
+ 0x24
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.samplerButton[5].input
+ 0x95
+ 0x25
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.samplerButton[6].input
+ 0x95
+ 0x26
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.samplerButton[7].input
+ 0x95
+ 0x27
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.samplerButton[8].input
+ 0x95
+ 0x28
+
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.hotcueButton[1].input
+ 0x95
+ 0x09
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.hotcueButton[2].input
+ 0x95
+ 0x0A
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.hotcueButton[3].input
+ 0x95
+ 0x0B
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.hotcueButton[4].input
+ 0x95
+ 0x0C
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.hotcueButton[5].input
+ 0x95
+ 0x0D
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.hotcueButton[6].input
+ 0x95
+ 0x0E
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.hotcueButton[7].input
+ 0x95
+ 0x0F
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.hotcueButton[8].input
+ 0x95
+ 0x10
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.samplerButton[1].input
+ 0x95
+ 0x29
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.samplerButton[2].input
+ 0x95
+ 0x2A
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.samplerButton[3].input
+ 0x95
+ 0x2B
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.samplerButton[4].input
+ 0x95
+ 0x2C
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.samplerButton[5].input
+ 0x95
+ 0x2D
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.samplerButton[6].input
+ 0x95
+ 0x2E
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.samplerButton[7].input
+ 0x95
+ 0x2F
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.samplerButton[8].input
+ 0x95
+ 0x30
+
+
+
+
+
+
+ [Channel2]
+ DJ202.effectUnit[2].knob.input
+ 0xB9
+ 0x00
+
+
+
+
+
+ [Channel2]
+ DJ202.effectUnit[2].knob.input
+ 0xB9
+ 0x03
+
+
+
+
+
+ [Channel2]
+ DJ202.effectUnit[2].button[1].input
+ 0x99
+ 0x00
+
+
+
+
+
+ [Channel2]
+ DJ202.effectUnit[2].button[2].input
+ 0x99
+ 0x01
+
+
+
+
+
+ [Channel2]
+ DJ202.effectUnit[2].button[3].input
+ 0x99
+ 0x02
+
+
+
+
+
+ [Channel2]
+ DJ202.effectUnit[2].button[1].input
+ 0x99
+ 0x0B
+
+
+
+
+
+ [Channel2]
+ DJ202.effectUnit[2].button[2].input
+ 0x99
+ 0x0C
+
+
+
+
+
+ [Channel2]
+ DJ202.effectUnit[2].button[3].input
+ 0x99
+ 0x0D
+
+
+
+
+
+ [Channel2]
+ DJ202.effectUnit[2].headphones.input
+ 0x99
+ 0x04
+
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.wheelTouch
+ 0x91
+ 0x06
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.wheelTurn
+ 0xB1
+ 0x06
+
+
+
+
+
+ [Channel2]
+ slip_enabled
+ 0x91
+ 0x07
+
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.pregain.input
+ 0xB1
+ 0x16
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.eqKnob[3].input
+ 0xB1
+ 0x17
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.eqKnob[2].input
+ 0xB1
+ 0x18
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.eqKnob[1].input
+ 0xB1
+ 0x19
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.filter.input
+ 0xB1
+ 0x1A
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.pfl.input
+ 0x91
+ 0x1B
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.paramDown
+ 0x95
+ 0x42
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.paramDown
+ 0x95
+ 0x44
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.paramDown
+ 0x95
+ 0x46
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.paramUp
+ 0x95
+ 0x41
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.paramUp
+ 0x95
+ 0x43
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.paramUp
+ 0x95
+ 0x45
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.tapBPM.input
+ 0x91
+ 0x12
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.volume.input
+ 0xB1
+ 0x1C
+
+
+
+
+
+
+
+ [Master]
+ DJ202.shiftButton
+ 0x9F
+ 0x00
+
+
+
+
[Channel1]
DJ202.leftDeck.loadTrack.input
@@ -710,6 +1385,24 @@
+
+ [Channel2]
+ DJ202.rightDeck.loadTrack.input
+ 0x9F
+ 0x03
+
+
+
+
+
+ [Channel2]
+ DJ202.rightDeck.loadTrack.input
+ 0x9F
+ 0x12
+
+
+
+
[Library]
DJ202.browseEncoder.input