Decoding the Digitone SysEx

thanks! :slight_smile:
so it does look like the first 128 messages are patterns and the last one is project settings.
I was able to fix a corrupted project file which was what I was mainly trying to do.
I managed to make the patterns works but the tracks all point to empty sample slots, this is enough for me as I can hopefully try to rebuild the patterns with new sounds, having the plocks and trigs there is a good start! :slight_smile:

I’ll probs dive into the projects again for DT to see if I can figure out how the samples are referenced, ideally I’d like to make a 1 button script to backup a digitakt project + all associated samples.

2 Likes

The elk herd project already has this figured out I think. I’ve put in a feature request to have a “collect and save all” function added to save me redoing stuff that has already been figured out haha! But obv no expectations on anyone else’s time or anything so ill proba chip away at it

Hey. Sorry, I just got a chance to read your post. Seems you’ve already managed to do what you were trying to.

I must say that my focus was very narrow. I was basically focused on Digitone patches, and only the tags and title information in the patches. So I don’t really have any insights on the project data especially on Digitakt.

However, regarding the manufacturer/model ID, I must say that I did quite a bit of research, and while I don’t remember all the details now, I was pretty confident that I had figured it out at the time.

I’m certain that “00 20 3C” is Elektron’s manufacturer ID, but I’m not too sure about “0D 00 53 01 01” as model ID. But what mattered to me was that it was constant, and it was not part of the “data” portion of the SysEx message. Therefore, it didn’t really matter to my work. It’s all just a constant “header”.

I remember a general PDF document about SysEx message structure in general mentioning that some manufacturers include the MIDI port numbers as part of the model ID, so that if you have multiple instances of the same device in a setup, you still get a unique model ID per unit. I’m not sure if I understood that correctly, and never ran any tests to see Elektron does anything like that.

well spotted! :smiley:

Hey guys splendid work here to reverse engineer the sysex messages.
I am building a max msp midi editor and I need to read the values of the fx and the trig page form the sysex pattern data.
I am trying to send a sysex request for the pattern data without the sound data.
I have been able to figure out the sysex message request for current sound(byte 9 specified track) and current pattern or specified in byte 9 pattern.
The pattern sysex massages very are large and I am wondering if anybody figured out how to request the pattern data only.
Thx in advance

1 Like

It’s been a long time since I have put into this project, but most of the information I was working off of was in the monomachine manual. The best path forward would be attempt the call from there.There is a pattern dump request in the sysex implementation. You’ll need to change the SYSEX INIT to have the digitone sysex prefix from the code base.

SYSEX pattern dump:
  MIDI Byte | Purpose
------------+----------------------------
(SYSEX init)|
        $67 | Pattern dump ID
        ... | Pattern data bytes (see separate
            | documentation)
        $f7 | SYSEX end

SYSEX pattern dump request:
  MIDI Byte | Purpose
------------+----------------------------
(SYSEX init)|
        $68 | Pattern request ID
  %0aaaaaaa | Send pattern %aaaaaaa
        $f7 | SYSEX end

Hope this helps, best of luck!

2 Likes

I’m very interested.
Also for pattern generation, using sysex.

Is there a place where we can have the sysex structure or whatever about that?