Akai MPK Mini Play MIDI mod (2)

I’m happy to report progress with breaking out the internal MIDI traffic within the Akai MPK Mini Play (first generation). Before reading ahead, I recommend reading my previous posts about Akai MPK Mini Play internals:

The second post, in particular, shows how I brought the internal MIDI signals out from the main printed circuit board.

For the moment, I am focused on the communication between the Arm microcontroller and the Dream S.A.S. SAM2635 synthesis chip:

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

The Arm microcontroller sends MIDI messages to the SAM2635. For this round of analysis, Mini Play INTERNAL SOUNDS are turned ON. A future post will address the case when INTERNAL SOUNDS are turned OFF.

When INTERNAL SOUNDS are enabled, the key strikes, pad hits, knob turns and joystick movements cause the Arm software to transmit MIDI messages to the SAM2635. These MIDI messages are encoded for and are meaningful to the SAM2635. They are not the same as the messages sent through the USB port, i.e., the user-defined MIDI CCs, etc. (USB messages are sent when INTERNAL SOUNDS are OFF.)

Persistence leads to discovery

At the end of my second post, I noted my failure to monitor the message traffic from the Arm to the SAM2635. I performed additional experiments which eventually paid off.

First, I observed the signal from Arm TX to the SAM2635 MIDI IN (RX) pin using a Gabotronics Xminilab USB oscilloscope and logic analyzer. I tried the Gabotronics protocol sniffer. Unfortunately, the Gabotronics protocol sniffer does not support the standard MIDI baud rate, 31,250 baud. The SAM2635 can communicate MIDI at 31,250, 34,800 and 200,000 baud. The 200,000 baud rate is reserved for USB debug, so it’s use is unlikely in this case. The protocol sniffer displayed HEX gibberish at 34,800.

I switched the Gabotronics to logic analyzer mode and observed the serial data signal. Yes, I found data and the data are repeatable, i.e., hit a C on the keyboard and you get the same bit sequence every time.

I estimated 8 serial bits per oscilloscope time division (256 usec). Do the math and the data rate is 31,250. The MIDI is there; I just need to sense it properly.

I connected the MIDI signal to the MIDI OUT side of the UBLD.IT MIDI breakout board. I sent MIDI from the UBLD.IT to the Genos MIDI IN port. Success! The Akai Mini Play can play notes and change patches on the Genos.

Instead of monitoring the MIDI message stream via MIDI-OX on a Windows PC, I used the LOG display in the MIDI Designer app on iPad. The MIDI interface in this case is an old IK Multimedia iRig MIDI. Success, again! Now I can see the MIDI messages and, indeed, they are targeted for SAM2635.

I can only surmise that my Roland (Edirol) UM-2EX MIDI interface cannot detect the signal transmitted by the UBLD.IT. I couldn’t get a Sparkfun breakout board to work with the UM-2EX either. If I want to use MIDI-OX on PC for monitoring, I’ll need to try another USB MIDI interface (perhaps my old EMU).

SAM2635 message summary

Well, franky, that’s all good news. Here is a short summary of the MIDI messages that I observed. The Akai Mini Play sends a flurry of messages to the SAM2635 when power is first turned on.

Program change also causes a flurry of messages to be sent. Here is an example program change:

B0 01 00                        CC#1 Modulation wheel 
E0 00 40 Pitch bend (center)
F0 7F 7F 04 01 00 7F F7 GM Master volume
B0 0B 7F CC#11 Expression
B0 4A 66 CC#74 TVF cutoff frequency
B0 5B 0E CC#91 Reverb send level
B0 47 00 CC#71 TVF resonance
B0 5D 00 CC#93 Chorus send level
B0 49 00 CC#73 Envelope attack time
B0 48 38 CC#72 Envelope release time
B0 63 37 B0 62 00 B0 06 48 Equalizer low band
B0 63 37 B0 62 00 B0 06 48 Equalizer low band
B0 63 37 B0 62 03 B0 06 40 Equalizer high band

Some set-up messages are duplicated. I’ve seen this kind of behavior in other synths and sequencers.

Key hits, knob turns, and pad hits produce the following MIDI messages:

Gesture    Example message             SAM2635 Function 
--------- -------------------------- ---------------------------
Key hit: 90 3C 7F Note on, channel 1
80 3C 00 Note off, channel 1
Filter: B0 4A 43 CC#74 TVF cutoff frequency
Resonance: B0 47 00 CC#71 TVF resonance
Reverb: B0 5B 23 CC#91 Reverb send level
Chorus: B0 5D 00 CC#93 Chorus send level
Attack: B0 49 00 CC#73 Envelope attack time
Release: B0 48 38 CC#72 Envelope release time
EQ Low: B0 63 37 B0 62 00 B0 06 47 Equalizer low band
EQ High: B0 63 37 B0 62 03 B0 06 40 Equalizer high band
Pad hit: 99 2E 6C Note on, channel 10
89 2E 00 Note off, channel 10
Volume: F0 7F 7F 04 01 00 7E F7 GM Master volume

No surprises other than volume. I didn’t expect the front panel volume knob to send a GM Master volume message. Volume must be regulated digitally in the synth as opposed to an analog audio pot.

Copyright © 2022 Paul J. Drongowski