Akai MPK Mini Play: MIDI over USB implementation

I performed experiments to discover how the Akai MPK Mini Play behaves when controlled through its USB port. I wanted to build on what I had already learned about the MPK Mini Play’s MIDI implementation.

As mentioned in earlier posts, the Mini Play’s host Arm microcontroller communicates with a Dream S.A.S. SAM2635 synthesizer chip:

            Arm       TX  ----> MIDI IN (RX)     Dream 
Microcontroller SAM2635
USART RX <---- MIDI OUT (TX) Synthesizer

The Arm sends MIDI messages to the SAM2635 when INTERNAL SOUNDS are turned on, i.e., when the INTERNAL SOUNDS button is lit. When INTERNAL SOUNDS are turned off, the Arm software sends MIDI messages over USB exclusively. Oddly, the Arm sends some MIDI messages over USB when INTERNAL SOUNDS are on — and not always on the expected MIDI channel! Very quirky or buggy, depending upon your point of view.

People who want a 16-channel multi-timbral MIDI module are going to be disappointed. When driving the MPK Mini Play through USB, you really have only two channels: MIDI channel 1 for regular, melody voices and MIDI channel 10 for drums. If you stick to these two channels, you’ll stay out of trouble.

If you venture off the path, however, you’ll be in the deep weeds. The Mini Play responds to NOTE ON and NOTE OFF messages on “keyboard” channels 2-9 and 11-16, playing the default Grand Piano sound. Such joy is misleading, however. Send a program change on channels 2-9 and 11-16, and the program change is redirected to channel 1! Do not send program change to any other channels than 1 and 10 if you value your sanity!

I think someone at Akai envisioned the MPK Mini Play as a two channel MIDI controller with optional synthesis on two channels. Unfortunately, the actual implementation is inconsistent with this model as far as synthesis is concerned. Worse, Akai doesn’t provide any documentation about the MIDI implementation letting punters poke around in the buggy weeds.

All of this is truly a shame knowing that the Dream SAM2635 is a full 16-channel GM/GS synthesizer. What a waste of silicon (AKA “sand”) by Akai!

Here are some additional details about the MIDI implementation such that it is.

The Arm software filters out all System Exclusive (SysEx) messages other than its own. Stated another way, if you send SAM2635 SysEx, it will never be delivered. So, you cannot send GM or GS reset, tweak reverb and chorus parameters, and so forth because these are all done via SAM2635 SysEx.

The Arm software does pass all MIDI Continuous Controller (CC) messages to the SAM2635. RPN and NRPN commands also get through because these kind of commands are formed using CC messages. Here are the MIDI CC messages which appear to work:

    CC#0    Bank Select (MSB) 
CC#1 Modulation wheel
CC#6 Data Entry
CC#7 Volume (channel volume)
CC#10 Pan
CC#11 Expression
CC#74 TVF cutoff frequency
CC#91 Reverb send level
CC#71 TVF resonance
CC#93 Chorus send level
CC#73 Envelope attack time
CC#72 Envelope release time
CC#80 Reverb program
CC#81 Chorus program
CC#91 Reverb send level
CC#93 Chorus send level
CC#98 NRPN LSB
CC#99 NRPN MSB
CC#100 RPN LSB
CC#101 RPN MSB

The SAM2635 supports several other MIDI CC message types. Please consult the Dream SAM2635 firmware manual for a complete list.

Pitch bend and Program Change also get through. However, Program Change is always redirected to channel 1.

You can form RPN and NRPN commands via MIDI CC messages. For example, the Arm software controls EQ Low and EQ High using NRPN:

    B0 63 37 B0 62 00 B0 06 48      Equalizer low band 
B0 63 37 B0 62 03 B0 06 40 Equalizer high band

In fact, Dream have a whole raft of NRPN commands with MSB 0x37. Consult the Dream SAM2635 firmware manual. Dream call these commands “Special MIDI Controls”.

CC#80 Reverb program and CC#81 Chorus program are the two bright spots in a relatively bleak picture. You can change the reverb type with CC#80:

    00: Room1        01: Room2 
02: Room3 03: Hall1
04: Hall2 05: Plate
06: Delay 07: Pan delay

CC#81 changes the chorus type:

    00: Chorus1      02: Chorus2 
02: Chorus3 03: Chorus4
04: Feedback 05: Flanger
06: Short delay 07: Feedback delay

Since the Arm software blocks all non-Akai SysEx, you cannot tweak the reverb and chorus parameters.

Copyright © 2022 Paul J. Drongowski