SAM2695, A50 and NSX-39 thoughts

I’m still kicking around ideas for small, ultra-low cost MIDI tone modules. Random thoughts to follow…

I completed the SAM2695 project using the M5Stack U187 MIDI module. Using a nibbling tool and utility knife, I cut a few holes along the edge of a Hammond 1591CSBK plastic project box. I packed the MIDI module and cabling into the Hammond box and strung cables through the holes. There are three cables:

  • An in-line barrel connector switch cable
  • A 3.5mm stereo cable (6 feet)
  • A CME MIDI cable (3 feet)

The audio and MIDI cables are thin and flexible. Overall, this proved to be a better construction method than drilling holes for external connectors and so forth. I’m not the best fabricator…

SAM2695 General MIDI tone module

The end result is a GS-compatible General MIDI module which is the size of a guitar pedal. I configured a Novation Launchkey 49 (Mk4) to select 16 GM voices through the pads and to tweak/tweeze a basic set of GM parameters. The Mk4 supports two zones (Part A and Part B), is flexible, and deserves a blog post of its own.

I put the SAM2695 through its paces and confirmed my impressions. (See my post comparing the SAM2695 against the Yamaha PSS-A50.) Not a bad GM module for $50 (total). Still, it won’t have people selling their Nords, Montages, Kronos, whatever. 🙂 There are some decent playable voices and then there are some crap voices.

The SAM2695 effects, in particular, leave me wanting. The 2695 exposes reverb and chorus parameters, but most tweaking requires System Exclusive (SysEx) messages. More ranting about SysEx in a minute.

Relatively speaking, the Yamaha PSS-A50 is not harsh and its effects are better. The PSS-A50 also uses a one-chip solution, the Yamaha YMW830. On the other hand, the A50 MIDI implementation is truly spartan. For example, one cannot change either the reverb or chorus type. The stock A50 is mono (not stereo), so the Yamaha engineers decided not to implement MIDI CC#10 Pan.

Thus, I have really cooled to the idea of hacking the A50 into a module. Why begin a project when you know that the end result will be deficient in a major way?

Which brings me to the third option — chopping up Gakken NSX-39, better known as “Pocket Miku.” The NSX-39 is based upon a different one-chip Yamaha solution, the YMW820 (NSX-1). The YMW820 is a more than decent XG MIDI implementation. It supports the full GM sound set (A50 has 40 selected GM voices) and it has a fair to middling variation effect unit, including rotary speaker!

With all that going for it, the NSX-39 should be a no brainer. Nope. There is no clear, direct way to hack MIDI onto the YMW820. So, it’s likely to be MIDI over USB all the way and the USB port is implemented by an ARM media processor chip fronting MIDI to the YMW820 over SPI. The NSX-39 is already a small board/package and there isn’t much to cut away.

Then there is the issue of that insipid Miku voice. MIDI channel 1 is dedicated to Miku and, without writing the flash ROM, you can’t get rid of it. Yamaha had envisioned Real Acoustic Sound (RAS) as an alternative to Miku, but they never released a ROM image. RAS is a form of Articulation Element Modeling (AEM), also known as “Super Articulation 2“. Here is a video demo (AEM saxophone) of what could have been. [Video courtesy of Ken Fujimoto.]

YMW820 Real Acoustic Sound (RAS)

A big issue hanging over all three design options is the inability to send SysEx from the Launchkey. Or, another way of stating the requirement, critical settings need SysEx when most inexpensive MIDI controllers are incapable of sending SysEx. Really, how hard would it be to add SysEx support to a MIDI controller? SAM2695 has two MIDI CCs — CC#80 and CC#81 — which set the reverb type and chorus type, respectively. This capability is very unusual, however.

Yamaha arrangers keep voice set-up data in a few different places. Every voice has a basic set-up in its internal meta-data. One level up in abstraction, each panel voice has a so-called VCE (Voice Edit) file. (“VCE” is one of several file name extensions which denote a Voice Edit file.) The VCE is a MIDI file which selects the base-level voice and then changes EQ, filter characters, attack/release, and insert effect among other things. Styles contain something like a VCE in One Touch Setting (OTS) locations. Registrations can store VCE-like data, too.

The arranger voice design got me thinking. Why not map MIDI Program Change messages to a group of VCE-like MIDI messages in order to set up the SAM2695 (or whatever), i.e., choose reverb and chorus type, tweak EQ, and so forth? My AdaFruit Feather MIDI event processor would be a good platform given the appropriate custom code. A future project?

Copyright © 2025 Paul J. Drongowski

M5Stack U187 General MIDI module

Getting right to the point, cabling the M5Stack U187 MIDI Unit was a straightforward breeze. I now have a tiny General MIDI (GM) module for less than $50 USD. Best of all, the audio is cleaner than other SAM2695 implementations and I have full access to the Roland GS-compatible engine within.

Yep, I traced out signal paths to make sure +5V and ground go to the right places. M5Stack have done a good job with their connector and port layout. Plus, the cable color-coding makes it easy to see “what goes where.”

M5Stack U187 General MIDI module cabling

The picture above (click to enlarge) shows all of the electronics and cabling splayed out. I added an in-line power switch between the AC-DC adapter and the M5Stack buck converter. The only “trick” is to jumper the RXD and TXD signals. The jumper creates a signal path from the external MIDI IN to the SAM2695 MIDI port. RXD and TXD are both TTL-level signals, i.e., the receive side is after the opto-isolator.

And, gosh, M5Stack gear is inexpensive for what ya get. I’m tempted to try one of their integrated controllers like the M5Stack Core 3. Count me in.

Next on the agenda is a case. I’m going to stuff everything into a plastic Hammond 1591CSBK, also known as a “guitar pedal” case. I don’t intend to add connectors; the audio, MIDI and power switch cables will dangle out of the box. I’m ham-handed when it comes to craftsmanship and there is no reason to complicate set up. I will use a CME MIDI cable since the CME’s have much smaller plugs. The HOSA MIDI cable (above) won’t fit inside the 1591 case.

The only quibble is that M5Stack have jacks on all four sides of the U187 module. Thus, I’ll need cables with compact, right-angle plugs.

Overall, the M5Stack U187 MIDI Unit is the fastest, cheapest path to a GM tone module. Recommended.

Copyright © Paul J. Drongowski

Sound test: Yamaha A50 vs. SAM2695

The Yamaha A50 keyboard and the M5Stack U187 MIDI Unit (synthesizer) are based on two different ultra-low cost chips: the Yamaha SWLL (YMW830) and the Dream S.A.S. SAM2695, respectively.

The SAM2695 implements the full General MIDI (GM) sound set replete with Roland GS control and System Exclusive (SysEx) MIDI messages. The A50 implements forty voices from the GM sound set and a subset of the Yamaha XG MIDI standard. Because the A50 is a subset, it seems only fair to compare equivalent voices and see which synth is stronger.

The table at the end of this post is a voice-to-voice comparison. Neither instrument will have you ditching your Montage or Kronos. 🙂 The price points are definitely entry-level — $120 USD for the A50 (if can find one) and $15 for the M5Stack U187 MIDI Unit.

Surprisingly, the main grand piano voices are nearly identical! Both pianos are single strike and key velocity simply makes the underlying multi-sample louder or softer. Unexpectedly, the A50 electric grand is darker than the main grand. I prefer the darker tone as it is less likely to shatter glass.

The A50 electric pianos correspond to dark Rhodes and FM DX tones. The SAM EP has a bell-like chime, even its attempt at Rhodes.

The organs aren’t going to knock you out being the typical GM fare. The A50 drawbar organ has more low-mid tone and guts. The SAM rock organ is annoying and is especially buzzy in the low end. (An attempt at overdrive?) It’s unusable.

