Hi Garth,

I have a reasonable start of midi mapping and scripting files for the Hercules Mk2 (attached).

They do the following:

* Use the versions of .jog_wheel and .wheelDecay you originally supplied, meaning we don't need to use hercjog any more.
* Turn all LEDs on then off on .init.
* Turn all LEDs off on .shutdown.
* Set the controls in Mixxx to reflect the setting on the device on .init.
* Set the channel1/2 headphone buttons on/off in the UI correctly based on headphone selection on the device (Deck A/Deck B/Mix/Split). * Turn on cue button LEDs on the device accordingly when track is cued/loaded. * Turn off cue button LEDs on the device accordingly when track is played/jog wheel moved.

A few questions:

In your RMX scripts, I can't quite see what functionality you're trying to achieve with HerculesRMX.cueButton & HerculesRMX.cuePlay. Could you let me know so I can see if it's something the Mk2 should be doing too.

Headphone selection - The device has the following settings: Deck A/Deck B/Mix/Split. For Deck A and Deck B I can use [ChannelN] pfl (in the mapping xml), but I'm not sure what to use for Mix/Split as these modes use both channels. At present I've just used [Master] pfl in the xml - although there is no corresponding Mixxx control, this does allow at least for the relevant script function to be run (turning both Headphone buttons on in the Mixxx UI for Mix/Split modes).

