summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Midi_Interface/rhmixxx_midi_controller_MIDI_1-scripts.js942
-rw-r--r--Midi_Interface/rhmixxx_midi_controller_MIDI_1.midi.xml10
2 files changed, 80 insertions, 872 deletions
diff --git a/Midi_Interface/rhmixxx_midi_controller_MIDI_1-scripts.js b/Midi_Interface/rhmixxx_midi_controller_MIDI_1-scripts.js
index 726eef3..91ef0f7 100644
--- a/Midi_Interface/rhmixxx_midi_controller_MIDI_1-scripts.js
+++ b/Midi_Interface/rhmixxx_midi_controller_MIDI_1-scripts.js
@@ -1,880 +1,86 @@
-/**
- * Hercules DJ Console RMX controller script v1.9.0
- * Copyright (C) 2010 Anders Gunnarsson
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- **/
-
-//TODO: Cleanup, create objects from init.
-//Remove led timers when alsa midi is working properly.
-HerculesRMX = new Controller();
-HerculesRMX.shiftMode = false;
-HerculesRMX.scratchMode = false;
-HerculesRMX.jogPlaylistScrollMode = false;
-
-// The first-generation Hercules RMX (firmware version 1.0.6.31) has some
-// quirks. One of which is that the pitch faders are centered at 0x40 instead of
-// 0x3F. If you have a first-generation RMX, set this flag to true to fix things
-// like the pitch control being off by -0.16%. See Bug #863683
-// (https://bugs.launchpad.net/mixxx/+bug/863683).
-HerculesRMX.firstGenerationFirmware = false;
-
-HerculesRMX.Button = Button;
-
-HerculesRMX.Button.prototype.setLed = function(ledState, blink) {
- if(ledState == LedState.on) {
- midi.sendShortMsg(0xB0,this.controlId,LedState.on);
- } else {
- midi.sendShortMsg(0xB0,this.controlId,LedState.off);
- }
- if(blink) {
- engine.beginTimer(20, "midi.sendShortMsg(0xB0," + (this.controlId + 0x30) + ", " + LedState.on + ")", true);
- } else {
- engine.beginTimer(20, "midi.sendShortMsg(0xB0," + (this.controlId + 0x30) + ", " + LedState.off + ")", true);
- }
-};
-
-HerculesRMX.shiftHandler = function(value) {
- if(value == ButtonState.pressed) {
- this.shiftMode = true;
- if(HerculesRMX.scratchMode) {
- HerculesRMX.scratchMode = false;
- HerculesRMX.Buttons.Scratch.setLed(LedState.off);
- } else {
- HerculesRMX.scratchMode = true;
- HerculesRMX.Buttons.Scratch.setLed(LedState.on);
- }
- } else {
- this.shiftMode = false;
- }
-};
-
-HerculesRMX.upHandler = function(value) {
- this.jogPlaylistScrollMode = this.Buttons.Up.state + this.Buttons.Down.state > 0;
- if(value == ButtonState.pressed) {
- engine.setValue("[Playlist]", "SelectPrevTrack", 1);
- }
-};
-
-HerculesRMX.downHandler = function(value) {
- this.jogPlaylistScrollMode = this.Buttons.Up.state + this.Buttons.Down.state > 0;
- if(value == ButtonState.pressed) {
- engine.setValue("[Playlist]", "SelectNextTrack", 1);
- }
-};
-
-HerculesRMX.leftHandler = function(value) {
- if(value == ButtonState.pressed) {
- engine.setValue("[Playlist]", "SelectPrevPlaylist", 1);
- }
-};
-
-HerculesRMX.rightHandler = function(value) {
- if(value == ButtonState.pressed) {
- engine.setValue("[Playlist]", "SelectNextPlaylist", 1);
- }
-};
-
-HerculesRMX.addButton("Scratch", new HerculesRMX.Button(0x29), "shiftHandler");
-HerculesRMX.addButton("Up", new HerculesRMX.Button(0x2A), "upHandler");
-HerculesRMX.addButton("Down", new HerculesRMX.Button(0x2B), "downHandler");
-HerculesRMX.addButton("Left", new HerculesRMX.Button(0x2C), "leftHandler");
-HerculesRMX.addButton("Right", new HerculesRMX.Button(0x2D), "rightHandler");
-
-HerculesRMX.Controls = {
- "Balance" : new Control("balance", false),
- "Volume" : new Control("volume", false),
- "CrossFader" : new Control("crossfader", false),
- "HeadPhoneMix" : new Control("headMix", false),
- "FlangerDepth" : new Control("lfoDepth", false),
- "FlangerDelay" : new Control("lfoDelay", false),
- "FlangerPeriod" : new Control("lfoPeriod", false)
-};
-HerculesRMX.Controls.Volume.minOutput = 0.0;
-HerculesRMX.Controls.Volume.midOutput = 1.0;
-HerculesRMX.Controls.Volume.maxOutput = 5.0;
-HerculesRMX.Controls.FlangerDepth.minOutput = 0.0;
-HerculesRMX.Controls.FlangerDepth.midOutput = 0.5;
-HerculesRMX.Controls.FlangerDepth.maxOutput = 1.0;
-HerculesRMX.Controls.FlangerDelay.minOutput = 50;
-HerculesRMX.Controls.FlangerDelay.midOutput = 5000;
-HerculesRMX.Controls.FlangerDelay.maxOutput = 10000;
-HerculesRMX.Controls.FlangerPeriod.minOutput = 50000;
-HerculesRMX.Controls.FlangerPeriod.midOutput = 1000000;
-HerculesRMX.Controls.FlangerPeriod.maxOutput = 2000000;
-
-HerculesRMX.balanceHandler = function(value) {
- this.Controls.Balance.setValue(this.group, value);
-};
-
-HerculesRMX.volumeHandler = function(value) {
- this.Controls.Volume.setValue(this.group, value);
-};
-
-HerculesRMX.crossFaderHandler = function(value) {
- this.Controls.CrossFader.setValue(this.group, value);
-};
-
-HerculesRMX.headPhoneMixHandler = function(value) {
- this.Controls.HeadPhoneMix.setValue(this.group, value);
-};
-
-/**
- * Deck
- * @param deckNumber
- * @param group
- */
-HerculesRMX.Deck = Deck;
-HerculesRMX.shiftMode = false;
-HerculesRMX.scratching = false;
-HerculesRMX.scratchTimer = -1;
-HerculesRMX.cuePlaying = false;
-HerculesRMX.playing = false;
-
-HerculesRMX.Deck.prototype.jogMove = function(jogValue) {
- if(HerculesRMX.jogPlaylistScrollMode) {
- if (jogValue > 0) {
- engine.setValue("[Playlist]","SelectNextTrack", 1);
- } else if (jogValue < 0) {
- engine.setValue("[Playlist]","SelectPrevTrack", 1);
- }
- } else if(HerculesRMX.scratchMode) {
- if(!this.scratching) {
- this.scratching = true;
- engine.scratchEnable(this.deckNumber, 128, 45, 1.0/8, (1.0/8)/32);
- } else {
- engine.stopTimer(this.scratchTimer);
- }
- engine.scratchTick(this.deckNumber, jogValue);
- this.scratchTimer = engine.beginTimer(20, "HerculesRMX.GetDeck('" + this.group + "').stopScratching()", true);
- } else {
- engine.setValue(this.group,"jog", jogValue);
- }
-};
-
-HerculesRMX.Deck.prototype.stopScratching = function() {
- this.scratching = false;
- engine.scratchDisable(this.deckNumber);
- this.scratchTimer = -1;
-};
-
-HerculesRMX.Deck.prototype.pitchResetHandler = function(value) {
- if(value == ButtonState.pressed) {
- engine.setValue(this.group,"rate",0);
- this.Buttons.PitchReset.setLed(LedState.on);
- }
-};
-
-HerculesRMX.Deck.prototype.syncHandler = function(value) {
- if(value == ButtonState.pressed) {
- if(this.shiftMode) {
- engine.setValue(this.group,"bpm_tap",1);
- } else {
- engine.setValue(this.group,"beatsync",1);
- this.Buttons.Sync.setLed(LedState.on);
- }
- } else if(value == ButtonState.released) {
- if(!this.shiftMode) {
- engine.setValue(this.group,"beatsync",0);
- }
- }
-};
-
-HerculesRMX.Deck.prototype.keypad1Handler = function(value) {
- if(value == ButtonState.pressed) {
- if(HerculesRMX.shiftMode) {
- if(engine.getValue(this.group,"flanger") == 0) {
- engine.setValue(this.group,"flanger",1);
- } else {
- engine.setValue(this.group,"flanger",0);
- }
- } else if(this.shiftMode) {
- engine.setValue(this.group,"hotcue_1_clear", 1);
- } else {
- engine.setValue(this.group, "hotcue_1_activate", 1);
- }
- }
- else { // On button release
- if(!HerculesRMX.shiftMode) {
- if(this.shiftMode) {
- engine.setValue(this.group,"hotcue_1_clear", 0);
- } else {
- engine.setValue(this.group,"hotcue_1_activate", 0);
- }
- }
-}
-};
-
-HerculesRMX.Deck.prototype.keypad2Handler = function(value) {
- if(value == ButtonState.pressed) {
- if(this.shiftMode) {
- engine.setValue(this.group,"hotcue_2_clear", 1);
- } else {
- engine.setValue(this.group,"hotcue_2_activate", 1);
- }
- }
-
- else { // On button release
- if(!HerculesRMX.shiftMode) {
- if(this.shiftMode) {
- engine.setValue(this.group,"hotcue_2_clear", 0);
- } else {
- engine.setValue(this.group,"hotcue_2_activate", 0);
- }
- }
+////////////////////////////////////////
+// Numark V7 control script //
+// CopyLeft 2012, Mike Bucceroni //
+// ^that means do what ever you want^ //
+// made for Mixxx 1.11.x //
+////////////////////////////////////////
+
+function RHMixxx() {}
+
+/////////////////////////////////
+// //
+// Customization Variables //
+// //
+/////////////////////////////////
+
+
+//////////////////////////
+// //
+// Global Variables //
+// //
+//////////////////////////
+
+//RHMixxx.Deck = true; // true = Deck A, false = Deck B
+
+
+
+//////////////////////////
+// //
+// Initialization //
+// & //
+// Shutdown //
+// //
+//////////////////////////
+
+RHMixxx.init = function () {
+ //flash LED's
+ //RHMixxx.FlashAllLED();
+ //Connect Control
+ engine.connectControl("[Channel1]", "play", "RHMixxx.Channel1_playing");
}
-};
-HerculesRMX.Deck.prototype.keypad3Handler = function(value) {
- if(value == ButtonState.pressed) {
- if(this.shiftMode) {
- engine.setValue(this.group,"hotcue_3_clear", 1);
- } else {
- engine.setValue(this.group,"hotcue_3_activate", 1);
- }
- }
- else { // On button release
- if(!HerculesRMX.shiftMode) {
- if(this.shiftMode) {
- engine.setValue(this.group,"hotcue_3_clear", 0);
- } else {
- engine.setValue(this.group,"hotcue_3_activate", 0);
- }
- }
+RHMixxx.shutdown = function () {
+ RHMixxx.OffAllLED();
}
-};
-
-HerculesRMX.Deck.prototype.keypad4Handler = function(value) {
- if(value == ButtonState.pressed) {
- if(HerculesRMX.shiftMode) {
- engine.setValue(this.group,"reverse",1);
- } else if(this.shiftMode) {
- engine.setValue(this.group,"loop_in",1);
- }
- } else {
- engine.setValue(this.group,"reverse",0);
- }
-};
-HerculesRMX.Deck.prototype.keypad5Handler = function(value) {
- if(this.shiftMode) {
- if(value == ButtonState.pressed) {
- engine.setValue(this.group,"loop_out",1);
- }
- }
-};
-
-HerculesRMX.Deck.prototype.keypad6Handler = function(value) {
- if(value == ButtonState.pressed) {
- if(this.shiftMode) {
- var loopIn = engine.getValue(this.group, "loop_start_position");
- var loopOut = engine.getValue(this.group, "loop_end_position");
- var loopLength = loopOut - loopIn;
- if (loopIn != -1 && loopOut != -1 && loopLength >= 2) {
- engine.setValue(this.group,"loop_end_position",loopIn + loopLength / 2);
- }
- } else {
- engine.setValue(this.group,"reloop_exit",1);
- }
- }
-};
-
-HerculesRMX.Deck.prototype.previousHandler = function(value) {
- if(this.Buttons.Keypad1.state == ButtonState.pressed) {
- //Move hotcue 1 backwards
- var hotcue = engine.getValue(this.group, "hotcue_1_position");
- var newPosition = hotcue - 400;
- if(newPosition > 0) {
- engine.setValue(this.group, "hotcue_1_position", newPosition);
- }
- } else if(this.Buttons.Keypad2.state == ButtonState.pressed) {
- //Move hotcue 2 backwards
- var hotcue = engine.getValue(this.group, "hotcue_2_position");
- var newPosition = hotcue - 400;
- if(newPosition > 0) {
- engine.setValue(this.group, "hotcue_2_position", newPosition);
- }
- } else if(this.Buttons.Keypad3.state == ButtonState.pressed) {
- //Move hotcue 3 backwards
- var hotcue = engine.getValue(this.group, "hotcue_3_position");
- var newPosition = hotcue - 400;
- if(newPosition > 0) {
- engine.setValue(this.group, "hotcue_3_position", newPosition);
- }
- } else if(this.Buttons.Keypad4.state == ButtonState.pressed) {
- //Move loop-in backwards
- var loopIn = engine.getValue(this.group, "loop_start_position");
- var newPosition = loopIn - 400;
- if(newPosition > 0) {
- engine.setValue(this.group, "loop_start_position", newPosition);
- }
- } else if(this.Buttons.Keypad5.state == ButtonState.pressed) {
- //Move loop-out backwards
- var loopIn = engine.getValue(this.group, "loop_start_position");
- var loopOut = engine.getValue(this.group, "loop_end_position");
- var newPosition = loopOut - 400;
- if(newPosition > loopIn) {
- engine.setValue(this.group, "loop_end_position", newPosition);
- }
- } else {
- engine.setValue(this.group,"back",value);
- }
-};
-
-HerculesRMX.Deck.prototype.nextHandler = function(value) {
- //TODO: Fix movement of hotcues & loops out of track bounds
- if(this.Buttons.Keypad1.state == ButtonState.pressed) {
- //Move hotcue 1 forwards
- var hotcue = engine.getValue(this.group, "hotcue_1_position");
- var newPosition = hotcue + 400;
- if(hotcue != -1) {
- engine.setValue(this.group, "hotcue_1_position", newPosition);
+///////////////////////////
+// //
+// Functions //
+// //
+// //
+///////////////////////////
+
+RHMixxx.Channel1_playing = function (channel, control, value, status, group) {
+
+ {
+ var currentlyPlaying = engine.getValue("[Channel1]","play");
+ if (currentlyPlaying == 0){
+ //engine.setValue("[Channel1]","play",1);
+ midi.sendShortMsg(0x80,0x09,0x00);
+ }
+ else {
+ if (currentlyPlaying == 1){
+ //engine.setValue("[Channel1]","play",0);
+ midi.sendShortMsg(0x90,0x09,0x00);
}
- } else if(this.Buttons.Keypad2.state == ButtonState.pressed) {
- //Move hotcue 2 forwards
- var hotcue = engine.getValue(this.group, "hotcue_2_position");
- var newPosition = hotcue + 400;
- if(hotcue != -1) {
- engine.setValue(this.group, "hotcue_2_position", newPosition);
- }
- } else if(this.Buttons.Keypad3.state == ButtonState.pressed) {
- //Move hotcue 3 forwards
- var hotcue = engine.getValue(this.group, "hotcue_3_position");
- var newPosition = hotcue + 400;
- if(hotcue != -1 > 0) {
- engine.setValue(this.group, "hotcue_3_position", newPosition);
- }
- } else if(this.Buttons.Keypad4.state == ButtonState.pressed) {
- //Move loop-in forwards
- var loopIn = engine.getValue(this.group, "loop_start_position");
- var loopOut = engine.getValue(this.group, "loop_end_position");
- var newPosition = loopIn + 400;
- if(newPosition < loopOut) {
- engine.setValue(this.group, "loop_start_position", newPosition);
- }
- } else if(this.Buttons.Keypad5.state == ButtonState.pressed) {
- //Move loop-out forwards
- var loopOut = engine.getValue(this.group, "loop_end_position");
- var newPosition = loopOut + 400;
- engine.setValue(this.group, "loop_end_position", newPosition);
- } else {
- engine.setValue(this.group,"fwd",value);
- }
-};
-
-/*HerculesRMX.Deck.prototype.playPauseHandler = function(value) {
-};
-
-HerculesRMX.Deck.prototype.cueHandler = function(value) {
- if(value == ButtonState.pressed) {
- //var position = engine.getValue(this.group,"playposition") * engine.getValue(this.group, "duration") * engine.getValue(this.group, "duration");
- //var atCuePoint = engine.getValue(this.group,"cue_point") == position;
- //print("at cue: " + atCuePoint + ", playposition: " + position);
- engine.setValue(this.group,"cue_default",1);
- this.playing = false;
- this.Buttons.PlayPause.setLed(LedState.off);
- //if(atCuePoint) {
- this.cuePlaying = true;
- this.Buttons.Cue.setLed(LedState.on);
- //}
- } else {
- engine.setValue(this.group,"cue_default",0);
- if(this.cuePlaying) {
- this.cuePlaying = false;
- }
- this.Buttons.Cue.setLed(LedState.off);
- }
-};*/
-
-HerculesRMX.Deck.prototype.killHighHandler = function(value) {
- if(value == ButtonState.pressed) {
- var filterStatus = engine.getValue(this.group, "filterHighKill");
- if(filterStatus) {
- engine.setValue(this.group, "filterHighKill", 0);
- } else {
- engine.setValue(this.group, "filterHighKill", 1);
- }
- }
-};
-
-HerculesRMX.Deck.prototype.killMidHandler = function(value) {
- if(value == ButtonState.pressed) {
- var filterStatus = engine.getValue(this.group, "filterMidKill");
- if(filterStatus) {
- engine.setValue(this.group, "filterMidKill", 0);
- } else {
- engine.setValue(this.group, "filterMidKill", 1);
- }
- }
-};
-
-HerculesRMX.Deck.prototype.killLowHandler = function(value) {
- if(value == ButtonState.pressed) {
- var filterStatus = engine.getValue(this.group, "filterLowKill");
- if(filterStatus) {
- engine.setValue(this.group, "filterLowKill", 0);
- } else {
- engine.setValue(this.group, "filterLowKill", 1);
- }
- }
-};
-
-HerculesRMX.Deck.prototype.loadHandler = function(value) {
- if(value == ButtonState.pressed) {
- engine.setValue(this.group, "LoadSelectedTrack", 1);
- }
-};
-
-HerculesRMX.Deck.prototype.cueSelectHandler = function(value) {
- if(value == ButtonState.pressed) {
- var filterStatus = engine.getValue(this.group, "pfl");
- if(filterStatus) {
- engine.setValue(this.group, "pfl", 0);
- this.Buttons.CueSelect.setLed(LedState.on);
- } else {
- engine.setValue(this.group, "pfl", 1);
- this.Buttons.CueSelect.setLed(LedState.off);
- }
- }
-};
-
-HerculesRMX.Deck.prototype.gainHandler = function(value) {
- this.Controls.Gain.setValue(this.group, value);
-};
-
-HerculesRMX.Deck.prototype.trebleHandler = function(value) {
- if(HerculesRMX.shiftMode) {
- //Flanger
- HerculesRMX.Controls.FlangerDepth.setValue("[Flanger]", value);
- } else if(this.shiftMode) {
- //Soft set
- this.Controls.Treble.softMode = true;
- this.Controls.Treble.setValue(this.group, value);
- this.Controls.Treble.softMode = false;
- } else {
- this.Controls.Treble.setValue(this.group, value);
- }
-};
-
-HerculesRMX.Deck.prototype.mediumHandler = function(value) {
- if(HerculesRMX.shiftMode) {
- //Flanger
- HerculesRMX.Controls.FlangerDelay.setValue("[Flanger]", value);
- } else if(this.shiftMode) {
- //Soft set
- this.Controls.Medium.softMode = true;
- this.Controls.Medium.setValue(this.group, value);
- this.Controls.Medium.softMode = false;
- } else {
- this.Controls.Medium.setValue(this.group, value);
- }
-};
-
-HerculesRMX.Deck.prototype.bassHandler = function(value) {
- if(HerculesRMX.shiftMode) {
- //Flanger
- HerculesRMX.Controls.FlangerPeriod.setValue("[Flanger]", value);
- } else if(this.shiftMode) {
- //Soft set
- this.Controls.Bass.softMode = true;
- this.Controls.Bass.setValue(this.group, value);
- this.Controls.Bass.softMode = false;
- } else {
- this.Controls.Bass.setValue(this.group, value);
- }
-};
-
-HerculesRMX.Deck.prototype.volHandler = function(value) {
- this.Controls.Vol.setValue(this.group, value);
-};
-
-HerculesRMX.Deck.prototype.pitchHandler = function(value) {
- this.Controls.Pitch.setValue(this.group, value);
-};
-
-HerculesRMX.Deck.prototype.shiftHandler = function(value) {
- if(value == ButtonState.pressed) {
- this.shiftMode = true;
- } else {
- this.shiftMode = false;
- }
-};
-
-HerculesRMX.Deck.prototype.stopHandler = function(value) {
- if(value == ButtonState.pressed) {
- engine.setValue(this.group, "cue_default", 0);
- engine.setValue(this.group, "play", 0);
- engine.setValue(this.group, "start", 0);
- }
-};
-
-HerculesRMX.Decks = {"Left":new HerculesRMX.Deck(1,"[Channel1]"), "Right":new HerculesRMX.Deck(2,"[Channel2]")};
-HerculesRMX.GroupToDeck = {"[Channel1]":"Left", "[Channel2]":"Right"};
-
-HerculesRMX.GetDeck = function(group) {
- try {
- return HerculesRMX.Decks[HerculesRMX.GroupToDeck[group]];
- } catch(ex) {
- return null;
- }
-};
-
-HerculesRMX.Decks.Left.addButton("Keypad1", new HerculesRMX.Button(0x01), "keypad1Handler");
-HerculesRMX.Decks.Left.addButton("Keypad2", new HerculesRMX.Button(0x02), "keypad2Handler");
-HerculesRMX.Decks.Left.addButton("Keypad3", new HerculesRMX.Button(0x03), "keypad3Handler");
-HerculesRMX.Decks.Left.addButton("Keypad4", new HerculesRMX.Button(0x04), "keypad4Handler");
-HerculesRMX.Decks.Left.addButton("Keypad5", new HerculesRMX.Button(0x05), "keypad5Handler");
-HerculesRMX.Decks.Left.addButton("Keypad6", new HerculesRMX.Button(0x06), "keypad6Handler");
-HerculesRMX.Decks.Left.addButton("Sync", new HerculesRMX.Button(0x07, 0x37), "syncHandler");
-HerculesRMX.Decks.Left.addButton("BeatLock", new HerculesRMX.Button(0x08, 0x38), null);
-HerculesRMX.Decks.Left.addButton("Previous", new HerculesRMX.Button(0x09), "previousHandler");
-HerculesRMX.Decks.Left.addButton("Next", new HerculesRMX.Button(0x0A), "nextHandler");
-HerculesRMX.Decks.Left.addButton("PlayPause", new HerculesRMX.Button(0x0B, 0x3B), "playPauseHandler");
-HerculesRMX.Decks.Left.addButton("Cue", new HerculesRMX.Button(0x0C, 0x3C), "cueHandler");
-HerculesRMX.Decks.Left.addButton("Shift", new HerculesRMX.Button(0x0D), "shiftHandler");
-HerculesRMX.Decks.Left.addButton("KillHigh", new HerculesRMX.Button(0x0E), "killHighHandler");
-HerculesRMX.Decks.Left.addButton("KillMid", new HerculesRMX.Button(0x0F), "killMidHandler");
-HerculesRMX.Decks.Left.addButton("KillLow", new HerculesRMX.Button(0x10), "killLowHandler");
-HerculesRMX.Decks.Left.addButton("PitchReset", new HerculesRMX.Button(0x11, 0x41), "pitchResetHandler");
-HerculesRMX.Decks.Left.addButton("Load", new HerculesRMX.Button(0x12), "loadHandler");
-HerculesRMX.Decks.Left.addButton("Source", new HerculesRMX.Button(0x13, 0x43), null);
-HerculesRMX.Decks.Left.addButton("CueSelect", new HerculesRMX.Button(0x14, 0x44), "cueSelectHandler");
-HerculesRMX.Decks.Left.addButton("Stop", new HerculesRMX.Button(0x0D), "stopHandler");
-
-HerculesRMX.Decks.Left.Controls = {
- "Gain" : new Control("pregain", false),
- "Treble" : new Control("filterHigh", false),
- "Medium" : new Control("filterMid", false),
- "Bass" : new Control("filterLow", false),
- "Vol" : new Control("volume", false),
- "Pitch" : new Control("rate", false)
-};
-HerculesRMX.Decks.Left.Controls.Gain.minOutput = 0.0;
-HerculesRMX.Decks.Left.Controls.Gain.midOutput = 1.0;
-HerculesRMX.Decks.Left.Controls.Gain.maxOutput = 4.0;
-HerculesRMX.Decks.Left.Controls.Treble.minOutput = 0.0;
-HerculesRMX.Decks.Left.Controls.Treble.midOutput = 1.0;
-HerculesRMX.Decks.Left.Controls.Treble.maxOutput = 4.0;
-HerculesRMX.Decks.Left.Controls.Medium.minOutput = 0.0;
-HerculesRMX.Decks.Left.Controls.Medium.midOutput = 1.0;
-HerculesRMX.Decks.Left.Controls.Medium.maxOutput = 4.0;
-HerculesRMX.Decks.Left.Controls.Bass.minOutput = 0.0;
-HerculesRMX.Decks.Left.Controls.Bass.midOutput = 1.0;
-HerculesRMX.Decks.Left.Controls.Bass.maxOutput = 4.0;
-HerculesRMX.Decks.Left.Controls.Vol.minOutput = 0.0;
-HerculesRMX.Decks.Left.Controls.Vol.midOutput = 0.4;
-HerculesRMX.Decks.Left.Controls.Vol.maxOutput = 1.0;
-HerculesRMX.Decks.Left.Controls.Pitch.midInput = (HerculesRMX.firstGenerationFirmware ? 0x40 : 0x3F);
-
-HerculesRMX.Decks.Right.addButton("Keypad1", new HerculesRMX.Button(0x19), "keypad1Handler");
-HerculesRMX.Decks.Right.addButton("Keypad2", new HerculesRMX.Button(0x1A), "keypad2Handler");
-HerculesRMX.Decks.Right.addButton("Keypad3", new HerculesRMX.Button(0x1B), "keypad3Handler");
-HerculesRMX.Decks.Right.addButton("Keypad4", new HerculesRMX.Button(0x1C), "keypad4Handler");
-HerculesRMX.Decks.Right.addButton("Keypad5", new HerculesRMX.Button(0x1D), "keypad5Handler");
-HerculesRMX.Decks.Right.addButton("Keypad6", new HerculesRMX.Button(0x1E), "keypad6Handler");
-HerculesRMX.Decks.Right.addButton("Sync", new HerculesRMX.Button(0x1F, 0x5F), "syncHandler");
-HerculesRMX.Decks.Right.addButton("BeatLock", new HerculesRMX.Button(0x15, 0x60), null);
-HerculesRMX.Decks.Right.addButton("Previous", new HerculesRMX.Button(0x21), "previousHandler");
-HerculesRMX.Decks.Right.addButton("Next", new HerculesRMX.Button(0x22), "nextHandler");
-HerculesRMX.Decks.Right.addButton("PlayPause", new HerculesRMX.Button(0x23, 0x53), "playPauseHandler");
-HerculesRMX.Decks.Right.addButton("Cue", new HerculesRMX.Button(0x24, 0x54), "cueHandler");
-HerculesRMX.Decks.Right.addButton("Shift", new HerculesRMX.Button(0x25), "shiftHandler");
-HerculesRMX.Decks.Right.addButton("KillHigh", new HerculesRMX.Button(0x26), "killHighHandler");
-HerculesRMX.Decks.Right.addButton("KillMid", new HerculesRMX.Button(0x27), "killMidHandler");
-HerculesRMX.Decks.Right.addButton("KillLow", new HerculesRMX.Button(0x28), "killLowHandler");
-HerculesRMX.Decks.Right.addButton("PitchReset", new HerculesRMX.Button(0x20, 0x55), "pitchResetHandler");
-HerculesRMX.Decks.Right.addButton("Load", new HerculesRMX.Button(0x16), "loadHandler");
-HerculesRMX.Decks.Right.addButton("Source", new HerculesRMX.Button(0x17, 0x57), null);
-HerculesRMX.Decks.Right.addButton("CueSelect", new HerculesRMX.Button(0x18, 0x58), "cueSelectHandler");
-HerculesRMX.Decks.Right.addButton("Stop", new HerculesRMX.Button(0x25), "stopHandler");
-
-HerculesRMX.Decks.Right.Controls = {
- "Gain" : new Control("pregain", false),
- "Treble" : new Control("filterHigh", false),
- "Medium" : new Control("filterMid", false),
- "Bass" : new Control("filterLow", false),
- "Vol" : new Control("volume", false),
- "Pitch" : new Control("rate", false)
-};
-HerculesRMX.Decks.Right.Controls.Gain.minOutput = 0.0;
-HerculesRMX.Decks.Right.Controls.Gain.midOutput = 1.0;
-HerculesRMX.Decks.Right.Controls.Gain.maxOutput = 4.0;
-HerculesRMX.Decks.Right.Controls.Treble.minOutput = 0.0;
-HerculesRMX.Decks.Right.Controls.Treble.midOutput = 1.0;
-HerculesRMX.Decks.Right.Controls.Treble.maxOutput = 4.0;
-HerculesRMX.Decks.Right.Controls.Medium.minOutput = 0.0;
-HerculesRMX.Decks.Right.Controls.Medium.midOutput = 1.0;
-HerculesRMX.Decks.Right.Controls.Medium.maxOutput = 4.0;
-HerculesRMX.Decks.Right.Controls.Bass.minOutput = 0.0;
-HerculesRMX.Decks.Right.Controls.Bass.midOutput = 1.0;
-HerculesRMX.Decks.Right.Controls.Bass.maxOutput = 4.0;
-HerculesRMX.Decks.Right.Controls.Vol.minOutput = 0.0;
-HerculesRMX.Decks.Right.Controls.Vol.midOutput = 0.4;
-HerculesRMX.Decks.Right.Controls.Vol.maxOutput = 1.0;
-HerculesRMX.Decks.Right.Controls.Pitch.midInput = (HerculesRMX.firstGenerationFirmware ? 0x40 : 0x3F);
-
-//Mapping functions
-HerculesRMX.volume = function(channel, control, value, status, group) {
- HerculesRMX.volumeHandler(value);
-};
-
-HerculesRMX.balance = function(channel, control, value, status, group) {
- HerculesRMX.balanceHandler(value);
-};
-
-HerculesRMX.crossFader = function(channel, control, value, status, group) {
- HerculesRMX.crossFaderHandler(value);
-};
-
-HerculesRMX.headPhoneMix = function(channel, control, value, status, group) {
- HerculesRMX.headPhoneMixHandler(value);
-};
-
-HerculesRMX.up = function (channel, control, value, status, group) {
- HerculesRMX.Buttons.Up.handleEvent(value);
-};
-
-HerculesRMX.down = function (channel, control, value, status, group) {
- HerculesRMX.Buttons.Down.handleEvent(value);
-};
-
-HerculesRMX.left = function (channel, control, value, status, group) {
- HerculesRMX.Buttons.Left.handleEvent(value);
-};
-
-HerculesRMX.right = function (channel, control, value, status, group) {
- HerculesRMX.Buttons.Right.handleEvent(value);
-};
-
-HerculesRMX.scratch = function (channel, control, value, status, group) {
- HerculesRMX.Buttons.Scratch.handleEvent(value);
-};
-
-HerculesRMX.gain = function(channel, control, value, status, group) {
- var deck = HerculesRMX.GetDeck(group);
- deck.gainHandler(value);
-};
-
-HerculesRMX.rate = function(channel, control, value, status, group) {
- var deck = HerculesRMX.GetDeck(group);
- deck.pitchHandler(value);
-};
-
-HerculesRMX.treble = function(channel, control, value, status, group) {
- var deck = HerculesRMX.GetDeck(group);
- deck.trebleHandler(value);
-};
-
-HerculesRMX.medium = function(channel, control, value, status, group) {
- var deck = HerculesRMX.GetDeck(group);
- deck.mediumHandler(value);
-};
-
-HerculesRMX.bass = function(channel, control, value, status, group) {
- var deck = HerculesRMX.GetDeck(group);
- deck.bassHandler(value);
-};
-
-HerculesRMX.deckVolume = function(channel, control, value, status, group) {
- var deck = HerculesRMX.GetDeck(group);
- deck.volHandler(value);
-};
-
-HerculesRMX.jog_wheel = function (channel, control, value, status, group) {
-// 7F > 40: CCW Slow > Fast - 127 > 64
-// 01 > 3F: CW Slow > Fast - 0 > 63
- var jogValue = value >=0x40 ? value - 0x80 : value; // -64 to +63, - = CCW, + = CW
- HerculesRMX.GetDeck(group).jogMove(jogValue);
-};
-
-HerculesRMX.cue = function (channel, control, value, status, group) {
- var deck = HerculesRMX.GetDeck(group);
- deck.Buttons.Cue.handleEvent(value);
-};
-
-HerculesRMX.beatSync = function (channel, control, value, status, group) {
- var deck = HerculesRMX.GetDeck(group);
- deck.Buttons.Sync.handleEvent(value);
-};
-
-HerculesRMX.rateReset = function (channel, control, value, status, group) {
- var deck = HerculesRMX.GetDeck(group);
- deck.Buttons.PitchReset.handleEvent(value);
-};
-
-HerculesRMX.play = function (channel, control, value, status, group) {
- var deck = HerculesRMX.GetDeck(group);
- deck.Buttons.PlayPause.handleEvent(value);
-};
-
-HerculesRMX.stop = function (channel, control, value, status, group) {
- var deck = HerculesRMX.GetDeck(group);
- deck.Buttons.Stop.handleEvent(value);
-};
-
-HerculesRMX.shift = function (channel, control, value, status, group) {
- var deck = HerculesRMX.GetDeck(group);
- deck.Buttons.Shift.handleEvent(value);
-};
-
-HerculesRMX.keypad1 = function (channel, control, value, status, group) {
- var deck = HerculesRMX.GetDeck(group);
- deck.Buttons.Keypad1.handleEvent(value);
-};
-
-HerculesRMX.keypad2 = function (channel, control, value, status, group) {
- var deck = HerculesRMX.GetDeck(group);
- deck.Buttons.Keypad2.handleEvent(value);
-};
-
-HerculesRMX.keypad3 = function (channel, control, value, status, group) {
- var deck = HerculesRMX.GetDeck(group);
- deck.Buttons.Keypad3.handleEvent(value);
-};
-
-HerculesRMX.keypad4 = function (channel, control, value, status, group) {
- var deck = HerculesRMX.GetDeck(group);
- deck.Buttons.Keypad4.handleEvent(value);
-};
-
-HerculesRMX.keypad5 = function (channel, control, value, status, group) {
- var deck = HerculesRMX.GetDeck(group);
- deck.Buttons.Keypad5.handleEvent(value);
-};
-
-HerculesRMX.keypad6 = function (channel, control, value, status, group) {
- var deck = HerculesRMX.GetDeck(group);
- deck.Buttons.Keypad6.handleEvent(value);
-};
-
-HerculesRMX.next = function (channel, control, value, status, group) {
- var deck = HerculesRMX.GetDeck(group);
- deck.Buttons.Next.handleEvent(value);
-};
-
-HerculesRMX.previous = function (channel, control, value, status, group) {
- var deck = HerculesRMX.GetDeck(group);
- deck.Buttons.Previous.handleEvent(value);
-};
-
-HerculesRMX.load = function (channel, control, value, status, group) {
- var deck = HerculesRMX.GetDeck(group);
- deck.Buttons.Load.handleEvent(value);
-};
-
-HerculesRMX.cueSelect = function (channel, control, value, status, group) {
- var deck = HerculesRMX.GetDeck(group);
- deck.Buttons.CueSelect.handleEvent(value);
-};
-
-HerculesRMX.killLow = function (channel, control, value, status, group) {
- var deck = HerculesRMX.GetDeck(group);
- deck.Buttons.KillLow.handleEvent(value);
-};
-
-
-HerculesRMX.killMid = function (channel, control, value, status, group) {
- var deck = HerculesRMX.GetDeck(group);
- deck.Buttons.KillMid.handleEvent(value);
-};
-
-
-HerculesRMX.killHigh = function (channel, control, value, status, group) {
- var deck = HerculesRMX.GetDeck(group);
- deck.Buttons.KillHigh.handleEvent(value);
-};
-
-
-
-HerculesRMX.init = function (id) { // called when the MIDI device is opened & set up
- HerculesRMX.killLeds();
-
- engine.connectControl("[Channel1]","rate","HerculesRMX.rateChange");
- engine.connectControl("[Channel2]","rate","HerculesRMX.rateChange");
-
- print ("HerculesRMX id: \""+id+"\" initialized.");
-};
-
-HerculesRMX.shutdown = function() {
- HerculesRMX.killLeds();
+
+ }
+}
+engine.trigger("[Channel2]","play");
+}
- print ("HerculesRMX shutdown.");
-};
-HerculesRMX.killLeds = function() {
- HerculesRMX.Buttons.Scratch.setLed(LedState.off);
- //TODO: remove timers when alsa midi work properly.
- var button;
- var time = 20;
- for (var key in HerculesRMX.Decks.Left.Buttons) {
- engine.beginTimer(time, "HerculesRMX.Decks.Left.Buttons['" + key + "'].setLed(LedState.off)", true);
- time = time + 5;
- }
- for (var key in HerculesRMX.Decks.Right.Buttons) {
- engine.beginTimer(time, "HerculesRMX.Decks.Right.Buttons['" + key + "'].setLed(LedState.off)", true);
- time = time + 5;
- }
+RHMixxx.OffAllLED = function () {
+ midi.sendShortMsg(0x80,0x09,0x00);
}
-//Rate change event handler to reset sync and reset leds
-//TODO: Need some way to check sync state here.
-HerculesRMX.rateChange = function (value, group) {
- if (HerculesRMX.Decks.Left.Buttons.Sync.state != ButtonState.pressed) {
- HerculesRMX.Decks.Left.Buttons.Sync.setLed(LedState.off);
- }
- if (HerculesRMX.Decks.Right.Buttons.Sync.state != ButtonState.pressed) {
- engine.beginTimer(25, "HerculesRMX.Decks.Right.Buttons.Sync.setLed(LedState.off)", true);
- }
- if (value != 0.0) {
- var deck = HerculesRMX.GetDeck(group);
- engine.beginTimer(30, "HerculesRMX.GetDeck('" + group + "').Buttons.PitchReset.setLed(LedState.off)", true);
- }
-};
-//TODO: Keep stop functionality?
-//HerculesRMX.stop_and_reset_track = function (channel, control, value, status, group) {
-// if (engine.getValue(group, "duration") == 0) { if (value) print("No song on " + group); return; };
-// if (value > 0) {
-// engine.setValue(group,"cue_default",0);
-// engine.setValue(group,"play",0);
-// engine.setValue(group,"start",0);
-//
-// HerculesRMX.cueButton[group] = false;
-// HerculesRMX.cuePlay[group] = false;
-// midi.sendShortMsg(0xB0, HerculesRMX.leds[group + " cue"], HerculesRMX.ledOff);
-// }
-//};
-//
-//HerculesRMX.vinyl_stop_and_return = function (channel, control, value, status, group) {
-// if (engine.getValue(group, "duration") == 0) { if (value) print("No song on " + group); return; };
-//
-// if (value) {
-// if (engine.getValue(group,"play")) {
-// HerculesRMX.cuePlay[group] = true;
-// midi.sendShortMsg(0xB0, HerculesRMX.leds[group + " cue"], HerculesRMX.ledOff);
-// var playposition = engine.getValue(group,"playposition");
-// engine.setValue(group,"play",0);
-// HerculesRMX.stopJog[group] = 1.0;
-// HerculesRMX.decayLast = new Date().getTime();
-// engine.setValue(group,"scratch",HerculesRMX.stopJog[group]);
-// HerculesRMX.stoping = true;
-// return;
-// } else {
-// engine.setValue(group,"playposition",0);
-// }
-// }
-//};
+///////////////////////////
+// //
+// The END //
+// :P //
+// //
+///////////////////////////
+
diff --git a/Midi_Interface/rhmixxx_midi_controller_MIDI_1.midi.xml b/Midi_Interface/rhmixxx_midi_controller_MIDI_1.midi.xml
index d4a59ff..5cb3e01 100644
--- a/Midi_Interface/rhmixxx_midi_controller_MIDI_1.midi.xml
+++ b/Midi_Interface/rhmixxx_midi_controller_MIDI_1.midi.xml
@@ -1,6 +1,9 @@
<MixxxMIDIPreset mixxxVersion="1.10.1+" schemaVersion="1">
<controller id="rhmixxx midi controller MIDI 1">
- <scriptfiles/>
+ <scriptfiles>
+ <file filename="rhmixxx_midi_controller_MIDI_1-scripts.js" functionprefix="RHMixxx"/>
+ </scriptfiles>
+
<controls>
<control>
<status>0x90</status>
@@ -17,10 +20,9 @@
<midino>0x01</midino>
<group>[Channel1]</group>
<key>play</key>
- <description></description>
<options>
- <normal/>
- </options>
+ <normal/>
+ </options>
</control>
<control>
<status>0x90</status>