Hercules MK2 MIDI mapping does have looping controls

Bug #550958 reported by iltony on 2010-03-29
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mixxx
Low
Unassigned
1.8
Undecided
Unassigned

Bug Description

Mixxx 1.8.0 beta1 is great! However I would like to point out some problems I noticed:
1. The wheeling job moves the music to slowly while in cue mode (hardware: Hercules Mk2)
2. The autodj function does not work, the next function is broken, can't use it for playing playlists
3. Can't use the new (and spectacular) loop control function by triggering it via the Hercules Mk2 Console dedicated buttons (loop led on, 1,2,3 buttons)
Thanks for great work and keep up!

RJ Skerry-Ryan (rryan) wrote :

For 1, I believe we've fixed that.

For 2, I don't know if we fixed that. Albert, do you know?

For 3, that's true, we haven't updated many of the MIDI mappings to use looping. It's mainly a lack of people who have the physical devices, so we can't test it. Please consider fixing the mapping and sending it our way :).

Thanks for the bug report,
RJ Ryan

Changed in mixxx:
milestone: none → 1.8.0
RJ Skerry-Ryan (rryan) wrote :

I'm going to hijack this into a MIDI mappings being out of date bug. I've confirmed that your issue 1 and 2 have been fixed.

Thanks,
RJ

summary: - mixxx 1.8.0 beta1 (amd64)
+ Some MIDI mappings not updated for Looping support.
RJ Skerry-Ryan (rryan) on 2010-06-18
Changed in mixxx:
status: New → Confirmed
importance: Undecided → Medium

Thanks a lot! I bet I'll try. I found out that the missing code is on file: /usr/share/mixxx/midi/Hercules-DJ-Console-Mk2-scripts.js around line 254:
252 case "cue":
253 case "loop":
254 print("HerculesMk2.buttons123: " + mode + " mode not supported yet"); <-- there!
255 break;
256
257 default:
258 print("HerculesMk2.buttons123: " + mode + " mode unsupported");
259 }
260};

Hover, I've got one question:
at lines:
29 0x0F: { "channel": 1, "name": "fx 1", "type": "button", "used": false },
30 0x10: { "channel": 2, "name": "fx 1", "type": "button", "used": false },
31 0x0E: { "channel": 1, "name": "fx 2", "type": "button", "used": false },
32 0x11: { "channel": 2, "name": "fx 2", "type": "button", "used": false },
33 0x0D: { "channel": 1, "name": "fx 3", "type": "button", "used": false },
34 0x12: { "channel": 2, "name": "fx 3", "type": "button", "used": false },
Am I missing something, or the name of the buttons should be "button x" and not "fx x", since the behaviour of this button depends on the value of mode variable? Those numbers on the left, correspond to the midi note sent by the controller, and the controllers doesn't know about mode (I tested it:
pressing button 1 in mode 1 => midi note 15 on channel 1
pressing button 1 in mode 2 => midi note 15 on channel 1
pressing button 1 in mode 3 => midi note 15 on channel 1
and so on...)

Anyway, I managed to patch it is something like:
..
277 case "loop":
 if (value) { // Button pressed.
     switch (HerculesMk2.controls.inputs[control].name) {
     case "fx 1": // "fx 1,2,3" should be globally renamed as said before?...
  // trigger loop in
                engine.setValue(group,"start", !engine.getValue(group,"start")); // Am I correct?
  break;
     case "fx 2":
  // trigger loop out
                engine.setValue(group,"end", !engine.getValue(group,"end")); // Am I correct?
  break;
     case "fx 3":
  // trigger loop exit
                engine.setValue(group,"loop", !engine.getValue(group,"loop")); // Am I correct?
  break;
     }
 }
278 //print("HerculesMk2.buttons123mode: " + sNextMode + " mode not supported yet");
279 break;
...

But I have not tested it yet!

iltony (iltony) wrote :

Yeah, I fixed it. See the attached patch file, intended to patch this missing feature in: "mixxx/1.8/mixxx/res/midi/Hercules-DJ-Console-Mk2-scripts.js".
Proposing for this to be merged in the 1.8 development branch.

Chris (mmm-zippymail) wrote :

Hi there,

I did some testing. since i am working with Vista i couldnt really use the patch file. still, i managed to edit my .js according to your changes.

i will post my whole section in here....

first part looks like this:

250> break; // End fx mode

    case "cue":
 print("HerculesMk2.buttons123: " + mode + " mode not supported yet");
 break;
    case "loop":
          if (value) { // Button pressed.
             switch (HerculesMk2.controls.inputs[control].name) {
             case "fx 1": // "fx 1,2,3" should be globally renamed as said before?...
                 // trigger loop in
                 engine.setValue(group,"loop_in", !engine.getValue(group,"start")); // Am I correct?
                 break;
             case "fx 2":
                 // trigger loop out
                 engine.setValue(group,"loop_out", !engine.getValue(group,"end")); // Am I correct?
                 break;
             case "fx 3":
                 // trigger loop exit
                 engine.setValue(group,"reloop_exit", !engine.getValue(group,"loop")); // Am I correct?
                 break;
            }
         }
         break;

275> default: (etc)

second part looks like this:

 case "fx":
     print("HerculesMk2.buttons123mode: Switching to " + sNextMode + " mode");
     break;
 case "cue":
     print("HerculesMk2.buttons123mode: " + sNextMode + " mode not supported yet");
     break;
 case "loop":
     print("HerculesMk2.buttons123mode: Switching to " + sNextMode + " mode");
            break;
 default: (etc)

Works fine with me. But i might have discovered a new problem. If i am heavily using the loop mode via my mk2, sometimes mixxx just crashes, leaving an older instance of the program open and my sound system in use for a little while.

i couldn't really reproduce this reliably to find out when exactly that happens, but happened to me at least 3 times in like 30 mins.

sorry for that ;)

cheers,

chris

Chris (mmm-zippymail) wrote :

ah i forgot to mention that i testet this with 1.80 beta 2, vista, herkules mk2 just as midi, 2 sound devices on my laptop with ASIO4ALL

Albert Santoni (gamegod) wrote :

Committed in 1.8 r2511. Thanks for the patch iltony!

Chris: Thanks for testing it as well. Since 1.8.0 Beta2 was released, we've made a number of stability and performance improvements. I believe you should find looping more stable in our next release.

Thanks again guys,
Albert

Changed in mixxx:
status: Confirmed → Fix Committed
importance: Medium → Low
summary: - Some MIDI mappings not updated for Looping support.
+ Hercules MK2 MIDI mapping does have looping controls
iltony (iltony) wrote :

Hercules Mk2, mixxx beta~2, problems about jogWheel moving too slowly are (still?) there. I tried to fix them by adding a:

    jogValue = jogValue * 20

in Hercules-DJ-Console-Mk2-scripts.js after the line (around 397):

  jogValue = value >=0x40 ? value - 0x80 : value; // -64 to +63, - = CCW, + = CW

I don't know if this is the right way to fix it... it's a little dirty... but it works.
Thanks for your patience.

RJ Skerry-Ryan (rryan) on 2010-10-05
Changed in mixxx:
status: Fix Committed → Fix Released
iltony (iltony) wrote :

Awesome. New version of mixxx 1.8.0 fixes all this issues.

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers