Hercules RMX HID-mapping

Hi everyone.

I got annoyed having to compile the Hercules MIDI module for every new Linux kernel (happens quite often on Arch) and the need to search patches adapting it to the current kernel now and then. So I finally sat down and wrote a mapping for the Hercules RMX using the native HID.

The mapping I’ve attatched does most of the stuff you’d expect it to do. To use it, load it for the Hercules RMX HID #5. The script file already includes the basics for 4 shift functions: Holding the “Stop” button, toggling the “Mic On/Off” button and toggling the “Source A” or “Source B” button (I’m not sure if it’s safe to use these, I had them go out of function before but couldn’t replicate the behaviour). But as of now these functions are unused in the script.

Furthermore I didn’t bind the numbered buttons 1 to 6 on each deck yet. You can easily find these functions in the script, because they have a print() call, and adapt them to your needs.

Another thing I have yet to figure out is that the LEDs for deck 2 were sometimes blinking during testing and I couldn’t figure out what triggers that.

I guess the most important part are the offsets of the buttons and leds in the script file. I hope you find my documentation readable and can work your way to a HID mapping of your own. The script is mostly based on zestoi’s scripts for the Mk2.

If you have questions or suggestions I’m happy to answer them. I’m also looking forward for anybody who knows how to controll blinking of the LEDs in HID-mode, if the Source Buttons are weird or if it’s only my controller that behaves that way or who knows, why there are two HID devices for the Hercules RMX.
Hercules-DJ-Console-RMX-hid-scripts.js (18.4 KB)
Hercules_DJ_Console_RMX__5.hid.xml (520 Bytes)

Awesome, I’ll check the RMX off the list of things I may support in the userspace driver.

Most Hercules controllers will flash the LED if you add some offset (I think it’s 0x80) to the control for the light. It’s been a while since I looked at Mixxx, but try twiddling the value you send to the control and the control number. Check the mp3e2 script for a better description than my memory at work :slight_smile:

Hi RichterSkala,

great work! Hopefully your code will be included within the 1.12 release. I made a pull request for that: github.com/mixxxdj/mixxx/pull/206

Commit is merged - as a RMX user thinking of using my old records in my sets, I am indeed VERY excited! Thank you everyone!!! :smiley:

Thanks flossy for your work to adapt my crude works to the coding standards and the merge!

I’m thinking if we ship this with the 1.12 release, shouldn’t we assign something to the numbered buttons? Any suggestions what they should do?

Regarding the blinking LEDs and the out-of-work “source”-buttons, my suspicion is that this might be due to power consumption by the controller, which my desktop PC can not provide (interestingly enough), on my laptop everything works…

Hi everyone, I’m a new member. First of all, please apologize me if I make some mistakes writing, because English is not my first language. :neutral_face:

I found this script very useful, so a big thank you goes to RichterSkala :smiley: but I also wanted something more, so I decided to add a couple of feature and share with you my work (I don’t know if someone is still using Hercules RMX and Mixxx 1.11, but nevermind :mrgreen: ).

Notice that this is a help request, too, because I didn’t manage to include all the feature i’d like to; therefore, if somebody see something wrong (or something that could be better) in my code, please let me know.

This is for Mixxx ver. 1.11, which is still the latest stable release.

Here you are the list of what I’ve done.

Added soft - takeover for all the faders.
Added toggle for flanger effect. Source 1 and Source 2 are now used to toggle flanger effect on deck 1 or 2 (LED will light up if effect is active). Stop + high, mid and bass knobs adjust flanger parameters.
Keypad 1 to 6 are now used to enable some functions
[list]Keypad 1 and 2 are now two hotcue buttons. First press sets the hotcue, other press goes to the hot cue. Stop + keypad 1 or 2 deletes corresponding hot cue.
Keypad 3 is the reverse button.
Keypad 4 and 5 are the loop in/out buttons (manual looping).
Keypad 6 is the reloop/exit button.ut positions
Stop + keypad 6 activates a loop of 4 beats (auto looping).
Stop + next/prev buttons doubles/halves loop lenght.
A little change in CUE behaviour: if the track ends and you hit cue buttons, player position goes to the previously set cue point, instead of setting a useless cue point at the end of the track (remember this script is for Mixxx 1.11).


Flanger adjustable parameters have weird values in the script. I added these weird values just because in this way knobs position on the controller matches with knobs position on the software, but I think it could be implemented better.

Add soft-takeover on knobs when passing from flanger-parameters adjusting to eq-parameters adjusting.

Add a way to move loop in/out positions (when manually looping).

(maybe) add brake effect with stop + cue :question:

That’s all for now, one last thing: I simply added “v2” in script name and “modified by N@z” in proprieties, but I don’t now if this is the correct way.

Let me know what you think about this.

