Skip to content

Instantly share code, notes, and snippets.

@ktemkin
Created May 18, 2023 00:26
Show Gist options
  • Save ktemkin/89253ecf10c5078f47607776564de83b to your computer and use it in GitHub Desktop.
Save ktemkin/89253ecf10c5078f47607776564de83b to your computer and use it in GitHub Desktop.
Maschine Mk3 RE Notes

Display Format

The device has a "vendor defined interface" (5) with a single bulk OUT endpoint (4). This accepts commands that will set the screen value, with the following format:

Byte Meaning
0 const 0x84, command
1 const 0x00
2 screen number; 0 for left, 1 for right
3 const 0x60
8:4 const 0x00
9 X position at which to draw, MSB
10 X position at which to draw, LSB
11 Y position at which to draw, MSB
12 Y position at which to draw, LSB
13 image width to draw, MSB
14 image width to draw, LSB
15 image height to draw, MSB
16 image height to draw, LSB
17 const 0x02
22:18 const 0x00
23 image size in pixels, divided by 2, MSB
24 image size in pixels, divided by 2, LSB
... raw image pixels, in RGB16 format
footer 0x020000000300000004000000

Data Format

The remainder of the device's actual data is carried over its HID interface.

HID Input Reports

Digital Input Report (0x01)

General input types:

  • button = bit 1 for on, 0 for off
Byte Input Format
0 Rightmost Button, Shift, Joystick Left, Joystick Down, Joystick Right, Joystick Up, -, Joystick Press button bitmask
1 H, G, F, E, D, C, B, A button bitmask
2 Pedal Switch, Pedal Tip Switch / Pedal Present, Lock, Note Repeat, Tempo, Swing, Volume, Notes button bitmask
3 Events, Pattern, Scene, Fixed Velocity, Step, Chords, Keyboard, Pad Mode button bitmask
4 Mod, Pitch, Mute, Solo, Select, Duplicate, Navigation, Mic Tip Switch / Mic Present button bitmask
5 Stop, Record, Play, Follow, Tap, Erase, Restart, Perform button bitmask
6 Plugin, Mixer, Sampling, Right Arrow, Settings, Macro button bitmask
7 Auto, File, Left Arrow, Browser, Arranger, Channel button bitmask
8 Encoder, then: Buttons, second to rightmost downto leftmost button bitmask
9 Knob Encoders touch sense, leftmost downto rightmost button bitmask
10 upper nibble: -, lower nibble: joystick encoder turning right increases
11 encoder 7 (leftmost) LSB turning right increases
12 encoder 7 (leftmost) MSB 0x00 to 0xff
13 encoder 6 LSB 0x00 to 0x03
14 encoder 6 MSB 0x00 to 0xff
15 encoder 5 LSB 0x00 to 0x03
16 encoder 5 MSB 0x00 to 0xff
18 encoder 4 MSB 0x00 to 0x03
19 encoder 3 LSB 0x00 to 0xff
20 encoder 3 MSB 0x00 to 0x03
21 encoder 2 LSB 0x00 to 0xff
22 encoder 2 MSB 0x00 to 0x03
23 encoder 1 LSB 0x00 to 0xff
24 encoder 1 MSB 0x00 to 0x03
25 encoder 0 (rightmost) LSB 0x00 to 0xff
26 encoder 0 (rightmost) MSB 0x00 to 0x03
27 slider total travel LSB? noise? 0x00 to 0xff
28 slider total travel MSB? 0x00 to 0xff
29 slider LSB 0x00 to 0xff
30 slider MSB 0x00 to 0x03
31
32
33
34
35 Mic In Gain LSB 0x00 to 0xff
36 Mic In Gain MSB 0x00 to 0x0f
37 Headphone Volume LSB 0x00 to 0xff
38 Headphone Volume MSB 0x00 to 0xff
39 Line Out Volume LSB 0x00 to 0xff
40 Line Out Volume MSB 0x00 to 0xf0

Analog Input Report (0x02)

