The build quality is what you'd expect from the pricetag, being about as robust as a DJ Hero 2 controller but with more functionality. With two jogwheels, a crossfader, 14 rotaries, 16 backlit buttons and MIDI over USB already functioning out of the box it presents an interesting hacking project for controllerism and hardware modding.
As you'd expect, this unit is intended to be used with included software. I assumed there were going to be issues using it in recognizing it as a MIDI device outside of Cross DJ, but OSX picked it up as a MIDI device:
I opened Max6 and set up a patch to check what MIDI messages were being sent and to see whether the jogwheels, rotaries and buttons had dedicated assignments. Only the jogwheels were sending values on 24 & 25 and MIDI notes C#6 & C6 respectively.
Instead of the jogwheels sending the full range from 0-127 they only send a 1 value with a forward (clockwise) movement of the jogwheel and a 127 value when moved in reverse/anticlockwise. Going by Precision Audio's amusing Product Demonstration, the controller can actually scrub through tracks using these wheels similar to Traktor - I guess it moves the playhead forward and backward incrementally whenever it receives these values on their respective controller numbers.
The video also mentions a "break" function on the jogwheels which pauses the playing track on each channel by pushing in the jogwheel and releasing it to resume playback. This explains the noteon and noteoff messages on C6 & C#6.
I used MIDI Monitor to check what messages were being sent to and/or from the controller when Cross DJ boots. It does indeed send a list of noteoff messages which then trigger a list of control values to be sent back (perhaps polled by the software.)
After this the controller sends MIDI from all of the buttons and rotaries even with Cross DJ closed.
The full dump of the activation string is below:
22:53:13.979 To GW MID-100 Note Off 1 D#2 0
22:53:13.979 To GW MID-100 Note Off 1 B2 0
22:53:13.979 To GW MID-100 Note Off 1 C3 0
22:53:13.979 To GW MID-100 Note Off 1 E3 0
22:53:13.979 To GW MID-100 Note Off 1 F#3 0
22:53:13.979 To GW MID-100 Note Off 1 B3 0
22:53:13.979 To GW MID-100 Note Off 1 D4 0
22:53:13.979 To GW MID-100 Note Off 1 E4 0
22:53:13.979 To GW MID-100 Note Off 1 A#4 0
22:53:13.979 To GW MID-100 Note Off 1 B4 0
22:53:13.979 To GW MID-100 Note Off 1 C5 0
22:53:13.979 To GW MID-100 Note Off 1 C#5 0
22:53:13.979 To GW MID-100 Note Off 1 D5 0
22:53:13.979 To GW MID-100 Note Off 1 D#5 0
22:53:13.979 To GW MID-100 Note Off 1 F#5 0
22:53:13.979 To GW MID-100 Note Off 1 G5 0
22:53:13.979 To GW MID-100 Note Off 1 D5 0
22:53:13.979 To GW MID-100 Note Off 1 D5 0
22:53:13.979 To GW MID-100 Note Off 1 D#5 0
22:53:13.979 To GW MID-100 Note Off 1 D#5 0
22:53:13.979 To GW MID-100 Note Off 1 D5 0
22:53:13.979 To GW MID-100 Note Off 1 D#5 0
22:53:13.979 To GW MID-100 Note Off 1 D4 0
22:53:13.979 To GW MID-100 Note Off 1 A#4 0
22:53:13.979 To GW MID-100 Note Off 1 B4 0
22:53:13.979 To GW MID-100 Note Off 1 D#2 0
22:53:13.979 To GW MID-100 Note On 1 F#5 127
22:53:13.979 To GW MID-100 Note Off 1 B2 0
22:53:13.979 To GW MID-100 Note Off 1 E3 0
22:53:13.979 To GW MID-100 Note Off 1 E4 0
22:53:13.979 To GW MID-100 Note Off 1 C5 0
22:53:13.979 To GW MID-100 Note Off 1 C#5 0
22:53:13.979 To GW MID-100 Note Off 1 C3 0
22:53:13.979 To GW MID-100 Note On 1 G5 127
22:53:13.979 To GW MID-100 Note Off 1 F#3 0
22:53:13.979 To GW MID-100 Note Off 1 B3 0
22:53:13.979 To GW MID-100 Note Off 1 D5 0
22:53:13.979 To GW MID-100 Note Off 1 D5 0
22:53:13.979 To GW MID-100 Note Off 1 D#5 0
22:53:13.979 To GW MID-100 Note Off 1 D#5 0
22:53:13.979 To GW MID-100 Note Off 1 D5 0
22:53:13.979 To GW MID-100 Note Off 1 D5 0
22:53:13.979 To GW MID-100 Note Off 1 D#5 0
22:53:13.979 To GW MID-100 Note Off 1 D#5 0
22:53:13.979 To GW MID-100 Note Off 1 D5 0
22:53:13.979 To GW MID-100 Note Off 1 D#5 0
22:53:14.160 From GW MID-100 Control 1 General Purpose 1 (coarse) 63
22:53:14.160 From GW MID-100 Control 1 Effect Control 1 (coarse) 127
22:53:14.161 From GW MID-100 Control 1 Effect Control 2 (coarse) 62
22:53:14.161 From GW MID-100 Control 1 Expression (coarse) 120
22:53:14.161 From GW MID-100 Control 1 Controller 9 65
22:53:14.162 From GW MID-100 Control 1 Pan (coarse) 68
22:53:14.163 From GW MID-100 Control 1 General Purpose 2 (coarse) 60
22:53:14.163 From GW MID-100 Control 1 General Purpose 4 (coarse) 61
22:53:14.163 From GW MID-100 Control 1 Controller 15 71
22:53:14.164 From GW MID-100 Control 1 Balance (coarse) 56
22:53:14.164 From GW MID-100 Control 1 General Purpose 3 (coarse) 55
22:53:14.165 From GW MID-100 Control 1 Controller 20 85
22:53:14.165 From GW MID-100 Control 1 General Purpose 1 (coarse) 63
22:53:14.166 From GW MID-100 Control 1 Effect Control 1 (coarse) 127
22:53:14.166 From GW MID-100 Control 1 Effect Control 2 (coarse) 62
22:53:14.166 From GW MID-100 Control 1 Expression (coarse) 120
22:53:14.167 From GW MID-100 Control 1 Controller 9 65
22:53:14.168 From GW MID-100 Control 1 Pan (coarse) 68
22:53:14.168 From GW MID-100 Control 1 General Purpose 2 (coarse) 60
22:53:14.168 From GW MID-100 Control 1 General Purpose 4 (coarse) 61
22:53:14.169 From GW MID-100 Control 1 Controller 15 71
22:53:14.169 From GW MID-100 Control 1 Balance (coarse) 56
22:53:14.169 From GW MID-100 Control 1 General Purpose 3 (coarse) 55
22:53:14.170 From GW MID-100 Control 1 Controller 20 85
22:53:14.170 From GW MID-100 Control 1 General Purpose 1 (coarse) 63
22:53:14.171 From GW MID-100 Control 1 Effect Control 1 (coarse) 127
22:53:14.171 From GW MID-100 Control 1 Effect Control 2 (coarse) 62
22:53:14.171 From GW MID-100 Control 1 Expression (coarse) 120
22:53:14.172 From GW MID-100 Control 1 Controller 9 65
22:53:14.310 To GW MID-100 Note Off 1 D#5 0
22:53:14.310 To GW MID-100 Note Off 1 D#5 0
22:53:14.310 To GW MID-100 Note Off 1 D5 0
22:53:14.310 To GW MID-100 Note Off 1 D5 0
22:53:14.310 To GW MID-100 Note Off 1 D#5 0
22:53:14.310 To GW MID-100 Note Off 1 D5 0
22:53:14.310 To GW MID-100 Note Off 1 D#5 0
Converted these messages to a txt file and loaded it into a coll. A dump message sends this activation string to the controller.
1, 51 0;
2, 59 0;
3, 60 0;
4, 64 0;
5, 66 0;
6, 71 0;
7, 74 0;
8, 76 0;
9, 82 0;
10, 83 0;
11, 84 0;
12, 85 0;
13, 86 0;
14, 87 0;
15, 90 0;
16, 91 0;
17, 86 0;
18, 86 0;
19, 87 0;
20, 87 0;
21, 86 0;
22, 87 0;
23, 74 0;
24, 82 0;
25, 83 0;
26, 51 0;
27, 90 127;
28, 59 0;
29, 64 0;
30, 76 0;
31, 84 0;
32, 85 0;
33, 60 0;
34, 91 127;
35, 66 0;
36, 71 0;
37, 86 0;
38, 86 0;
39, 87 0;
40, 87 0;
41, 86 0;
42, 86 0;
42, 87 0;
43, 87 0;
44, 86 0;
45, 87 0;
47, 87 0;
48, 87 0;
49, 86 0;
50, 86 0;
51, 87 0;
52, 86 0;
53, 87 0;
Draft map of the native MIDI assignments of the controller:
Dump of the De-activation string that is sent when Cross DJ closes:
01:26:34.432 To GW MID-100 Note Off 1 D4 0
01:26:34.432 To GW MID-100 Note Off 1 A#4 0
01:26:34.432 To GW MID-100 Note Off 1 B4 0
01:26:34.432 To GW MID-100 Note Off 1 D#2 0
01:26:34.432 To GW MID-100 Note Off 1 F#5 0
01:26:34.432 To GW MID-100 Note Off 1 B2 0
01:26:34.432 To GW MID-100 Note Off 1 E3 0
01:26:34.432 To GW MID-100 Note Off 1 E4 0
01:26:34.432 To GW MID-100 Note Off 1 C5 0
01:26:34.432 To GW MID-100 Note Off 1 C#5 0
01:26:34.432 To GW MID-100 Note Off 1 C3 0
01:26:34.432 To GW MID-100 Note Off 1 G5 0
01:26:34.432 To GW MID-100 Note Off 1 F#3 0
01:26:34.432 To GW MID-100 Note Off 1 B3 0
01:26:34.432 To GW MID-100 Note Off 1 D#2 0
01:26:34.432 To GW MID-100 Note Off 1 B2 0
01:26:34.432 To GW MID-100 Note Off 1 C3 0
01:26:34.432 To GW MID-100 Note Off 1 E3 0
01:26:34.432 To GW MID-100 Note Off 1 F#3 0
01:26:34.432 To GW MID-100 Note Off 1 B3 0
01:26:34.432 To GW MID-100 Note Off 1 D4 0
01:26:34.432 To GW MID-100 Note Off 1 E4 0
01:26:34.432 To GW MID-100 Note Off 1 A#4 0
01:26:34.432 To GW MID-100 Note Off 1 B4 0
01:26:34.432 To GW MID-100 Note Off 1 C5 0
01:26:34.432 To GW MID-100 Note Off 1 C#5 0
01:26:34.432 To GW MID-100 Note Off 1 D5 0
01:26:34.432 To GW MID-100 Note Off 1 D#5 0
01:26:34.432 To GW MID-100 Note Off 1 F#5 0
01:26:34.432 To GW MID-100 Note Off 1 G5 0
01:26:34.437 From GW MID-100 Control 1 Expression (coarse) 68
01:26:34.438 From GW MID-100 Control 1 Controller 9 107
01:26:34.438 From GW MID-100 Control 1 Pan (coarse) 86
01:26:34.439 From GW MID-100 Control 1 General Purpose 2 (coarse) 63
01:26:34.439 From GW MID-100 Control 1 General Purpose 4 (coarse) 119
01:26:34.439 From GW MID-100 Control 1 Controller 15 65
01:26:34.440 From GW MID-100 Control 1 Balance (coarse) 42
01:26:34.440 From GW MID-100 Control 1 General Purpose 3 (coarse) 68
01:26:34.440 From GW MID-100 Control 1 Controller 20 115
01:26:34.441 From GW MID-100 Control 1 General Purpose 1 (coarse) 53
01:26:34.441 From GW MID-100 Control 1 Effect Control 1 (coarse) 65
01:26:34.442 From GW MID-100 Control 1 Effect Control 2 (coarse) 63
01:26:34.442 From GW MID-100 Control 1 Expression (coarse) 68
01:26:34.443 From GW MID-100 Control 1 Controller 9 107
01:26:34.443 From GW MID-100 Control 1 Pan (coarse) 86
01:26:34.444 From GW MID-100 Control 1 General Purpose 2 (coarse) 63
01:26:34.444 From GW MID-100 Control 1 General Purpose 4 (coarse) 119
01:26:34.444 From GW MID-100 Control 1 Controller 15 65
01:26:34.444 From GW MID-100 Control 1 Balance (coarse) 42
01:26:34.445 From GW MID-100 Control 1 General Purpose 3 (coarse) 68
01:26:34.445 From GW MID-100 Control 1 Controller 20 115
01:26:34.445 From GW MID-100 Control 1 General Purpose 1 (coarse) 53
01:26:34.445 From GW MID-100 Control 1 Effect Control 1 (coarse) 65
Next,
MIDI Map of backlit buttons
Max >> Controller activation string
Waveform Scratch in Max
TBC





