Free bugfixes for hercules mk2 on linux

Bug #245037 reported by b2ag
2
Affects Status Importance Assigned to Milestone
Mixxx
Won't Fix
Low
ironstorm
1.6
Won't Fix
Undecided
Unassigned
2.3
Won't Fix
Low
ironstorm

Bug Description

I've just stumbled upon the new code in herculeslinux.cpp which was mainly made for covering new features on the hercules rmx controller. But some little thinks now gone wrong with hercules mk2:
 - I can't toggle scratch mode ( no SCRATCH button @mk2 )
 - I can't set calibration with RIGHT_1 button ( caused by a missing break instruction )
 - It makes no sense to visualize m_pRotaryLeft->getCalibration() if scratch mode is on

My diff shows how to fix these issues ( with LEFT/RIGHT_FX_SELECT buttons as SCRATCH button ).
Would be nice if someone can push it into trunk.

Greets,
Thomas <b2ag> Baag

Revision history for this message
b2ag (thomas-b2ag) wrote :
Revision history for this message
b2ag (thomas-b2ag) wrote :
Revision history for this message
b2ag (thomas-b2ag) wrote :

Hello again,

today its all for free:
  - i've updated LEFT/RIGHT_PITCH to work well with manipulation from outside

I think everybody wants to have that :)
So please make it quick into trunk.

Revision history for this message
RJ Skerry-Ryan (rryan) wrote :

Hello!

Thanks very much for taking the initiative on these problems. We'll look the fixes over and push them into trunk ASAP.

-RJ Ryan

Revision history for this message
b2ag (thomas-b2ag) wrote :

Hello RJ,

i've discovered, that headphone switch is broken too for mk2. Patch will follow soon.

Revision history for this message
RJ Skerry-Ryan (rryan) wrote :

These are probably 1.6.0 critical, changing status.

Changed in mixxx:
assignee: nobody → mixxxdevelopers
importance: Undecided → Critical
Revision history for this message
ironstorm (ironstorm-gmail) wrote :

None of these are critical (i.e. they don't result in an crashes or an inability to use Mixxx). Likely some or all of these enhancements will get applied to trunk though, as they make sense to have... Thanks for the patches.

With respect to the headphone switch the problem is with libDJConsole 0.1.2 which does not define mappings for the switch. If you replace the /usr/share/libdjconsole/06f8-b100.buttons file with the one from libDJConsole 0.1.3 (http://sourceforge.net/project/showfiles.php?group_id=90705&package_id=213662) the switch should work fine.

Changed in mixxx:
assignee: mixxxdevelopers → ironstorm-gmail
importance: Critical → Low
Revision history for this message
b2ag (thomas-b2ag) wrote :

it is done.

I'll try to summarize what changes the last attached diff show:

 - moved led-updates to a separate method: led_update( bool buttonPressed, int buttonIdx );
 - removed unused Methods PitchChange, PitchChangeOrdinal and properties m_bClearLeftPitchPlus, m_bClearLeftPitchMinus, m_bClearRightPitchPlus, m_bClearRightPitchMinus
 - added const int MONITOR_DECK_A_MK2, MONITOR_DECK_B_MK2, MONITOR_MIX_MK2 , MONITOR_SPLIT_MK2 to cover different values of those for mk2
 - added MONITOR_DECK_A_MK2, MONITOR_DECK_B_MK2, ... to non_button_controls
 - initialize m_iPitchOffsetLeft and m_iPitchOffsetRight in constructor
 - manipulate void run() to call led_update(false,0) every nth-time ( n= 10 )
 - added button special case LEFT/RIGHT_FX_SELECT to toggle scratchmode
 - changed button special cases for LEFT/RIGHT_1/2/3 to setCalibration if (!scratchMode) so that all RMX controllers can use different temp pitch bend settings on jog wheels
 - changed LEFT/RIGHT_PITCH to affect m_pControlObjectLeft/RightPitch relative and not absolute ( via add/sub Method instead of using sendEvent )
 - added MONITOR_*_MK2 to non_button handling code
 - changed led-status for LEFT/RIGHT_FX/FX_CUE/LOOP to display m_pRotaryLeft/Right->getCalibration() only if not in scratch mode ( Rotary are not configured well for scratchmode)
 - comment out implementation of PitchChange if maybe someone miss it?

Method "void run()" needs to know about latency setting and no fixed configured "msleep(64);". I write this msleep(64) call a while ago and it is adjusted to my (not really new) pc.
I didn't do it by myself because it don't know how to read out the latency setting and worser i think it would affect the behavior of Rotary ( m_pRotaryLeft/Right ) and maybe the scratch mode too if they get called more or less often per time. I've done it because i wanted my jog wheels to work again with newest mixxx. But now a scratch mode joined the party and i think we'll have to find something suitable for both applications ( pitch and scratch ). I will try to work an that.

Revision history for this message
b2ag (thomas-b2ag) wrote :

Hello,

the 06f8-b100.buttons file solved my headphone troubles. thanks for your hint.
I agree that none of these are critical.
Maybe ironstorm can tell me how jog wheels are handled when signals arriving via midi?
I want to know how they get transformed if they should do a temp pitchbend and when the signal a scratch?
For herculeslinux.cpp method run() call
    sendEvent(r, m_pControlObjectRightScratch);
and
    sendEvent(r, m_pControlObjectRightJog);
which means it does
   m_pControlObjectRightJog/Scratch->slotSet(r)
every 64ms where r is filtered to fade "softly" to 0. Is there any similar program code for midi jogs as well?

Revision history for this message
Albert Santoni (gamegod) wrote :

Garth, are you going to have time to handle this patch (these patches?) before 1.6.0? If not, we should untarget this from 1.6.0.

(I'm just doing bug cleanup, it doesn't matter to me whether this goes in before the end of the month.)

Revision history for this message
ironstorm (ironstorm-gmail) wrote :

Untargeting from 1.6.0...

This is a jumble of different stuff some of which isn't a bug (headphone), some isn't established to work on all herc hardware (pitch changes) and some that have been applied based on these patches (led changes for the jog calibration, all FX leds on for scratch mode on).

Revision history for this message
ironstorm (ironstorm-gmail) wrote :

The herc code will be removed from Mixxx before Christmas.

Revision history for this message
ironstorm (ironstorm-gmail) wrote :

Hercules specific code was removed with 1.6.1+Herc... Hercules devices are now usuable on Linux using MIDI (via the GPLv2 Hercules device driver), just like other controllers. :D

Changed in mixxx:
status: New → Won't Fix
Revision history for this message
Swiftb0y (swiftb0y) wrote :

Mixxx now uses GitHub for bug tracking. This bug has been migrated to:
https://github.com/mixxxdj/mixxx/issues/4985

lock status: Metadata changes locked and limited to project staff
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.