Bye :wink:
Hercules-DJ-Console-RMX-hid-scripts-v2.js (21.8 KB)
Hercules_DJ_Console_RMX__5.hid.xml (650 Bytes)

Great work! I just wonder, why the left CueSelect-button lights constantly and the right one blinks, when they are active? Haven’t found something in the code yet…
Here is a version which clears the leds on startup (was just commented out) and on shutdown with this function (works on Mixxx 1.12beta):
RMX.shutdown = function() {
var c = RMX;
// Elvis has left the building…
for (id in c.leds) {
c.send(c.leds[id].group, c.leds[id].name, 0);
Hercules-DJ-Console-RMX-hid-scripts-v2.js (22 KB)

New Mixxx 2.0 Version is out, so I updated my HID mapping for the Hercules Dj Console RMX (hope someone’s still using this old controller :slight_smile: ).

Let’s see some features.

Added soft-takeover for all the faders.

Stop button acts as the “shift” button.

Pressing Shift + cue aligns the beatgrid to the current playing position.

Pitch Reset button lights up when pitch rate is at 0% (no matter if this is done by pressing the pitch reset button, or the sync button, or by moving the pitch slider).

Both of the “Sync” buttons lights up when both of the tracks in the 2 decks have the same BPM (no matter if you pressed the sync button or you manually beatmatched by moving the pitch slider).
[b]Keypads from 1 to 6 have different behaviours, buttons “source 1” and “source 2” chenges this behaviour (and light up when they’re active).

[size=150]When Source buttons are not active:[/size][/b]
-Keypad #1 and #2 are two hot cues. If hot cues are not set, pressing the buttons will set the hot cues; once they’re set, pressing the buttons will recall them; pressing shift + keypad #1 or #2 will delete the corresponding hot cue.

-Keypad #3 does a beatlooproll of 1/4 beat as long as it’s pressed (so releasing the button will stop the roll); shift + keypad #3 does a reverseroll as long as the button is pressed.

-Keypad #4 is the “loop in” button.

-Keypad #5 is the “loop out” button.

-Keypad #6 is the “reloop/exit” button.
When you are into a loop, you can adjust the loop out marker in 3 ways:
-pressing shift + prev or shift + next you can halve/double the loop lenght.
-pressing “prev” or “next” buttons you can move the loop out marker (450 samples per press).
-keeping shift pressed and rotating the jog wheel you can move the loop out marker.

[size=150]When Source buttons are active:[/size]

-Keypad from #1 to #3 activates corresponding effect units; they activates the unit for a specific deck, depending on what side are you pressing the keypad (left or right). Shift + Keypad scrolls among the available effects.
When an effect is ON, the “gain” knob turns into the “super” knob. When you switch off the effect, BUT your “source” button is still ON, the gain knob does nothing: this will let you turn the knob back into the “0” position before using it for gain control (switching “source” off) or for another effect.
Notice that once you activate/deactivate effect #1, the “super” parameter is instantly set to 0.5 - this is because I always use #1 unit for the “filter” effect.

-Keypad from #4 to #6 activates samplers from #1 to #3. For example, pressing keypad #4 on the left-hand side of the controller will:
-set play position at the very beginning of the sample;
-set the “orientation” parameter to the opposite hand side;
-play the sample (of course :wink:)
The orientation is chosen so that, for example, if you are playng a track from deck #1, you will press keypad from the left-hand side and so your sample is assigned to the right-hand side of the crossfader: this way, you can cut the sample simply moving the crossfader to the left, leaving the song you were playing. I know it’s difficult for me to explain, but if you try it will come natural.

When loading a track to deck A or B, corresponding headphone will turn on

I think that’s all, the other features are the same of the “basic” configuration.
I have some issues with the LEDs, because the “Beat Lock” and “Source 2” on the right-hand side always blink, instead of remaining still. I tried to add the code posted by Mankir, but with no success. :confused:

Please, tell me what you think of this mapping and if you have a solution for the LEDs issue.

Thank you.
Hercules_DJ_Console_RMX__5.hid.xml (629 Bytes)
Hercules-DJ-Console-RMX-hid-scripts-v2.js (34.4 KB)

1 Like

Thanks for letting our RMX console live a few more years with Mixxx. :slight_smile:

I’m not able to use my RMX to control Mixxx. I use Mixxx 2.0 x64 on Win 7 x64 with driver package 6.HDJS.2015.

In the controller panel I can see 3 controllers

  • Hercules DJ Console RMX _5 (cyrillic looking sign before the underscore)
  • Hercules DJ Console RMX _6 (cyrillic looking sign before the underscore)
  • Hercules DJ Console Rmx MIDI

I can assign a preset to the controllers in the list, but I cannot active it persistently. Everytime I close and re-open the settings, the checkmark is turned off again.

Can anyone please give me a hint on what to do?

Usually, Hercules driver allow you to use MIDI mappings, but don’t let you use your controller as HID.
Try uninstalling hercules driver, then use your controller with this HID mapping.

sblaisot, thanks for your suggestion, but I’m not sure, what you are heading at.

Uninstallation of the drivers leaves me with two controllers (without the MIDI one), but still: I cannot permanently activate a controller:


Without the ASIO drivers, the whole setup does not make much sense to me. Maybe someone can post his/ her config here to let me see what I’m doing wrong.

@ MichaelJespersen: The only thing I can say is that I don’t have that strange character before the underscore, so I suppose it must not be there. I can’t tell you much more, because I run Mixxx under GNU/Linux and I don’t have a Windows PC to try it out.

By the way, I updated (again) the script, somthing has added and something has changed. I don’t know if this will be useful to you all, I simply changed it to fit my needs. If you prefer, you can always use the previous version. :wink:

[size=150]Added features[/size]

Shift + Sync enables permanent sync lock (like when you click for more than 1 second on the “Sync” button on the skin, and the sync button becomes red).

Shift + Beat Lock toggles quantize (the magnet icon on the skin)

Shift + Pitch Reset changes the pitch range between two values: +/- 6% and +/- 100%. This arrangement suits my personal needs, because I always use the +/-6% range and I occasionaly need the +/-100% range to simulate vinyl brake or to do some crazy stuff with loops. I don’t know if this could be useful to you, in case you are free to modify the script or to ask me for help. Be careful with this, because the skin does not display the current pitch range value.

[size=150]Modified functions[/size]

When Sources buttons are NOT active

Keypad #3 changed its behaviour. Instead of doing beatlooproll and reverseroll, it now acts as the Hotcue #3 button. Like the other ones, press one will set the hotcue, then press it again will recall the hotcue; shift + keypad #3 will delete the hotcue.

But then, what happened to beatlooproll and reverseroll functions?

Shift + play button will activate the reverseroll. Press once to activate and press again to return in normal play mode.

Shift + keypad #4 does a 1/4 beatlooproll, as long as it’s keep pressed (release the keypad to stop the roll).

Shift + keypad #5 does a 4 beats loop. Just press once and the loop will repeat until you press keypad #6 (Reloop/exit button).

That’s all, this is a very personal setup, but if you have some particular requests maybe I can do something to write a customized version of the script.
Hercules-DJ-Console-RMX-hid-scripts-v2.js (35.6 KB)
Hercules_DJ_Console_RMX__5.hid.xml (629 Bytes)

Don’t ask me why, but now it works (complete reinstallation) with the MIDI controller entry in the controller section of the settings. Thanks for your suggestions! :slight_smile:

And thanks to N@z for optimizing the mapping for us RMX users. :slight_smile: :slight_smile:

Hi guys, been using this mapping with my RMX since it was first made available on Manjaro with Mixxx 2.0, and I’ve never managed to get any of the shift functions working. When I still used the MIDI drivers on PClinuxOS the keypads worked no problem. MIDI with Manjaro doesn’t work for me with my RMX, even with HDJmod compiled into the kernel. The RMX has latest firmware installed.

SHIFT function is holding Stop right? The middle button under the jog wheels of the RMX? Does nothing with the keypads, nor does having Source or Scratch or any button that I tried active. HID mappings and keypads never ever worked for me. What am I doing wrong? It’s frustrating.

EDIT: NEVERMIND, found it. Of course, immediately after posting this message. Had to enable RMX mappings HID v2, and manually add HID RMX mappings v2 scripts to the RMX 5 controller’s scripts tab, then I removed the one that was already there.

Hi guys!

Because of this thread, I finally made my Hercules dj console Rmx to work with Mixxx! :slight_smile:

Only big problem, the Cue/Mix Monitor knob doesn’t work.

I tried the assistant to recognize and assign it. It works, but have no effect.

Can someone help me please? I kinda need it tonight.

Thank you.

I’m using
Windows 7 64 bit
Mixxx 2.0.0
Hercules dj console Rmx Mk1

Thanks for all of your work on this script!

For the first time I am able to use my RMX without any the (very old) Linux hdjmod driver!

If you haven’t already, you should push it upstream – at least at the moment Mixxx appears to still have an older version of the mapping: github.com/mixxxdj/mixxx/blob/m … scripts.js

Keep up the good work!

Here a bit modified version: Jogs perform loop_move or beat jump when shifted…
Hercules-DJ-Console-RMX-hid-scripts-v2.js (34.4 KB)

hello all,
i couldn make it work these scripts… hercules rmx user, windows 7 64 bit…
on controllers menu i cant see the RMX hid when i select rmx as a midi… anyhelp appreciated…

in my case its not working?
under controller nothing listed?
the hid mapping not get loaded?
ubuntu studio and mixxx 2.1
any help, please !!

hi there,

my question is:
if i want pre listen a channel! i always have to listen both channels. i can not separate the channels.