I’ve been working on adding support for the Hercules DJ Console (Mac Edition) to my Mac DJ application, DJ-1800. This has proved trickier than I imagined, as I have not been able to find any documentation of the MIDI commands sent by this controller.

So, I’ve had to deduce the controls myself. This has been made substantially easier by a tool called MIDI Monitor, created by Kurt Revis. This Mac OS X application lets you listen in on MIDI commands sent and received by devices and applications on your Mac.

By tracking the commands sent and received by Traktor Hercules, I’ve deduced the commands you need to send and receive to use the Hercules with another application. Here they are, for your delight.

First things first, you need to send your commands to the HDJC port called “Port 2″. “Port 1″ is the midi thru port on the HDJC, so it’s “Port 2″ that we’re interested in.

Secondly, all of these commands are sent and received on MIDI channel 2. Don’t ask me why – that’s just the way it is.

Take a look at this map of the Hercules DJ Console, which I found on the Internet. It shows the MIDI CC controller ID for each of the Hercules’ controls.

  • The button controls (1 thru 28) send a MIDI CC value of 127 when they are pressed, and 0 when they are released.
  • The six EQ twisters (34 thru 39) send a MIDI CC value from 0 (fully anticlockwise) to 127 (fully clockwise) when turned.
  • The two volume controls (43 and 44) send a MIDI CC value of 1 when they are turned one notch clockwise, and a value of 127 when turned one notch anticlockwise.
  • The two pitch sliders (41 and 42) send a MIDI CC value from 0 (bottom) to 127 (top), with a middle value of 64 when ‘clicked’ into the middle.
  • The two large spinner wheels (45 and 46) send a MIDI CC value of 1 when they are moved one step clockwise, and a value of 127 when turned anticlockwise. If you spin them fast enough, then these values increase (for clockwise) or decrease (for anticlockwise) towards 64. I’ve never got them to increase or decrease by more than 3 or 4 (giving 4 for clockwise and 124 for anticlockwise respectively), even when spinning them really fast.
  • The crossfader (40) sends MIDI CC values from 0 (fully left) to 127 (fully right).
  • The joystick (47 and 48) is a bit strange, but seems to send values in the X and Y axis. Seems like X runs from 28 to 114, with a midpoint of 64. Y runs from 33 to 108, with a midpoint also of 64. I know, that doesn’t quite make sense.

To turn the controllers’ lights on and off, send a CC command to the control whose light you want to set. Send a value of 127 to turn the light on, and 0 to turn the light off.

The following controls have lights underneath them:

  • Play / pause buttons (2 and 8 )
  • Cue buttons (3 and 9)
  • Autobeat buttons (4 and 10)

The following controls have associated LEDs (use the button’s CC value to set the LED’s state):

  • Headphones select (21 and 25)
  • Master Tempo (22 and 26)
  • 1, 2 and 3 buttons (13 thru 15, and 16 thru 18) – these correspond to the Loop, Cue and FX lights

The final command available is a command to poll the HDJC for its current state. You cand do this by sending a CC with ID of 127 and value of 127. This will cause the HDJC to reply with a CC command for each of its ‘permanent state’ controls, telling you what their current value is. So, for example, you’ll get the current value for the Treble, Medium and Bass twisters. In total, you will be sent the current position for controls 34 thru 42, and controls 47 and 48.

With this info you should be able to add support for the HDJC (Mac Edition) to your MIDI-enabled application pretty easily!

A quick note: I found that the pitch slider, with a MIDI range of 0 – 127, didn’t give me enough values for my pitch range of +/- 10%. Because I allow steps of 0.1%, that’s 200 steps in total, and the pitch slider only gives 127. So, I use the pitch slider as a volume control, and use the volume knob as the pitch controller – clockwise = +0.1%, anti-clockwise = -0.1%. But that’s just my preference.

A Hercules-enabled version of DJ-1800 isn’t yet available. But now I’ve sussed this lot out, it should be soon :-)