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 and are mostly for research purpose. End user should use the gui only
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 MPK249 version for both Windows and Mac.
you can download the Windows executable from this repository here.
NEW! you can download the OSx dmg from this repository here.
That's all you have to do to use the app hopefully. Latest version of Windows executable adds support to other MPK2 controllers / midi ports
When using the Preset Info button to change the name and the preset number, the number you type in are 0-29 intead of 1-30.
So remember to add +1 to your desired preset if you are using this functionality
Plug your keyboard before launching the program.
To load a preset directly from the keyboard click 'Get Presets from Keyboard'
Go to your midi 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. Make sure to save them, then click the 'Send to Keyboard' button.
Reload your preset on the keyboard to see the actual changes
You can also load/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
Intall python. OSX users: install python via brew, as it contains a working version of customtkinter library
Then install these dependencies:
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
NB: On Mac you will have to crop and resize the image to 1058x635 use this file as it is.
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 (NB: download mpk249_gui_mac.py and rename it to mpk249_gui.py if you are on Mac)
mpk2_preset.py
Renamed MPK249_ortho_10x8_media_01.jpg from the Akai media package to keyboard.jpg (crop and resize the image to 1058x635 if you are on Mac)
MAC USERS: use this file as it is
Then run:
python mpk249_gui.pyto start the visual editor.
The script is set to identify the keyboard from the sysex data.
def get_model(self):
if not self.sysex_data or len(self.sysex_data) <= 3: return "N/A"
return {0x24:"MPK249", 0x25:"MPK261", 0x23:"MPK225"}.get(self.sysex_data[3], "Unknown")For midi support 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)" ) on windows
On mac now should work out of the box with autofinding model and portname.
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