The A50 acoustic guitars have more mid-range body tone. The SAM clean and overdriven electrics are thin and the SAM overdrive (OD) is unconvincing. I selected A50 voices through its front panel and Yamaha may be adding the chorus effect to the clean guitar. Both jazz guitars need chorus to get the classic JC120 effect.

The SAM basses sound like a sampled electric. The SAM acoustic bass is not very jazzy (authentic). The A50 slap bass nails “Seinfeld” and the A50 synth bass almost nails “Chameleon”. The SAM synth bass is all punch and no sustain — doesn’t sound very rezzy.

The SAM solo violin and cello have more attack and body than the A50. Didn’t see that coming! The SAM pizzicato string voice has reverb sampled in, resulting in playback artifacts. The A50 harp low notes are unrealistic.

My biggest knock against SAM is the ensemble string voice. There is a bad, very audible loop lump in the octave about middle C. This gaffe should have never shipped.

Trumpet and trombone are what one would expect of GM solo brass — kind of real, but one-dimensional. Again, it’s a single multi-sample made louder and software by velocity. The A50 French horn is mellower than SAM. The SAM brass section sounds like a sampled synth brass patch, not real horns.

The A50 tenor sax is breathy although it won’t fool anyone. The SAM tenor sounds like a snake-charmers reed recorder. Yuck. I prefer the warmer A50 oboe. The clarinet and flute voices are nearly identical.

What can you say about synth leads and pads? They are what they are. The A50 has a few nasty, aggressive lead voices and the SAM has a few, too. Yamaha nails a few of the classic GM synth voices, but they were there at the beginning of General MIDI, weren’t they? 🙂

Overall, it’s a split decision. I lean Yamaha A50 over SAM2695. Yet, I keep repeating “15 dollars” over and over again. Remember, SAM is a full GM sound set and you might be able to substitute an alternative GM voice in place of a weaker voice.

If you like Akai MPK Mini and want an A50-like experience, I recommend the Akai MPK Mini Plus 37 combined with the M5Stack U187 MIDI unit. The M5Stack gives you a complete GS-compatible synth module (for $15!). Avoid the Akai Mini Play and its brain-damaged SAM implementation.

Copyright © 2025 Paul J. Drongowski

+ mark means "generally useable for a low-price instrument"

PC1  Voice name            A50 SAM  Comments
---  --------------------  --- ---  --------------------------
1    Grand Piano            +   +   Same
3    Electric Grand Piano   +       SAM: bright; A50: dark
5    Electric Piano 1       +       SAM: chimey tines; A50 dark Rhodes
6    Electric Piano 2           +   SAM: Rhodes; A50 DX EP

12   Vibraphone             +   +   Same
13   Marimba                        SAM: more hammer tone

17   Drawbar Organ          +       A50: more low-mid freq
19   Rock Organ             +       SAM: sampled chorus is annoying, buzzy
22   Accordion              +       SAM: thin; A50: chorus/octaves
23   Harmonica                  +   A50: thin

25   Nylon Guitar           +       A50: body tone/resonance
26   Steel Guitar           +       A50: body; SAM: not bad!
27   Jazz Guitar            +   +   A50: dark; SAM; bright; both need chorus
28   Clean Guitar           +       SAM: thin; A50: built-in chorus, sustain
30   Overdriven Guitar      +       SAM: too clean, OD fake-y

33   Acoustic Bass          +   +   SAM: sampled electric?
34   Finger Bass            +       SAM: picked bass?
37   Slap Bass              +       SAM: picked fretless? A50: Seinfeld
39   Synth Bass             +   +   SAM: no sustain; A50: Chameleon

41   Violin                     +   SAM: more attack, body
43   Cello                  +   +   SAM: more body
46   Pizzicato Strings      +       SAM: sampled reverb, artifacts
47   Orchestral Harp            +   A50: low notes unrealistic
49   Strings                +   +   Similar; SAM: Can hear loop point

