Table of Contents

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

???

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

The LCD says SYS for a second

Device enquiry

f0 7e 7f 06 01 f7

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

Receive preset

f0 00 01 05 7f 31 06 62 nn f7

where nn is a preset number between 01 and 0c, or 00 for RAM

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

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

See also