Create a gist now

Instantly share code, notes, and snippets.

@halfbyte /format.md
Last active Dec 21, 2016

Format Description of Modal Electronics CRAFT SysEx messages

The Messages

When ever you switch or save presets from the hardware, the synth sends two sysex messages. They both start with a common header:

F0 00 21 07 64 CMD PATCHNO

Where CMD is 02 on the first message and 03 on the second and PATCHNO is 0-15 for the patch number.

Testing seems to suggest that sending the exact same messages will do nothing. So maybe the Hardware doesn't support saving patches via SysEx, which would be a shame. I'm looking forward to the announced apps to spy on them.

Message Two: Patch Name

The second message is simple, so let's get that out of the way first: It's the patch name.

I have no idea of what's the limit on this, I need to test it, but I would assume something like 16 bytes sounds reasonable. Also, keep in mind that this is 7 bit, so only ascii, I guess.

Message One: Patch Data

The patch data message contains all params of the current patch. By experimentation, I have managed to decode all of them. The message contains 32 bytes and I assume that the last byte, which is zero for all presets I've looked at so far, is reserved.

The patch format maps all parameters described in the manual, with the notable exception of the headphone volume, which kinda makes sense.

All offsets are relative to the header, so 0 means the 8th byte (byte 7 with zero index).

Offset Parameter
00 Waveform OSC 1
01 OSC mix
02 Detune
03 Spread
04  LFO Rate
05 LFO Depth
06 Filter Resonance
07 Filter Cutoff
08 Distort Amount
09 FM Amount
10 Fine Detune
11 Delay Amount
12 LFO Shape
 13 LFO Destination
14 Delay Time
15 Delay Feedback
16 Waveform OSC 2
17 Amp EG Attack
18 Amp EG Release
19 Filter EG Attack
20 Filter EG Release
21 Filter EG Invert
22 Amp EG Decay
23 Amp EG Sustain
24 Filter EG Decay
25 Filter EG Sustain
26 Octave
27 Scale
28 Glide Amount
29 Filter Morph
30 Delay MIDI Sync
31 Reserved (always 00)

Messages to send to Craft

Update! Today, Craft published the first version of the companion app and since a Mac version now exists, I was able to find out how to save patches to the Craft and more.

Make LEDs blink

I am not 100% sure of the purpose of these messages, but my guess is that they really are just there to make the four LEDs blink in an interesting way to confirm actions.

F0 00 21 07 64 06 0x y0 F7

The only messages that the App seems to send are 06 20 and 08 20. From experimentation I can say that 0x is the pattern (06 is a circular pattern, where as 08 is a flashing pattern) and y0 is the number of animations that should be played. The lower nybble doesn't seem to do anything.

Save a patch

F0 00 21 07 64 08 01 0x F7

Where 0x is the slot that you want to save the patch in. (since there are 16 slots, this goes from 00 to 0F)

This saves the current state of all parameters to a preset slot. There is no way (not that I found at least) to explicitly save a set of parameters.

The Craft answers this message with the two messages described at the top and what seems to be some sort of "Save Confirmed" message:

F0 00 21 07 64 08 02 0x F7

The obvious omission from this is that there doesn't seem to be a way to save a patch name on the device, despite the fact that the device reports names for the factory patches. If you save a patch, the patch name is automatically set to User Patch 0x and reported back as such. Such a shame.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment