neige d'aout

knowledge, art, and other stuff

User Tools

Site Tools


code61_re

This is an old revision of the document!


M-Audio Code 61 Reverse Engineering Project

Preface

It's a MIDI keyboard controller with a ton of programmable knobs, it comes with some editor software to edit these knobs with up to 12 presets on it, downloadable on M-Audio's website, only available on Windows and MacOS. Here we try to reverse engineer that preset editor software…

MIDI ports

There's 4 ports available:

amidi -l
Dir Device    Name
IO  hw:x,0,0  Code 61 USB MIDI
IO  hw:x,0,1  Code 61 MIDI DIN
IO  hw:x,0,2  Code 61 Mackie/HUI
IO  hw:x,0,3  Code 61 Editor

The last one in particular is used by the preset editor.

SysEx messages

SysEx messages generally have the following format:

Startf0
Manufacturer ID7e (non real-time) or 00 01 05 (M-Audio)
Device ID7f (all devices)
Endf7

⇒ sent to keyboard

⇐ reply from keyboard

On Linux, try amidi -p hw:x,0,3 -S '<message>' -d

The LCD says SYS for a second for most of these commands.

Mode

f0 00 01 05 7f 31 06 6d 00 01 01 f7

Other messages seem to not work until this one is issued. Last byte set to 00 seems to lock it and 01 unlocks it.

Device enquiry

f0 7e 7f 06 01 f7

f0 7e 7f 06 02 00 01 05 31 06 31 30 34 34 f7

Manufacturer ID (00 01 05) and model ID (31 06)

Receive preset

f0 00 01 05 7f 31 06 62 nn f7

f0 00 01 05 7f 31 06 63 0a 3b nn [xx xx xx xx xx xx] … f7

nn is a preset number between 01 and 0c, or 00 for RAM
xx is a 6-byte ASCII preset name

Send preset

f0 00 01 05 7f 31 06 61 0a 3b nn [xx xx xx xx xx xx] … f7

Get settings

f0 00 01 05 7f 31 06 6b 00 02 nn nn f7

f0 00 01 05 7f 31 06 6c 00 04 nn nn xx xx f7

nn: setting address (00 00, 00 04-00 10)
xx: value

Set settings

f0 00 01 05 7f 31 06 6a 00 04 nn nn xx xx f7

See also

code61_re.1773477935.txt.gz · Last modified: by Yuki