Machinedrum SPS1-UW X.04 Released [ Unofficial ]

Edit: Machinedrum SPS1-UW X.05 Released [ Unofficial ]

Machinedrum SPS1-UW OS 1.71 :rocket:

This is an unofficial firmware release and marks the first new MD firmware since 2012.

Our mission is to fix long standing bugs and enhance the MD’s MIDI Spec.


The improvements to the MIDI spec allow for better integration with attached MIDI devices, such as the MegaCommand.

For those unfamiliar, the MegaCommand is a small, open hardware MIDI controller that provides the MD with modern sequencer capabilities and other great features.

MegaCommand Project
MCL User Manual


The OS development team consists of @v-yadli and @JustinValer. The tools and techniques used to create new firmwares were developed from the ground up. We are not affiliated with Elektron, but would be open to collaboration should the opportunity arise.

Best Regards,

@v-yadli @JustinValer


Astonishing !!!


Interesting. What does this offer a non MCL user ?


astonishing is the appropriate term indeed.
does that mean per track pattern length could happen ?
I mean in a fully-hypothetically-just-asking-for-a-friend-mayhaps-kinda-in-theory-just-being-nosy-way …
great to see so much MD-love chaps!


great to see someone is still taking care of the MD.
Thank you for that.

I tip my software engineerβ€˜s hat to you and I donβ€˜t even have a Machinedrum… …yet.



Also curious to see what this bring to the table if you don’t have a mcl.

Much respect for putting in the love.

The changelog is part of the download for all those interested in what changes this brings… very rad and congrats to the two devs!


:slight_smile: fantastic job all involved, as a non MCL user i won’t be upgrading just yet but will be listening with great interest.

1 Like

I don’t own an MD but this is righteous. /slowclap


β€œThis piece of firmware is o.k”.

In fact, it just keeps getting better.

Awesome news! I’m hoping someone @Elektron can offer you some assistance in your future efforts.

Does 1.70 already have some notable bugfixes?

Thanks again!

On receiving SDS sample dump, MD user interface no longer locks up.
This will make MD more sample-capable and tighten the workflow (without having to reboot every time after receiving).


Awesome! My MD is only a lowly mk I so dont use samples much due to lack of storage, but I’m sure this will be appreciated by many.

Great choice of word … this is amazing!

Could someone post the change log ? Cannot open the zip on the phone and I’m too curious…

1 Like
  • Machinedrum OS 1.70 Release information *

This is an unofficial firmware release and is not
affiliated or endorsed by Elektron.

How to upgrade:

  • Hold down the [FUNCTION] button while powering up.
  • This should take you to the Machinedrum boot menu.
  • Enter the β€œMIDI Upgrade” mode by pressing [5 LT].
  • Send either the SYSEX or the MIDI firmware file to the Machinedrum.

To transfer the SYSEX file we recommend using C6 βˆ’ Sysex Tool by Elektron.
After starting the transfer you should see the trig LED’s lighting
up, and when the update is done the unit should reset itself and
boot the new OS.

Detailed instructions are available in the EARLY STARTUP MENU chapter
in the latest Machinedrum users manual.


The [redacted] development team

List of changes from Machinedrum SPS-1 OS 1.63 to 1.70


Updates to the MD’s SYSEX specification are listed below.

SYSEX kit request:

MIDI Byte | Purpose

(SYSEX init)|
$53 | Kit dump request ID
%0aaaaaaa | Send kit number %0aaaaaa ( 0 to 63 )
If kit number >= 64, the current unsaved kit data (workspace)
is sent.

SYSEX kit sysex dump:

MIDI Byte | Purpose

(SYSEX init)|
$52 | Kit dump ID
$04 | Version
%0aaaaaaa | Kit originalPosition %0aaaaaa ( 0 to 63 )
If kit number >= 64, the kit is copied to the current
unsaved kit data (workspace)

*KitDump format below V4 is no longer supported.

SYSEX status request:

MIDI Byte | Purpose

(SYSEX init)|
$70 | Status for parameter %aaaaaa (see list below)
%00aaaaaa |
%0bbbbbbb |
$f7 |

0x01 Current global slot (0 to 7)
0x02 Current kit number (0 to 63)
0x04 Current pattern number (A1=0, A2=1, … B1=16, …)
0x08 Current song number (0 to 31)
0x10 Current sequencer mode (pattern mode=0, song mode=1)
0x20 Current lock mode (classic=0, extended=1)

0x30 Firmware capabilities:
- Returns a multibyte bitmask indicating available firmware features
0x31 Enable/disable Trigger Interface mode:
- bbbbbbb = 0x01 | Enable
- bbbbbbb = 0x00 | Disable
0x32 Enable/disable Track Select mode:
- bbbbbbb = 0x01 | Enable
- bbbbbbb = 0x00 | Disable
0x33 Query mute state
0x34 Query sample slot:
- bbbbbbb | Slot Number

Trig Interface (TI) Response:

When the TI is enabled, the Machinedrum will send a SYSEX message upon
trig key press, without triggering internal sounds.
This can be used to extend the GUI of an attached MIDI devices.

MIDI Byte | Purpose

SYSEX) | Realtime Universal System Exclusive Header
$0D | Status for parameter %aaaaaa (see list below)
%0aaaaaaa | if (%0aaaaaaa >= 64) Trig on
| else { Trig off }
$f7 |

Track Select Response:

When Track Select is enabled, the Machinedrum will send a SYSEX message
when the current track is changed.

MIDI Byte | Purpose

SYSEX) | Realtime Universal System Exclusive Header
$0E | Status for parameter %aaaaaa (see list below)
%000aaaa | Current MD track.
$f7 |

Bug fixes

SDS Lockup bug:
Sending samples to the MD could cause the buttons and encoders
to become unresponsive, requiring a restart.

List of changes from Machinedrum SPSβˆ’1 OS 1.62 to 1.63


Program change channel can now be selected in the Global
settings. Base means receiving only on the four MIDI channels
the Machinedrum usually reacts to.

Bug fixes
Song Pointer Position did not work properly without a MIDI base
channel assigned. Fixed.
βˆ’ +Drive βˆ’
INP machines soundes strange during Snapshot change. Fixed.


Well this is one thing I didn’t ever expect to happen. Baffled.

*Eats hat for all the times I’ve posted there are not going to be MD or MM updates ever.


Wow, impressive stuff! I’m really interested in this kind of tinkering, and had been trying to work out how to get the firmware out of a Sysex dump - I came across your thread on the MAME repo where you were discussing this topic.

Would you be open to discussing further how you did this (either in public or private) or is it something you want to keep to yourselves? I’m mostly just curious and have a few ideas I’d love to implement - I’m an experienced audio software dev but haven’t worked with assembler so it would take me a long while to get up to speed, but I’d love to learn more and perhaps contribute to your project. No worries if you’d rather keep your methods private for now though, I would totally understand.


Wow! Can’t believe this! Awesome