Loop/Cue/Fx LEDs and mode selector - Currently the Loop/Cue/Fx mode selector buttons play the track in reverse using <key>reverse</key>. I would personally find it more useful to turn these buttons back to (into) Loop/Cue/Fx mode selectors. This way, when no mode is selected (which would be default at startup), the 1/2/3 buttons can work as bass/mid/treble kills as they currently do, but then, selecting different modes for those buttons, they can be used for fx, cuing and looping (when it arrives in Mixxx). This would however mean ditching use use of the Fx/Cue/Loop LEDs as VU meters. I would personally forgo the VU metering for mode indicators (I don't find the metering particularly useful anyhow given that I can see it in the UI if necessary).

You have any take on that? Should I just get on and do it?

The attached are a pretty good starting point (for scripting the Mk2) anyhow I'd say. Perhaps you could consider these for committing so at least the stuff so far is there for other Mk2 users to use/work with?

Cheers,

Jim.

--
James Evans
w: www.jamesevans.net
e: [email protected]
t: +44 (0) 117 904 1486
m: +44 (0) 7900 985 936
<?xml version="1.0" encoding="utf-8"?>
<MixxxMIDIPreset schemaVersion="1" mixxxVersion="1.7.0">
  <info>
    <name>Hercules DJ Console Mk2</name>
    <author>Garth Dahlstrom</author>
    <description>This is a complete mapping for a Hercules DJ Console Mk2.</description>
  </info>
  <controller id="Hercules DJ Console Mk2 MIDI">
    <scriptfiles>
      <file filename="Hercules-DJ-Console-Mk2-scripts.js" functionprefix="HerculesMk2"/>
    </scriptfiles>
    <controls>
      <control>
        <group>[Master]</group>
        <key>crossfader</key>
        <status>0xB0</status>
        <midino>0x31</midino>
        <options/>
      </control>
      <control>
        <group>[Channel1]</group>
        <key>HerculesMk2.play</key>
        <status>0xB0</status>
        <midino>0x08</midino>
        <options>
          <Script-Binding/>
        </options>
      </control>
      <control>
        <group>[Channel1]</group> 
        <key>HerculesMk2.cue</key>
	<status>0xB0</status>
        <midino>0x09</midino>
        <options>
          <Script-Binding/>
        </options>
      </control>
      <control>
        <group>[Channel1]</group>
        <key>PrevTrack</key>
        <status>0xB0</status>
        <midino>0x0B</midino>
        <options>
          <Button/>
        </options>
      </control>
      <control>
        <group>[Channel1]</group>
        <key>NextTrack</key>
        <status>0xB0</status>
        <midino>0x0C</midino>
        <options>
          <Button/>
        </options>
      </control>
      <control>
        <group>[Channel1]</group>
        <key>volume</key>
        <status>0xB0</status>
        <midino>0x32</midino>
        <options/>
      </control>
      <control>
        <group>[Channel1]</group>
        <key>rate</key>
        <status>0xB0</status>
        <midino>0x34</midino>
        <options>
          <Diff/>
        </options>
      </control>
      <control>
        <group>[Channel1]</group>
        <key>HerculesMk2.jog_wheel</key>
        <status>0xB0</status>
        <midino>0x36</midino>
        <options>
          <Script-Binding/>
        </options>
      </control>
      <control> <!-- Headphones Deck A -->
        <group>[Channel1]</group>
        <key>HerculesMk2.pfl</key>
        <status>0xB0</status>
        <midino>0x21</midino>
        <options>
          <Script-Binding/>
        </options>
      </control>
      <control>
        <group>[Channel1]</group>
        <key>filterLow</key>
        <status>0xB0</status>
        <midino>0x2E</midino>
        <options/>
      </control>
      <control>
        <group>[Channel1]</group>
        <key>filterMid</key>
        <status>0xB0</status>
        <midino>0x2F</midino>
        <options/>
      </control>
      <control>
        <group>[Channel1]</group>
        <key>filterHigh</key>
        <status>0xB0</status>
        <midino>0x30</midino>
        <options/>
      </control>
      <control>
        <group>[Channel1]</group>
        <key>filterLowKill</key>
        <status>0xB0</status>
        <midino>0x0F</midino>
        <options>
          <Button/>
        </options>
      </control>
      <control>
        <group>[Channel1]</group>
        <key>filterMidKill</key>
        <status>0xB0</status>
        <midino>0x0E</midino>
        <options>
          <Button/>
        </options>
      </control>
      <control>
        <group>[Channel1]</group>
        <key>filterHighKill</key>
        <status>0xB0</status>
        <midino>0x0D</midino>
        <options>
          <Button/>
        </options>
      </control>
      <control>
        <group>[Channel1]</group>
        <key>rate_temp_up</key>
        <status>0xB0</status>
        <midino>0x13</midino>
        <options>
          <Button/>
        </options>
      </control>
      <control>
        <group>[Channel1]</group>
        <key>rate_temp_down</key>
        <status>0xB0</status>
        <midino>0x14</midino>
        <options>
          <Button/>
        </options>
      </control>
      <control>
        <group>[Channel1]</group>
        <key>beatsync</key>
        <status>0xB0</status>
        <midino>0x0A</midino>
        <options>
          <Button/>
        </options>
      </control>
      <control>
        <group>[Channel2]</group>
        <key>HerculesMk2.play</key>
        <status>0xB0</status>
        <midino>0x02</midino>
        <options>
          <Script-Binding/>
        </options>
      </control>
      <control>
        <group>[Channel2]</group>
        <key>HerculesMk2.cue</key>
        <status>0xB0</status>
        <midino>0x03</midino>
        <options>
          <Script-Binding/>
        </options>
      </control>
      <control>
        <group>[Channel2]</group>
        <key>PrevTrack</key>
        <status>0xB0</status>
        <midino>0x05</midino>
        <options>
          <Button/>
        </options>
      </control>
      <control>
        <group>[Channel2]</group>
        <key>NextTrack</key>
        <status>0xB0</status>
        <midino>0x06</midino>
        <options>
          <Button/>
        </options>
      </control>
      <control>
        <group>[Channel2]</group>
        <key>reverse</key>
        <status>0xB0</status>
        <midino>0x01</midino>
        <options>
          <Switch/>
        </options>
      </control>
      <control>
        <group>[Channel2]</group>
        <key>volume</key>
        <status>0xB0</status>
        <midino>0x033</midino>
        <options/>
      </control>
      <control>
        <group>[Channel2]</group>
        <key>rate</key>
        <status>0xB0</status>
        <midino>0x35</midino>
        <options>
          <Diff/>
        </options>
      </control>
      <control>
        <group>[Channel2]</group>
        <key>HerculesMk2.jog_wheel</key>
        <status>0xB0</status>
        <midino>0x37</midino>
        <options>
          <Script-Binding/>
        </options>
      </control>
      <control> <!-- Headphones Deck B -->
        <group>[Channel2]</group>
        <key>HerculesMk2.pfl</key>
        <status>0xB0</status>
        <midino>0x22</midino>
        <options>
          <Script-Binding/>
        </options>
      </control>
      <control>
        <group>[Channel2]</group>
        <key>filterLow</key>
        <status>0xB0</status>
        <midino>0x2B</midino>
        <options/>
      </control>
      <control>
        <group>[Channel2]</group>
        <key>filterMid</key>
        <status>0xB0</status>
        <midino>0x2C</midino>
        <options/>
      </control>
      <control>
        <group>[Channel2]</group>
        <key>filterHigh</key>
        <status>0xB0</status>
        <midino>0x2D</midino>
        <options/>
      </control>
      <control>
        <group>[Channel2]</group>
        <key>filterLowKill</key>
        <status>0xB0</status>
        <midino>0x10</midino>
        <options>
          <Button/>
        </options>
      </control>
      <control>
        <group>[Channel2]</group>
        <key>filterMidKill</key>
        <status>0xB0</status>
        <midino>0x11</midino>
        <options>
          <Button/>
        </options>
      </control>
      <control>
        <group>[Channel2]</group>
        <key>filterHighKill</key>
        <status>0xB0</status>
        <midino>0x12</midino>
        <options>
          <Button/>
        </options>
      </control>
      <control>
        <group>[Channel2]</group>
        <key>rate_temp_up</key>
        <status>0xB0</status>
        <midino>0x17</midino>
        <options>
          <Button/>
        </options>
      </control>
      <control>
        <group>[Channel2]</group>
        <key>rate_temp_down</key>
        <status>0xB0</status>
        <midino>0x18</midino>
        <options>
          <Button/>
        </options>
      </control>
      <control>
        <group>[Channel2]</group>
        <key>beatsync</key>
        <status>0xB0</status>
        <midino>0x04</midino>
        <options>
          <Button/>
        </options>
      </control>
      <control>
        <group>[Channel1]</group>
        <key>reverse</key>
        <status>0xB0</status>
        <midino>0x07</midino>
        <options>
          <Switch/>
        </options>
      </control>
      <control>
        <group>[Playlist]</group>
        <key>SelectPrevTrack</key>
        <status>0xB0</status>
        <midino>0x16</midino>
        <options/>
      </control>
      <control>
        <group>[Playlist]</group>
        <key>SelectNextTrack</key>
        <status>0xB0</status>
        <midino>0x1A</midino>
        <options/>
      </control>
      <control>
        <group>[Channel1]</group>
        <key>HerculesMk2.loadSelectedTrack</key>
        <status>0xB0</status>
        <midino>0x1B</midino>
        <options>
	  <Script-Binding/>
        </options>
      </control>
      <control>
        <group>[Channel2]</group>
        <key>HerculesMk2.loadSelectedTrack</key>
        <status>0xB0</status>
        <midino>0x1C</midino>
        <options>
	  <Script-Binding/>
        </options>
      </control>
      <control> <!-- Headphones Mix -->
        <group>[Master]</group>
        <key>HerculesMk2.pfl</key>
        <status>0xB0</status>
        <midino>0x24</midino>
        <options>
          <Script-Binding/>
        </options>
      </control>
      <control> <!-- Headphones Split -->
        <group>[Master]</group>
        <key>HerculesMk2.pfl</key>
        <status>0xB0</status>
        <midino>0x23</midino>
        <options>
          <Script-Binding/>
        </options>
      </control>
    </controls>

    <outputs>
      <output>
        <group>[Channel1]</group>
        <key>play</key>
        <status>0xB0</status>
        <midino>0x08</midino>
        <minimum>0.5</minimum>
      </output>
      <output>
        <group>[Channel2]</group>
        <key>play</key>
        <status>0xB0</status>
        <midino>0x02</midino>
        <minimum>0.5</minimum>
      </output>
      <output>
        <group>[Channel1]</group>
        <key>playposition</key>
        <status>0xB0</status>
        <midino>0x00</midino>
        <minimum>0.9</minimum>
        <maximum>0.99</maximum>
      </output>
      <output>
        <group>[Channel2]</group>
        <key>playposition</key>
        <status>0xB0</status>
        <midino>0x05</midino>
        <minimum>0.9</minimum>
        <maximum>0.99</maximum>
      </output>
      <output>
        <group>[Channel1]</group>
        <key>VuMeter</key>
        <status>0xB0</status>
        <midino>0x0A</midino>
        <minimum>0.4</minimum>
        <maximum>1</maximum>
      </output>
      <output>
        <group>[Channel1]</group>
        <key>VuMeter</key>
        <status>0xB0</status>
        <midino>0x16</midino>
        <minimum>0.5</minimum>
        <maximum>1</maximum>
      </output>
      <output>
        <group>[Channel1]</group>
        <key>VuMeter</key>
        <status>0xB0</status>
        <midino>0x0D</midino>
        <minimum>0.6</minimum>
      </output>
      <output>
        <group>[Channel1]</group>
        <key>VuMeter</key>
        <status>0xB0</status>
        <midino>0x0E</midino>
        <minimum>0.7</minimum>
      </output>
      <output>
        <group>[Channel1]</group>
        <key>VuMeter</key>
        <status>0xB0</status>
        <midino>0x0F</midino>
        <minimum>0.8</minimum>
      </output>
      <output>
        <group>[Channel2]</group>
        <key>VuMeter</key>
        <status>0xB0</status>
        <midino>0x04</midino>
        <minimum>0.4</minimum>
      </output>
      <output>
        <group>[Channel2]</group>
        <key>VuMeter</key>
        <status>0xB0</status>
        <midino>0x1A</midino>
        <minimum>0.5</minimum>
      </output>
      <output>
        <group>[Channel2]</group>
        <key>VuMeter</key>
        <status>0xB0</status>
        <midino>0x12</midino>
        <minimum>0.6</minimum>
      </output>
      <output>
        <group>[Channel2]</group>
        <key>VuMeter</key>
        <status>0xB0</status>
        <midino>0x11</midino>
        <minimum>0.7</minimum>
      </output>
      <output>
        <group>[Channel2]</group>
        <key>VuMeter</key>
        <status>0xB0</status>
        <midino>0x10</midino>
        <minimum>0.8</minimum>
      </output>
    </outputs>
  </controller>
</MixxxMIDIPreset>

Attachment: Hercules-DJ-Console-Mk2-scripts.js
Description: application/javascript

------------------------------------------------------------------------------
Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
is a gathering of tech-side developers & brand creativity professionals. Meet
the minds behind Google Creative Lab, Visual Complexity, Processing, & 
iPhoneDevCamp asthey present alongside digital heavyweights like Barbarian
Group, R/GA, & Big Spaceship. http://www.creativitycat.com 
_______________________________________________
Mixxx-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mixxx-devel

Reply via email to