Monday, September 26, 2011

Akai MPK mini & Reason

Introduction

In 2011 I picked up the Akai MPK mini, a "laptop production keyboard" clearly focused on portability.

(image sourced from http://www.akaipro.com/mpkmini)

I haven't used it enough to write a proper review yet, but there was one thing that did annoy me about it right out-of-the-box - it doesn't have any dedicated MIDI support in Reason or Record!

I should explain. MIDI controllers communicate with Reason & Record via a "codec" and a "remote map". The codec translates and associates incoming MIDI messages to specific 'control items', and the remote map is used to map these 'control items' to different Reason device controls.

But what makes your controller really useful is that a properly supported controller will auto-map its controls onto specific Reason device controls as you change devices.

For example, you can have a knob that maps to the first Combinator knob when a Combinator has MIDI focus, but then maps to the LPF frequency slider when you change to a Subtractor. The mapping is device-dependent and Reason takes care of it for you. You can also customise this mapping yourself.

Almost any MIDI controller will work with Reason as there are several 'generic' codecs that simply map keys, wheels, knobs, pads and sliders to generic 'controls'. But sadly if you are forced to use these codecs then you lose the auto-mapping feature - now your control simply generates a MIDI CC message on a fixed channel and this may correspond to... anything.

(Note that you can always use the 'remote map override' feature to assign any control to any Reason control - this can be useful occasionally but it's tedious to set up and does not scale to a full controller).

My Solution


I have created suitable Lua Codec and Map files for the Akai MPK mini. If you use these, you will be able to make almost full use of the device, and the knobs and pads will map to sensible controls on each Reason device. If you wish to customise the per-device mapping, simply edit the .remotemap file and add your own rules.

The latest version supports:
  • Compatible with Reason 5 / Record 1.5 to Reason 6.5.3 - may work with future versions too.
  • Kong pads - turn off CC and PROG CHANGE, then Pad Bank 1 maps to Kong pads 1-8, Pad Bank 2 maps to pads 9-16.
  • Switches - turn on CC and each pad will act as a switch. Pad Bank 1 maps to switches 1-8, Pad Bank 2 maps to switches 9-16. Note that 'toggle' mode for the switches does not work correctly, and probably never will, so the pad lights will not stay lit.
  • Prog Change - turn on PROG CHANGE and each pad will generate push-button events. Currently these are set up to send Transport messages:
    • 1 - rewind
    • 2 - ffwd
    • 3 - stop
    • 4 - play
    • 5 - record
    • 7 - change to previous sequencer track
    • 8 - change to next sequencer track
  • Knobs - eight knobs that are mapped to 'sensible' Reason controls. Note that Knob 1 is the top left knob.
  • Keyboard Sustain (Damper Pedal) support - hold the "Sustain" button to activate.
I used the Akai LPD8 lua codec and MPK49 remotemap files that ships with Reason as the basis for this project. I used an image of the MPK mini from Akai's website for the device picture. Akai's support page is here.

Upgrading to 0.0.3 - important note!


If you are upgrading to 0.0.3 from an earlier version, you must reprogram your controller using the "Akai MPK MINI Editor" as the CC values generated by the pads have changed.

To upgrade, simply follow the Installation procedure again. You do not need to remove the old files, just make sure you overwrite them with the new files from the zip file.

If you have performed any of your own customisation (for example the .remotemap file), be sure to back up your changes before upgrading. You will have to manually reapply your changes afterwards.

Installation


The latest version 0.0.3 is available here. It is a zip file. Unzip it somewhere handy.

There are two parts to this installation process. Part 1 involves copying the Remote files to the correct destination on your system. Part 2 involves reprogramming your MPK mini with the provided Preset. You must complete both parts to have a successful installation.

Part 1 - Copy the Remote Files


The files in the Remote directory should be copied into your user's Remote directory:
  • OSX: Macintosh HD/Library/Application Support/Propellerhead Software/Remote
    • it is also possible to install into /Users/[username]/Library/Application Support/Propellerhead Software/Remote if you want to keep them separate from your main Reason installation.
  • Windows XP: C:/Documents and Settings/Application Data/Propellerhead Software/Remote/
  • Windows Vista: C:/Documents and Settings/Program Data/Propellerhead Software/Remote/
  • Windows 7: C:/ProgramData/Propellerhead Software/Remote
Carefully copy all of these files, strictly maintaining this directory structure:
  • Remote/Codecs/Lua Codecs/Akai/AkaiMPKmini.luacodec
  • Remote/Codecs/Lua Codecs/Akai/AkaiMPKmini.lua
  • Remote/Codecs/Lua Codecs/Akai/AkaiMPKmini.png
  • Remote/Maps/Akai/AkaiMPKmini.remotemap
Now restart Reason so that it sees the new files. Go into Preferences and select your new MIDI controller - you can tell Reason to try and auto-detect the MPK mini, or you can add it manually.

But before this will work, you must set up the MPK mini to generate the correct MIDI messages. Now complete Part 2.


Part 2 - Load the MPK mini Preset


The provided Preset ensures that your keyboard produces the correct MIDI messages are received by the Remote codec (which you installed in Part 1). To install the Preset:
  • Ensure neither Reason nor Record are running - they may interfere with this process.
  • Run the "Akai MPK MINI Editor" (on the CD provided with your controller, or downloadable from Akai's product support page)
  • Click "Load Preset" and load the "Reason.preset" file from the Presets directory that you earlier unzipped.
  • This will automatically switch the display to Preset Slot 1, but you can upload the new preset to any Slot you wish by clicking the "Preset #" drop-down and select the slot number you want to upload into:

  • finally click the "Upload" button, and then click OK:

  • You can repeat this upload process for the other Preset Slots if you like, but note that uploading a Preset to a Slot will completely overwrite any data already there.

 (Previous versions had four identical Preset files, one for each Slot. However I realised that you can upload one file to any Slot with the above procedure, so now there is just one Reason preset).

In version 0.0.3 I have adjusted the CC values generated by the Pads to start at 65, rather than 64, as the first pad was interfering with the Sustain function.



Customisation


Because the Lua Codec maps almost every control on the controller to a 'control item', you can customise the device mappings however you want. Simply edit the AkaiMPKmini.remotemap file to associate the MPK mini's controls with whatever Reason device controls you want. More information can be found here.

The available control items are:
  • Keyboard
  • Sustain
  • Knob 1-8
  • Pad Button 1-16
  • Prog Change 1-16

Updates

Update 28th February 2013 - version 0.0.3 released, see post for details. If you are upgrading, please read this post carefully.

Update 2nd October 2011 - version 0.0.2 appears to work fine in Reason 6 (OSX).

Update 30th September 2011 - version 0.0.2 released, see below for details.

Release History

Version 0.0.3 - 20130228
  • Added support for Sustain / Damper Pedal.
  • Adjusted base CC for pads from 64 to 65.

Version 0.0.2 - 20110930
  • Added support for Transport controls in Record 1.5.

Version 0.0.1 - 20110926
  • Initial release, supports AutoDetect, Kong pads, CC pads (switches), Prog pads (transport), and knobs. All four presets are identical.
  • Tested in Reason 5 on OSX only.

Disclaimer


I am not affiliated or associated in any way with Akai or Propellerhead. I have created these files myself with the files and programs legally available to me. 

You download and use these files entirely at your own risk!


Creative Commons License
This work is licensed under a Creative Commons Attribution 3.0 New Zealand License.