57   Trumpet                +   +   SAM: slightly warmer; A50: more real
58   Trombone               +   +   A50: more attack blat
61   French Horn            +   +   SAM: brighter, more attack; A50: mellow
62   Brass Section          +       SAM: sampled synth brass?
63   Synth Brass                    Very similar

67   Tenor Sax              +       A50: breathy; SAM: snake charmer
69   Oboe                   +       SAM: bright, almost synthetic
72   Clarinet               +   +   Very similar
74   Flute                  +   +   Very similar

81   Square Lead                    A50: pure; SAM: nasty, chorus/distort
82   Sawtooth Lead                  A50: clean; SAM: nasty, chorus/detune
83   Gemini                         A50: nasty; SAM: Calliope
85   Punchy Chordz          +       A50: nasty; SAM: kind of weak

89   New Age Pad                    SAM: bell-like; A50: classic GM
90   Warm Pad               +   +   Both good; A50: classic GM
101  Brightness                     What can I say?

Akai MPK Mini Play: GM/GS MIDI mod

In order to make your Aka MPK Mini Play (Mk1) into a GM/GS module, you must modify its hardware. As it is with all mods, modifications void the warranty, could damage the keyboard, and may affect resale value. The risk is yours alone.

That said, I’ve now thoroughly tested my Akai MPK Mini Play (Mk1) MIDI mod. Not only is a General MIDI module hiding inside, it does Roland GS, too!

Recapping, the MPK Mini Play main printed circuit board has a group of test pads for the internal synthesizer. The test pads are bigger than surface mount (SMT) traces, which makes soldering much easier. I tapped four signals and brought them out from the board on a ribbon cable:

  • SAM2635_RX: MIDI IN (white wire)
  • SAM2635_TX: MIDI OUT (black wire)
  • D Ground: Ground for external power (grey wire)
  • D +3.3V: +3.3V for external power (purple wire)

“SAM2635” refers to the Dream S.A.S. SAM2635 synthesizer chip — the MPK Mini Play’s tone generator.

Akai MPK Mini Play (Mk1) test pads (before and after)

I did a reasonably thorough analysis of the internal MIDI messages and the Mini Play’s MIDI over USB implementation. The Akai software is much too limiting and I became determined to unleash the Kraken within (the SAM2635).

Akai MPK Mini Play (Mk1) connected to UBLD.IT MIDI breakout board

I connected the other end of the ribbon cable to a UBLD.IT MIDI breakout board. The UBLD.IT board provides Akai MPK Mini Play 5-pin MIDI IN and MIDI OUT ports to the Dream SAM2635. I recommend turning INTERNAL SOUNDS off so controller messages do not interfere (collide) with incoming 5-pin MIDI messages. Don’t expect signals/messages to merge.

What else do you need to start using the SAM2635 as a MIDI module? Documentation! The Dream S.A.S. web site has:

You can skip the datasheet, but you will definitely need the firmware and sound bank guides.

The firmware guide describes the GM/GS implementation including, of course, the supported MIDI messages. You’ll find a few interesting and useful enhancements beyond General MIDI and Roland GS:

  • Several selectable reverb and chorus effect types.
  • 1-, 2- or 4-band equalization.
  • A spatial effect.

Near as I can tell, the microphone and CODEC are not connected in the MPK Mini Play electronics. Maybe you’ll discover a hack of your own…

The sound bank guide describes the available voices and drum kits:

  • 128 General MIDI instruments.
  • Nine drum sets and one sound effects (SFX) set.
  • 225 variation instruments.

The variation instruments are a true bonus. You get additional electric pianos, organs, guitars, synth basses and orchestral instruments. The variations are a little light on synth leads and pads, but I think you are expected to roll-your-own by programming amplitude and filter characteristics via MIDI CC messages. The GS implementation offers many options that way.

How does it sound? Here is an MP3 of my standard GM test: Traffic’s Feelin’ Alright. Compare with the Yamaha PSS-A50 rendition. There is a decent piano solo during the last 30 seconds or so, if you want to skip ahead.