The first 48 bytes correspond to potential pad reports, which are encoded with:

  • A single-byte pad index, which occupies the grid position described in the 'index' grid, below.
  • A two-byte value spanning from 0x4000 to 0x4ffd. If the value does not start with 0x4xxx, then the slot isn't being used, and can be discarded.

Theoretically, analog inputs may touch the remaining slots; but for now, we don't know what they mean.

HID Output Reports

Report Purpose
0x80 sets button / led brightnesses
0x81 sets touch strip leds

Set Brightness Report (0x80)

Unless otherwise specified, 255 is max brightness and 0 is minimum.

Button 0 refers to the leftmost button over the screen; Button 1 the one directly to its right, and etc. etc.

Byte Affected Button Format
0 Channel button brightness
1 Plug in brightness
2 Arranger brightness
3 Mixer brightness
4 Browser brightness
5 Sampling brightness
6 Left Arrow brightness
7 Right Arrow brightness
8 File brightness
9 Settings brightness
10 Auto brightness
11 Macro brightness
12 Button 0 brightness
13 Button 1 brightness
14 Button 2 brightness
15 Button 3 brightness
16 Button 4 brightness
17 Button 5 brightness
18 Button 6 brightness
19 Button 7 brightness
20 Volume brightness
21 Swing brightness
22 Note Repeat brightness
23 Tempo brightness
24 Lock brightness
25 Pitch brightness
26 Mod brightness
27 Perform brightness
28 Notes brightness
29 'A' color
30 'B' color
31 'C' color
32 'D' color
33 'E' color
34 'F' color
35 'G' color
36 'H' color
37 Restart brightness
38 Erase brightness
39 Tap brightness
40 Follow brightness
41 Play (Green) brightness
42 Record (Red) brightness
43 Stop brightness
44 Shift brightness
45 Fixed Vel brightness
46 Pad Mode brightness
47 Keyboard brightness
48 Chords brightness
49 Step brightness
50 Scene brightness
51 Pattern brightness
52 Events brightness
53 Variation brightness
54 Duplicate brightness
55 Select brightness
56 Solo brightness
57 Mute brightness
58 Encoder Top LED color
59 Encoder Left LED color
60 Encoder Right LED color
61 Encoder Bottom LED color

Set Touch Strip Report (0x81)

Bytes Description Format
0 - 24 Touch Strip LEDs color
25 Pad '13' color
26 Pad '14' color
27 Pad '15' color
28 Pad '16' color
29 Pad '9' color
30 Pad '10' color
31 Pad '11' color
32 Pad '12' color
33 Pad '5' color
34 Pad '6' color
35 Pad '7' color
36 Pad '8' color
37 Pad '1' color
38 Pad '2' color
39 Pad '3' color
40 Pad '4' color

Color Formats

'Color' Format

The device uses a shared color format when talking over HID or talking to the NIHostIntegration service.

Colors are as follows:

Color Value (decimal)
Black / Off 0
Dark Grey 76
Grey 77
White 78
Rose 7
Red 6
Dim Red 5
Amber 14
Dim Amber 13
Lime 34
Dim Lime 33
Green 30
Dim Green 29
Spring 26
Dim Spring 25
Turquoise 31
Dim Turquoise 27
Sky 38
Dim Sky 37
Blue 42
Dim Blue 45
Magenta 58
Dim Magenta 57
Pink 62
Dim Pink 61
Orange 10
Dim Orange 9
Purple 50
Dim Purple 53
Peachy ^1 11
Yellow 22
Dim Yellow 21

^1: NI seems to call this "skin", but not all skin is pink???

'Brightness' Format

Other values are possible; but don't seem to do anything different.

Value Result
0 Off
4 Dim
5 Very Dim
6 On
7 Bright

Other interfaces

  • The MIDI in and out interfaces for the device carry data to and from the DIN MIDI ports on the back.
  • The audio interfaces capture the mic and the line in; and produce sound to headphones and a line out. The lower channels of each are the line.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment