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.

???

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

Other messages seem to not work until this one is issued.

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

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

Get settings

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

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

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

Set settings

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

See also

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