I pulled together links to all of my previous articles about the Akai MPK Mini Play (Mk1):

All in all, this has been a successful hack!

Copyright © 2022 Paul J. Drongowski

Akai MPK Mini Play mod: MIDI IN success

I performed a few more quick experiments over the weekend and I’m happy to report further success!

Although the Akai MPK Mini Play has an internal Dream S.A.S. SAM2635 synthezier chip, the Akai microcontroller software blocks full access — a true shame because the SAM2635 firmware is a complete General MIDI/GS implementation.

I modified an Akai MPK Mini Play bringing out four signals from the main printed circuit board (PCB):

  • MIDI IN white wire: SAM2635_RX MIDI input
  • MIDI OUT black wire: SAM2635_TX MIDI output
  • Ground grey wire: Ground for external power
  • +3.3V purple wire: +3.3V for external power

My goal is to override the Arm microcontroller and drive the SAM2635 over 5-pin MIDI, completely bypassing the Akai software. If successful, we should be able to use the fully functionality afforded by the SAM2635.

Test 1: UBLD.IT MIDI breakout board

A full test of the UBLD.IT MIDI breakout board is in order before testing the MPK Mini Play. If the UBLD.IT isn’t working, any test with the Mini Play will fail, too.

UBLD.IT MIDI breakout board schematic (CC)

The UBLD.IT board is a really nice, small MIDI IN and MIDI OUT breakout board. The MIDI OUT side is dirt simple and sends the transmit signal (pin 1 of J2) to the 5-pin DIN connector through a current limiting resistor (R4). Please recall that MIDI is an active LOW current loop. The return pin — the other side of the current loop — is connected to VCC (the positive voltage rail) through a current limiting resistor (R1).

The MIDI IN side provides the opto-isolated MIDI logic signal to the receiving electronics. DIN pins 4 and 5 send the incoming current through the LED in the opto-isolator (U1). The opto-isolator is a 6N138. The LED shines on a photo-transistor. The photo-transistor is essentially a light-controlled pull-down path from the positive voltage rail to ground. Thus, the MIDI logic signal is HIGH when idling and is active LOW. The incoming logic signal is sent off the board through the receive pin (pin 2 of J2).

The test set-up is simple. Jumper the transmit and receive pins (J2). Connect +3.3V and Ground using the Mini Play as a power source. Connect UBLD.IT MIDI IN to the MIDI OUT of any handy keyboard like a Yamaha MODX. Connect UBLD.IT MIDI OUT to the MIDI IN of a second keyboard like a Yamaha Genos. Turn on the Mini Play to apply power to the interface. Play the sending keyboard (MODX) and listen for sounds produced by the receiving keyboard (Genos).

It was gratifying to hear the Genos while playing MODX, i.e., the UBLD.IT is working correctly.

Test 2: Play using an external keyboard

The next test is to drive the Akai MPK Mini Play itself.

Here’s the test set-up. Leave the MODX connected to UBLD.IT MIDI IN. Disconnect UBLD.IT MIDI OUT since we don’t need it. Connect the UBLD.IT pins (J2) to the corresponding Mini Play signals. Receive is SAM2695_RX (white wire) and transmit is SAM2695_TX (black wire). Leave ground and +3.3V connected (grey and purple wires, respectively).

UBLD.IT MIDI board connected to Akai MPK Mini Play

Turn on the Akai MPK Mini Play. Play the MODX. You should hear sounds produced by the SAM2635. Yay! 🙂 Try the MODX MOD and pitch bend wheels.

I believe this design works electronically because MIDI is active LOW and idles in the HIGH state. The pull-down transistor in the opto-isolator pulls the SAM2635_RX node LOW. Normally, you cannot tie two logic outputs together, but the pull-down works in this situation. (Think “wire OR”.) By the way, you shouldn’t play the Mini Play keys or turn its knobs as MIDI signals from the Arm microcontroller will interfere with the MIDI IN logic signal! I recommend turning INTERNAL SOUNDS off when using the 5-pin MIDI IN.

