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 |
The remainder of the device's actual data is carried over its HID interface.
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 |
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.
Report | Purpose |
---|---|
0x80 | sets button / led brightnesses |
0x81 | sets touch strip leds |
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 |
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 |
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???
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 |
- 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.