Tested and reversed engineered on Akai MPK249. Usage on other controllers of the MPK2 series is untested. The scripts are a collection of command line tools for reading / writing single preset dump files
Disclaimer: Use of this material can possibly void your warranty, corrupt your presets or brick your controller.
If you are not familiar with setting up a python environment
you can download the Windows executable from this repository here. (sorry Apple users)
For the GUI: Install customtkinter (if not already installed) pillow and python-rtmidi
pip install customtkinter pillow python-rtmidiDownload Akai media images (for the gui)
https://cdn.inmusicbrands.com/akai/attachments/MPK249/MPK249%20-%20Media.zip
And extract MPK249_ortho_10x8_media_01.jpg
These guys are the real heroes:
https://github.com/nsmith-/mpk2
http://practicalusage.com/akai-mpk261-mpk2-series-controlling-the-controller-with-sysex/
http://practicalusage.com/akai-mpk261-one-more-thing/
https://cdn.inmusicbrands.com/akai/attachments/MPK249/MPK2_Series_Bitwig_Scripts_v1.0.8.zip
Place these 3 files in the same directory
mpk249_gui.py
mpk2_preset.py
Renamed MPK249_ortho_10x8_media_01.jpg from the Akai media package to keyboard.jpg
Then run:
python akai_gui.pyto start the visual editor.
To load a preset click 'Get Presets from Keyboard'
Go to your keyboad global settings --> Sysex --> Send program
Pick the preset number you want to edit (do not use the 'All' option) and push the enter knob to send the preset sysex dump to the editor.
Make your changes and then click the 'Send to Keyboard' button.
You can also save presets to your computer.
Done!
Get Presets from Keyboard
Send Presets to Keyboard
Save and load from files
Set all parameters for pads
Set all parameters for knobs
Set all parameters for faders
Set all parameters for switches
Set all parameters for the 4 daw buttons
Bulk functions (midi channels, note settings, etc.)
Transport Arpeggiator Keyboard Pitchebend / Modwheel
For midi support try to edit the port configurations in the mpk249_gui.py file
self.MIDI_IN_GET_NAME = "MIDIIN4 (MPK249)"
self.MIDI_OUT_SEND_NAME = "MIDIOUT4 (MPK249)"with your actual midi port names for sysex communications. (e.g. "MIDIIN4 (MPK261)" - "MIDIOUT4 (MPK261)" )
The command line scripts are my first attempt to configure the keyboard. You don't need them if you are using the visual editor. I published those if you are interested in developing your own tools or visual gui. To use the command line scripts in the scripts folder, you will need to already have a SINGLE preset dump file (.syx) (do not use the "ALL" preset dump).
All scripts have a --debug option so you can read the actual dump bytes that the script is reading / referring to
python mpk2_fader_editor.py --import PRESET_FILE.syx --list-fadersSample Output:
Fader 1 | Type=MIDI_CC CC= 18 Ch= 0 Min= 0 Max=127 Din=Off
Fader 2 | Type=MIDI_CC CC= 21 Ch= 0 Min= 0 Max=127 Din=Off
Fader 3 | Type=MIDI_CC CC= 22 Ch= 0 Min= 0 Max=127 Din=Off
python mpk2_fader_editor.py --import PRESET_FILE.syx --set-fader 1 MIDI_CC 19 0 0 127 Off --export PRESET_FILE_NEW.syxpython mpk2_switch_daw_editor.py --import PRESET_FILE.syx --list-switchesPython mpk2_switch_daw_editor.py --import PRESET_FILE.syx --set-switch 1 --type CC --channel USBA1 --export PRESET_FILE_NEW.syxsee command line help