The next step is to try the Dream SAM2635 as a GM/GS synthesizer. Stay tuned.

Copyright © 2022 Paul J. Drongowski

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

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

Akai MPK Mini Play MIDI mod (1)

Yesterday, I took a quick look inside the Akai MPK Mini Play MIDI controller and synthesizer. I would like to discover a way to drive fully the Dream S.A.S. SAM2635 synthesizer chip without interference by the Arm microcontroller.

My initial investigation concentrated on the set of test points connected to key SAM2695 inputs and outputs:

    Pad Signal        Dream function 
--- ----------- ---------------------------
1 STIN Serial test input
2 STOUT Serial test output
3 SAM2635_RST Master reset and power down
4 SAM2635_TX MIDI OUT
5 SAM2635_RX MIDI IN
6 D GND Digital ground
7 D +3.3V Digital +3.3V

If I can read and drive the SAM2635 MIDI IN and OUT, it should be possible to control the Dream synthesizer directly.

First, I need easy access to the relevant test points. I started with a 4-wire ribbon cable with male prototyping pins at both ends. These ribbon cables are easy to find and are generally used to connect a group of signals from one prototyping connector to another. In this case, I cut off the pins at one end with the intention of soldering the wires to the test points on the Mini Play main printed circuit board.

Ribbon cable to Akai Mini Play test points

The picture above shows the test points after soldering. The soldering job ain’t pretty, but the joints are functional. The color coded connections are:

    Pad Signal        Dream function  Color 
--- ----------- -------------- -----
4 SAM2635_TX MIDI OUT Black
5 SAM2635_RX MIDI IN White
6 D GND Digital ground Grey
7 D +3.3V Digital +3.3V Purple

After inspection, I took a deep breath and powered up. The Mini Play functioned correctly, thank goodness.

Ribbon cable and prototyping pins

I created a small, unobtrusive notch in the plastic top panel and routed the ribbon cable through the gap above the high C key. If I ever go to sell or trade the Mini Play, I should be able to unsolder and remove the cable while leaving the case visibly intact. As you can see in the picture above, the ribbon cable terminates at four male prototyping pins.

UBLD.IT MIDI breakout board

Next up, I assembled a UBLD.IT MIDI breakout board and interface. I bought the UBLD.IT board from Amazon. Unfortunately, the board is now out of stock. Bummer, cuz it’s a nice one.

The UBLD.IT has a 4-pin female header:

    Pin   Function 
---- --------------
Xmit MIDI OUT
Recv MIDI IN
Vcc Positive voltage rail
GND Ground

I connected the ribbon cable to the UBLD.IT board and connected the UBLD.IT to a Windows PC through a 5-pin Roland MIDI interface.

Power up. No joy. The Mini Play worked properly, but I wasn’t able to monitor the MIDI traffic from the Arm microcontroller to the Dream SAM2635 synthesizer via MIDI-OX. Nor was I able to drive the SAM2635. So much for the quickest and dirtiest solution!

Since nothing smoked and the Mini Play is healthy, it’s time for methodical investigation. First goal, I would really like to monitor the MIDI traffic from the Arm to the SAM2635. It might help me figure out what the heck the Akai software is doing to incoming USB MIDI messages. Once I ace this problem, I’ll try driving the SAM2635, again.

One further observation. I attached SAM2635_RX and SAM2635_TX to a Gabotronics USB oscilloscope. After futzing with the scope controls, I observed what looks like serial data bytes (MIDI) on the SAM2635_RX line. The Arm drives this line when it sends MIDI messages to the SAM2635. Serial bytes are sent in response to note ON/OFF, control knobs, and the joystick. Ooooo, so close!

By golly, there ought to be a way to monitor this MIDI traffic! I conjecture that the logic signal is inverted. Another possibility is a non-standard data rate, that is, something other than 31,250 baud. Probably ought to test the UBLD.IT in isolation, too.

Copyright © 2022 Paul J. Drongowski

Inside Akai MPK Mini Play (mk1)

Akai MPK Mini Play (first generation). Let’s take a look inside.

The Akai MPK Mini Play splays open just like an Akai MPK Mini. Check out one of the fine MPK Mini disassembly videos if you want to crack open your MPK Mini Play. Here are a few quick tips:

  • Gently remove the knobs from the pots. You will need to pry under each knob with a super small screwdriver or some other flat blade.
  • You need to remove the red rubber cap from the center of the joystick. The rubber cap is held on by adhesive.
  • Once the red rubber cap is removed, unscrew the joystick knob and set it aside along with the cap.
  • Remove all twelve screws from the bottom. These screws hold the bottom to the top.
  • Pry up the back of the Mini Play first and expect to sneak the top past the underside of the keys.
  • Mind the ribbon and battery cables when opening the chassis. Be slow and gentle. Do not aggressively flip the case open!

Splaying the case is good enough to expose the main electronics. Unless you are going to fix or mod the pads, you do not need to remove the main printed circuit board (PCB).

Akai Mini Play (Mk1) splayed open

As you can see in the picture, the keybed is mounted on the bottom tray. The battery compartment is molded into the bottom. A ribbon cable connects the keybed switch matrix (rows and columns) to the main PCB. In the future, I’d like to personalize my Mini Play by replacing the standard black on white keybed with a white on black keybed — Vox Continental envy. 🙂

The main PCB has left, middle and right parts. The middle looks empty, but the rhythm pads are on the other side in this region. The rubbery black pad in the case bottom provides mechanical support to the PCB beneath the rhythm pads.

Akai Mini Play main PCB joystick

The right part of the main PCB has the arpeggiator switches and joystick subassembly. The legend on the integrated circuit (IC) is super faint and is barely readable with a strong light and magnifying glass. IC5 appears to be a CMOS 595D 8-bit serial-in, serial- or parallel-out shift register. Signals from the right part of the PCB travel over a gazillion traces to the left part.

Akai Mini Play PCB (Arm and Dream synthesizer)

All the really fun stuff is on the left part of the main PCB. Here you will find the back panel components: battery/USB power switch, 3.5mm headphone jack, sustain pedal jack, and USB-B port. The sustain pedal jack is hidden beneath the ribbon cable in the picture. [You’re not really missing anything.]

The ribbon cable near the USB-B connector connects the OLED display to the main PCB. IC10 and IC11 are TI HJ4051 8:1 multiplexer/demultiplexers. Akai conveniently printed cable signal tables on the PCB. Signals for the OLED display (J2) are:

     Pin Signal       Pin Signal 
--- --------- --- ---------
1 NC 8 OLED_CS
2 NC 9 OLED_RST
3 NC 10 OLED_CD
4 NC 11 OLED_CLK
5 D +3.3V 12 OLED_DATA
6 D GND 13 D GND
7 D +3.3V 14 D GND
15 D GND

The legends on IC4 and IC5 are quite faint. They are either 74HC595D or 74HC395D. My eyes are old and sore. 🙂 This logic is probably related to the rhythm pads and signals from the right side of the main PCB.

Signal assignments are given for the keybed ribbon cable (FCN1):

     Pin Signal       Pin Signal 
--- --------- --- ---------
1 KBD_COL8 9 KBD_COL4
2 KBD_ROW1 10 KBD_ROW5
3 KBD_COL7 11 KBD_COL3
4 KBD_ROW2 12 KBD_ROW6
5 KBD_COL6 13 KBD_COL2
6 KBD_ROW3 14 KBD_ROW7
7 KBD_COL5 15 KBD_COL1
8 KBD_ROW4 16 KBD_ROW8

Typical key scanning drives a row (or column) signal and reads back a column (or row) group. Holy smokes! The Mini Play PCB may support eight groups of eight keys. If the proper software support is implemented, one might be able to attach a 61-key keybed to the main PCB! (A big “IF”.)

