Hi, I am fairly new to Virtual DJ but I have gotten my hands on an Akai MPK Mini MK3 and want to use it as an EQ controller alongside my Numark DJ2GO2 Touch on Virtual DJ. Mainly the 8No. knobs for EQ control.
The Mini MK3 is not a native supported controller. I am trying to follow the instructions in the below link regards creating a definition and mapping file. With the help of ChatGPT I have the below script for the definition and mapping file. It is still unfortunately not working. Am I going about this the correct way?
https://virtualdj.com/wiki/Controller%20Developers.html
Definition file:
<?xml version="1.0" encoding="UTF-8"?>
<device name="MPKMiniMK3" author="Akai Professional" description="Akai MPK Mini MK3 MIDI Controller" version="100" type="MIDI"
decks="1" padColumns="4" padRows="2" padSides="1">
<!-- Note: no built-in sound card audio section since this is just a MIDI controller -->
<!-- Example Buttons (pads trigger) -->
<!-- Pads Bank A (note mode) -->
<button 9-BUTTON36="0x24" name="PAD1" deck="1" channel="10"/> <!-- Pad 1 note value needs correct hex -->
<button 9-BUTTON37="0x25" name="PAD2" deck="1" channel="10"/>
<button 9-BUTTON38="0x26" name="PAD3" deck="1" channel="10"/>
<button 9-BUTTON39="0x27" name="PAD4" deck="1" channel="10"/>
<button 9-BUTTON40="0x28" name="PAD5" deck="1" channel="10"/>
<button 9-BUTTON41="0x29" name="PAD6" deck="1" channel="10"/>
<button 9-BUTTON42="0x2A" name="PAD7" deck="1" channel="10"/>
<button 9-BUTTON43="0x2B" name="PAD8" deck="1" channel="10"/>
<!-- Bank switch button -->
<button cc="0x10" value="0x01" name="PAD_BANK_SWITCH" deck="1" channel="10"/>
<!-- Mode buttons (CC / Prog Change / Full Level) -->
<button cc="0x11" value="0x01" name="MODE_CC" deck="1" channel="10"/>
<button cc="0x12" value="0x01" name="MODE_PROG_CHANGE" deck="1" channel="10"/>
<button cc="0x13" value="0x01" name="FULL_LEVEL" deck="1" channel="10"/>
<!-- Assignable Knobs (8 knobs) sending CCs -->
<slider cc="0x46" name="0-SLIDER70" channel="1" />
<slider cc="0x47" name="0-SLIDER71" channel="1" />
<slider cc="0x48" name="0-SLIDER72" channel="1" />
<slider cc="0x49" name="0-SLIDER73" channel="1" />
<slider cc="0x4A" name="0-SLIDER74" channel="1" />
<slider cc="0x4B" name="0-SLIDER75" channel="1" />
<slider cc="0x4C" name="0-SLIDER76" channel="1" />
<slider cc="0x4D" name="0-SLIDER77" channel="1" />
<!-- X/Y Joystick – typically two CCs for X axis and two for Y axis -->
<slider cc="0x30" name="JOYSTICK_X_AXIS" deck="1" channel="10"/>
<slider cc="0x31" name="JOYSTICK_Y_AXIS" deck="1" channel="10"/>
<!-- Octave Up & Down Buttons -->
<button note="0x40" name="OCTAVE_UP" deck="1" channel="10"/>
<button note="0x41" name="OCTAVE_DOWN" deck="1" channel="10"/>
<!-- Arpeggiator On/Off -->
<button note="0x42" name="ARPEGGIATOR_TOGGLE" deck="1" channel="10"/>
<!-- Tap Tempo -->
<button note="0x43" name="TAP_TEMPO" deck="1" channel="10"/>
<!-- Keyboard keys are not mapped here – VirtualDJ uses MIDI keyboard input automatically -->
<!-- Initialization SysEx if required (not needed typically for this controller) -->
<!-- <init sendsysex="F0 7E ?? 06 01 ... F7"/> -->
</device>
Mapping file:
<?xml version="1.0" encoding="UTF-8"?>
<mapper device="MPKMiniMK3" author="ChatGPT" version="100" description="MPK Mini MK3 EQ Mapping for VirtualDJ">
<map value="0-SLIDER70" action="deck left eq_high" />
<map value="0-SLIDER71" action="deck left eq_mid" />
<map value="0-SLIDER72" action="deck left eq_low" />
<map value="0-SLIDER74" action="deck right eq_high" />
<map value="0-SLIDER75" action="deck right eq_mid" />
<map value="0-SLIDER76" action="deck right eq_low" />
<map value="0-SLIDER73" action="deck left eq_filter" />
<map value="0-SLIDER77" action="deck right eq_filter" />
</mapper>
The Mini MK3 is not a native supported controller. I am trying to follow the instructions in the below link regards creating a definition and mapping file. With the help of ChatGPT I have the below script for the definition and mapping file. It is still unfortunately not working. Am I going about this the correct way?
https://virtualdj.com/wiki/Controller%20Developers.html
Definition file:
<?xml version="1.0" encoding="UTF-8"?>
<device name="MPKMiniMK3" author="Akai Professional" description="Akai MPK Mini MK3 MIDI Controller" version="100" type="MIDI"
decks="1" padColumns="4" padRows="2" padSides="1">
<!-- Note: no built-in sound card audio section since this is just a MIDI controller -->
<!-- Example Buttons (pads trigger) -->
<!-- Pads Bank A (note mode) -->
<button 9-BUTTON36="0x24" name="PAD1" deck="1" channel="10"/> <!-- Pad 1 note value needs correct hex -->
<button 9-BUTTON37="0x25" name="PAD2" deck="1" channel="10"/>
<button 9-BUTTON38="0x26" name="PAD3" deck="1" channel="10"/>
<button 9-BUTTON39="0x27" name="PAD4" deck="1" channel="10"/>
<button 9-BUTTON40="0x28" name="PAD5" deck="1" channel="10"/>
<button 9-BUTTON41="0x29" name="PAD6" deck="1" channel="10"/>
<button 9-BUTTON42="0x2A" name="PAD7" deck="1" channel="10"/>
<button 9-BUTTON43="0x2B" name="PAD8" deck="1" channel="10"/>
<!-- Bank switch button -->
<button cc="0x10" value="0x01" name="PAD_BANK_SWITCH" deck="1" channel="10"/>
<!-- Mode buttons (CC / Prog Change / Full Level) -->
<button cc="0x11" value="0x01" name="MODE_CC" deck="1" channel="10"/>
<button cc="0x12" value="0x01" name="MODE_PROG_CHANGE" deck="1" channel="10"/>
<button cc="0x13" value="0x01" name="FULL_LEVEL" deck="1" channel="10"/>
<!-- Assignable Knobs (8 knobs) sending CCs -->
<slider cc="0x46" name="0-SLIDER70" channel="1" />
<slider cc="0x47" name="0-SLIDER71" channel="1" />
<slider cc="0x48" name="0-SLIDER72" channel="1" />
<slider cc="0x49" name="0-SLIDER73" channel="1" />
<slider cc="0x4A" name="0-SLIDER74" channel="1" />
<slider cc="0x4B" name="0-SLIDER75" channel="1" />
<slider cc="0x4C" name="0-SLIDER76" channel="1" />
<slider cc="0x4D" name="0-SLIDER77" channel="1" />
<!-- X/Y Joystick – typically two CCs for X axis and two for Y axis -->
<slider cc="0x30" name="JOYSTICK_X_AXIS" deck="1" channel="10"/>
<slider cc="0x31" name="JOYSTICK_Y_AXIS" deck="1" channel="10"/>
<!-- Octave Up & Down Buttons -->
<button note="0x40" name="OCTAVE_UP" deck="1" channel="10"/>
<button note="0x41" name="OCTAVE_DOWN" deck="1" channel="10"/>
<!-- Arpeggiator On/Off -->
<button note="0x42" name="ARPEGGIATOR_TOGGLE" deck="1" channel="10"/>
<!-- Tap Tempo -->
<button note="0x43" name="TAP_TEMPO" deck="1" channel="10"/>
<!-- Keyboard keys are not mapped here – VirtualDJ uses MIDI keyboard input automatically -->
<!-- Initialization SysEx if required (not needed typically for this controller) -->
<!-- <init sendsysex="F0 7E ?? 06 01 ... F7"/> -->
</device>
Mapping file:
<?xml version="1.0" encoding="UTF-8"?>
<mapper device="MPKMiniMK3" author="ChatGPT" version="100" description="MPK Mini MK3 EQ Mapping for VirtualDJ">
<map value="0-SLIDER70" action="deck left eq_high" />
<map value="0-SLIDER71" action="deck left eq_mid" />
<map value="0-SLIDER72" action="deck left eq_low" />
<map value="0-SLIDER74" action="deck right eq_high" />
<map value="0-SLIDER75" action="deck right eq_mid" />
<map value="0-SLIDER76" action="deck right eq_low" />
<map value="0-SLIDER73" action="deck left eq_filter" />
<map value="0-SLIDER77" action="deck right eq_filter" />
</mapper>
Posted Thu 23 Oct 25 @ 10:47 am
Forget ChatGPT!
You also don't really need a definition file for simple mapping of knobs to control EQ.
The VDJ manual describes how to create a mapping.
You also don't really need a definition file for simple mapping of knobs to control EQ.
The VDJ manual describes how to create a mapping.
Posted Thu 23 Oct 25 @ 11:49 am
Indeed, best not to use chatGPT, but if you want to, verify with the docs if anything it did makes sense.
Some notes about things that are wrong:
You are missing any kind of identifier (vid/pid/drivername) to let vdj actually find the device and match it to this definition, so vdj won't even be able to use the definition.
You should be able to find these in systemreport.txt by clicking the cog in settings->options.
is not even valid XML, please take a look at https://virtualdj.com/wiki/Controller%20Developers.html to see how buttons should be defined.
channels in definition files start at 0, and the 0 in the simple midi mapper "0-SLIDER70" is the channel number, so that should be 0 instead of 1
Mappers are usually easiest to create from within virtualdj, instead of trying to create the xml yourself, but if you must, they use name="", not value="".
Finally, custom definitions require a pro license, otherwise they won't even be loaded.
Some notes about things that are wrong:
<device name="MPKMiniMK3" author="Akai Professional" description="Akai MPK Mini MK3 MIDI Controller" version="100" type="MIDI"
decks="1" padColumns="4" padRows="2" padSides="1">
You are missing any kind of identifier (vid/pid/drivername) to let vdj actually find the device and match it to this definition, so vdj won't even be able to use the definition.
You should be able to find these in systemreport.txt by clicking the cog in settings->options.
<button 9-BUTTON37="0x25" name="PAD2" deck="1" channel="10"/>
is not even valid XML, please take a look at https://virtualdj.com/wiki/Controller%20Developers.html to see how buttons should be defined.
<slider cc="0x46" name="0-SLIDER70" channel="1" />
channels in definition files start at 0, and the 0 in the simple midi mapper "0-SLIDER70" is the channel number, so that should be 0 instead of 1
<map value="0-SLIDER70" action="deck left eq_high" />
Mappers are usually easiest to create from within virtualdj, instead of trying to create the xml yourself, but if you must, they use name="", not value="".
Finally, custom definitions require a pro license, otherwise they won't even be loaded.
Posted Thu 23 Oct 25 @ 12:15 pm





