Blog

Workarounds for velocity issues on a AKAI MPK mini3

I recently acquired a new MIDI controller to augment my little home studio: a AKAI MPK mini3. While I am, overall, satisfied with it, some issues are worth mentioning.

Poor documentation, no technical specifications

The user documentation provided with the controller itself or available for download on AKAI’s website is reduced to the bare minimum. Sure, the controller is simple enough to use, but it does have some features that are completely undocumented.

One such feature (which I’ll get back to later in this note) is the adjustment of velocity sensitivity, which requires pressing the Full Level button and holding it for approximately 5 seconds – this puts the MPK in a mode where the knobs K1 to K4 can be used to alter the shape of the velocity response curve, but you would never know that if you were to rely solely on AKAI’s documentation.

What’s the point of having features your users don’t know about? It shouldn’t take viewing a YouTube video from a random user to learn about a feature ! This leaves me wondering how many other features are “hidden” on that device, waiting for someone to discover them…

Not only the user documentation is poor, but technical specifications are also lacking. This is the first MIDI device I ever came across that does not come with a MIDI implementation chart. The System Exclusive messages (SysEx) that are exchanged between the device and its settings editor software (which of course is only available for Windows and mac OS) are not documented, so they need to be reverse-engineered if anyone is to create a settings editor for “alternative systems” such as GNU/Linux – a task that, fortunately, has already been undertaken by several people.

The absence of technical specifications is really disappointing, especially if I compare with another of my MIDI devices, a KORG microX synthesizer for which the manufacturer has always provided the full specifications – more than 50 pages describing in details all the SysEx messages emitted and understood by the synthesizer. My own Kmxtool project was made possible by the availability of those specifications.

Adjusting the velocity curve

One problem with the MPK mini3 that becomes apparent as soon as one starts playing with it is that most Note On events are emitted with low velocity values, often well below 64 and sometimes as low as 8 (which seems to be the lowest velocity value the MPK mini3 is capable of emitting). Even depressing the keys as fast and forcefully as possible never yields events with a velocity higher than approximately 100. There is the Full Level key to force the emission of events at the maximal velocity of 127 regardless of the pressure applied, but this only affects the drum pads, not the standard keys.

This is where the hidden feature I mentioned in the previous section is useful – which makes it all the more disappointing that this feature is hidden! Hold the Full Level for about 5 seconds, and you can then use adjust how the MPK mini3 translates the force applied to each key into a MIDI velocity value.

There are four parameters you can adjust, called v1 to v4, using the first four knobs K1 to K4. They all take a value ranging from 1.0 to 40.0, with the constraint that they must have decreasing values from v1 to v4: v1 cannot have a lower value than v2, which cannot have a lower value than v3, which cannot have a lower value than v4. You can use the keys normally while the MPK mini3 is in this “velocity adjustment mode”, so you can immediately test the effect of any change you make to the parameters. Once you are satisfied with the way the keyboard responds to your touch, save your changes and leave the velocity adjustment mode by again holding the Full Level key for about 5 seconds.

What follows is my understanding of what those parameters mean and how to adjust them to get the type of velocity response you want.

I believe the v1 to v4 parameters represent the Y coordinates of 4 control points that determine the shape of the MPK mini3 velocity response curve (Figure 1). Basically, v4 influences the velocity emitted when the lowest pressure is applied to a key, v1 influences the velocity emitted when the highest pressure is applied to a key, and v2 and v3 influence the velocity emitted for mid-range pressures.

Figure 1
Figure 1. A velocity response curve. The X axis represents the pressure applied to the keys. The Y axis represents the velocity of the Note On events emitted in response to the pressure of a key. Here, the curve is actually a straight line, meaning the output velocity is directly and simply proportional to the input pressure. The red dots represent the 4 parameters that allow to reshape the curve.

To better understand the effect of these parameters, a simple test is to set them at their maximal (or minimal) values. With maximal values (v1: 40.0, v2: 39.8, v3: 39.6, and v4: 39.4; Figure 2, left panel), the curve is completely shifted towards the top of the output velocity range. Then, almost any pressure will always emit the highest velocity value of 127. Only a very faint pressure will manage to hit the leftmost part of the curve and produce lower velocity values. Conversely, with minimal values (v1: 1.6, v2: 1.4, v3: 1.2, and v4: 1.0; Figure 2, right panel), the curve is completely shifted towards the bottom of the output velocity range. Then, most key presses will produce very low velocity values – practically speaking, the device will be almost silent. Only a very high pressure will manage to hit the rightmost part of the curve and produce higher velocity values.

Figure 2
Figure 2. Maximal and minimal response curves. Left, the response curve produced by setting all parameters at their maximal values. Most key presses, except those applied with the faintest force, will hit the plateau at the top of the output range and will therefore constantly emit the highest velocity values. Right, the response curve produced by setting all parameters at their minimal values. Most key presses, except those applied with the greatest force, will hit the plateau at the bottom of the output range and will therefore constantly emit the lowest velocity values.

With that in mind, you can shape the response curve to get the kind of answer you like. For reference, the left panel on Figure 3 shows the original response curve of my MPK mini3 (v1: 24.0, v2: 6.0, v3: 4.0, v4: 2.4). The curve is greatly shifted towards the bottom, which is why most key presses tend to produce low or very low velocity values. The right panel on the same figure shows the curve I am now using (v1: 30.0, v2: 20.0, v3: 18.0, v4: 9.0); it is closer to a linear curve, but with a flattened region in the center. With such a curve, most key presses will produce mid-level velocity values, but there are still room to reach both the lower and higher ranges.

Figure 3
Figure 3. Practical response curves. Left, the response curve as it was on the device out of the box. Right, the response curve that I have set for myself.

(I am not pretending that “my” curve is ideal, though I do believe it is better than the default one. The point is that you should try tweaking the parameters until the MPK mini3 behaves in a way that you like.)

Adjusting the sensitivity of the black keys

Beyond the four control points of the velocity response curve, the velocity adjustment mode offers a fifth parameter (adjustable with the K5 knob): the Black bal, or “black to white balance”.1

That parameter can take a value between 0.5 and 2.0. A value of 1.0 means the black keys will respond to pressure exactly as the white keys. A value of 0.5 means the black keys will be half as sensitive as the white keys – i.e. for the same pressure, a black key will emit a velocity value 50% lower than a white key. Conversely, a value of 2.0 means the black keys will be twice as sensitive as the white keys – for the same pressure, a black key will emit a velocity value twice as high as a white key.

The default value, at least on my MPK3, was 0.7, so the black keys default to being slightly less sensitive than the white keys.

Forcing velocity values in a given range

Even with a custom velocity response curve with a high v4 parameter, I found that the MKP mini3 still sometimes emits events a minimal velocity, even if I apply a decidedly not minimal pressure to the keys. Since there is (seemingly, unless it’s another hidden feature…) no way to set the minimal velocity (that is, set the Y intercept of the velocity response curve), I use a workaround based on the MIDI Velocity Adjust LV2 plugin (part of the x42 collection).

In Qtractor, I set up a MIDI input channel dedicated to the MPK mini3. The MPK mini3 MIDI output is connected to that channel using QjackCtl’s patchbay, so that all events from the MPK mini3 arrive exclusively in that channel.

I then add to the MPK mini3 input channel:

The main MIDI input is then used to pilot the different tracks that I set up as usual.

With such a setup, any event coming from the MPK mini3 will go through the filter, where its velocity will be adjusted if needed (if for whatever reason the MPK mini3 emitted an event with ultra-low velocity), before arriving to the actual MIDI tracks. This complements nicely the custom velocity response curve set directly on the device.

  1. Thanks to Stephen van Keulen for helping me figuring out what that parameter does.

(updated )

You can add a comment by replying to this message on the Fediverse.