The 64 pin surface mount (SMT) device near the two printed tables is the main CPU: an ST Microelectronics STM32F401RCT6 Arm Cortex-M4 microcontroller. This device has a single core, 64KB RAM and 256KB flash memory. The blue dot may indicate that the device was programmed before installation. (Dunno.) I can’t read the top of the crystal XTIM1, so I don’t know the clock speed.

Finally, we get to the synthesizer (IC2): a Dream S.A.S. SAM2635. The Macronix IC (IC3) at the left edge of the PCB is NOR flash containing the Dream waveforms. Again, the blue dot may signify preload status. Near the SAM2635, we find JST connectors for the battery and the speaker.

In my view, the most exciting and interesting part of the main board are the test points in the lower left corner. The signals are:

    Pad Signal        Dream function 
--- ----------- ---------------------------
1 STIN Serial test input
2 STOUT Serial test output
3 SAM2635_RST Master reset and power down
4 SAM2635_TX MIDI OUT
5 SAM2635_RX MIDI IN
6 D GND Digital ground
7 D +3.3V Digital +3.3V

I verified these connections using a continuity tester. The SAM2635_RX and SAM2635_TX pads are connected to the Arm microcontroller:

    Pin  Function       Test POINT  Pad 
--- ------------ ---------- ---
42 USART1_TX SAM2635_RX 5 I/O 5V tolerant
43 USART1_RX SAM2635_TX 4 I/O 5V tolerant

So, boys and girls, we may be in business!

In my opinion, Akai botched the MPK Mini Play by hiding the Dream synthesizer behind software on the Arm. The Arm makes the Mini Play look like a semi-crazed synth of its own, not the SAM2635. The test points may — may — provide a way to get at the Dream synthesizer directly. The INTERNAL SOUNDS button acts like a MIDI LOCAL CONTROL button. So, I’m hoping to disable internal sounds and hijack the MIDI IN and OUT test pads (signals) to the SAM2635.

Come for the teardown; Stay for the mods:

Copyright © 2022 Paul J. Drongowski

Akai MPK mini play mk3

Even though Winter NAMM 2022 is postponed (or just outright moved) to June, a few manufacturers are sticking to their release schedule.

Include Akai on the list of schedule keepers.

Akai have revamped the MPK mini play giving it a new front panel layout and a better speaker. The mini-keyboard has been upgraded to Gen-2, too. The new MPK mini play mk3 is slightly larger: 317 x 178 x 58mm versus 312 x 172 x 46mm. No strain, there.

Akai MPK mini play mk3

Other specs are largely the same. I would think the mk3 is based on the same mk1 sound engine (probably a Dream Synthesis SAM2635). The speaker is larger and is a welcome change.

I rather like the new layout. The control knobs are larger (?) with a modern appearance. Maybe, possibly, the knob placement may interfere with finger drumming? Internal (initial) control assignments are the same. Styling overall is more “noir.” No visible changes to the arpeggiator.

Thomann indicate price at 129 EURO. Thomann USA have a $124 USD price for USA customers.

If you fancied one before, now you’re spoilt with choice.

  • More than 100 internal drum and instrument sounds
  • Gen-2 keyboard with 25 velocity-sensitive mini keys
  • 8 backlit MPC pads with Note Repeat and Full Level function (x2 banks)
  • 4 controls for editing internal sounds or MIDI parameters (x2 banks)
  • built-in speaker
  • OLED Display
  • Pitch / Modulation Joystick
  • Arpeggiator
  • Connection for sustain pedal: 1/4inch jack
  • USB-B Port
  • Headphone output: 3.5mm jack
  • Dimensions (W x D x H): 317W x 178D x 58H mm
  • Weight: 860 g (1.9 pounds)
  • Software package: Akai Pro MPC Beats, AIR Music Tech Hybrid 3, Mini Grand, Velvet and Melodics learning software with 60 lessons

Copyright © 2022 Paul J. Drongowski