summaryrefslogtreecommitdiff
path: root/Midi_Interface
diff options
context:
space:
mode:
Diffstat (limited to 'Midi_Interface')
-rw-r--r--Midi_Interface/RHMixxx-scripts.js145
-rw-r--r--Midi_Interface/RHMixxx.midi.xml171
2 files changed, 316 insertions, 0 deletions
diff --git a/Midi_Interface/RHMixxx-scripts.js b/Midi_Interface/RHMixxx-scripts.js
new file mode 100644
index 0000000..1708151
--- /dev/null
+++ b/Midi_Interface/RHMixxx-scripts.js
@@ -0,0 +1,145 @@
+//***********************************************************
+//** Radio Helsinki RHMixxx control script **
+//** CopyLeft 2014, Josef Schauer / Christian Pointner **
+//***********************************************************
+
+// *********** Actions ***********
+
+function RHMixxx() {}
+
+RHMixxx.num_decks = 2;
+RHMixxx.num_sampler = 12;
+
+RHMixxx.groupNotes = {
+ "[Channel1]": { play: 0x01, stop: 0x00 },
+ "[Channel2]": { play: 0x03, stop: 0x02 },
+ "[Sampler1]": 0x04,
+ "[Sampler2]": 0x05,
+ "[Sampler3]": 0x06,
+ "[Sampler4]": 0x07,
+ "[Sampler5]": 0x08,
+ "[Sampler6]": 0x09,
+ "[Sampler7]": 0x0A,
+ "[Sampler8]": 0x0B,
+ "[Sampler9]": 0x0C,
+ "[Sampler10]": 0x0D,
+ "[Sampler11]": 0x0E,
+ "[Sampler12]": 0x0F
+}
+
+RHMixxx.init = function (id, debug) {
+ if(debug)
+ print("RHMixxx initializing for controller '" + id +
+ "' (" + RHMixxx.num_decks + " Decks, " + RHMixxx.num_sampler + " Sampler)");
+
+ var i;
+ for (i = 1; i <= RHMixxx.num_decks; i++)
+ RHMixxx.initDeck(i, debug);
+ for (i = 1; i <= RHMixxx.num_sampler; i++)
+ RHMixxx.initSampler(i, debug);
+
+ midi.sendShortMsg(0x80, 0x1F, 0x00);
+}
+
+RHMixxx.shutdown = function () {
+}
+
+
+RHMixxx.initDeck = function (c, debug) {
+ var group = "[Channel" + c + "]";
+
+ engine.setValue(group, "volume", 0);
+ engine.connectControl(group, "play", "RHMixxx.DeckPlaying");
+ engine.trigger(group, "play");
+ engine.connectControl(group, "track_samples", "RHMixxx.DeckSamples");
+ engine.trigger(group, "track_samples");
+
+ if(debug)
+ print("RHMixxx: " + group + " initilized!");
+}
+
+RHMixxx.initSampler = function (s, debug) {
+ var group = "[Sampler" + s + "]";
+
+ engine.setValue(group, "volume", 1.0);
+ engine.connectControl(group, "play", "RHMixxx.SamplerPlaying");
+ engine.trigger(group, "play");
+ engine.connectControl(group, "track_samples", "RHMixxx.SamplerSamples");
+ engine.trigger(group, "track_samples");
+
+ if(debug)
+ print("RHMixxx: " + group + " initilized!");
+}
+
+// *********** Actions ***********
+
+RHMixxx.StopDeck = function (channel, control, value, status, group) {
+ engine.setValue(group, "start_stop", 1);
+ engine.setValue(group, "start_stop", 0);
+}
+
+RHMixxx.ToggleSampler = function (channel, control, value, status, group) {
+ print("RHMixxx: ToggleSampler called for " + group);
+
+ if(!engine.getValue(group, "play")) {
+ engine.setValue(group, "play", 1);
+ }
+ else {
+ engine.setValue(group, "start_stop", 1);
+ engine.setValue(group, "start_stop", 0);
+ }
+}
+
+
+// *********** Status updates ***********
+
+RHMixxx.DeckPlaying = function (value, group, control) {
+ if (!value) {
+ if(engine.getValue(group, "track_samples") != 0) {
+ midi.sendShortMsg(0x90, RHMixxx.groupNotes[group].stop, 0x00);
+ midi.sendShortMsg(0x90, RHMixxx.groupNotes[group].play, 0x00);
+ } else {
+ midi.sendShortMsg(0x80, RHMixxx.groupNotes[group].stop, 0x00);
+ midi.sendShortMsg(0x80, RHMixxx.groupNotes[group].play, 0x00);
+ }
+ } else {
+ midi.sendShortMsg(0x90, RHMixxx.groupNotes[group].stop, 0x00);
+ midi.sendShortMsg(0x90, RHMixxx.groupNotes[group].play, 0x10);
+ }
+}
+
+RHMixxx.DeckSamples = function (value, group, control) {
+ if(!value) {
+ midi.sendShortMsg(0x80, RHMixxx.groupNotes[group].stop, 0x00);
+ midi.sendShortMsg(0x80, RHMixxx.groupNotes[group].play, 0x00);
+ } else {
+ if(engine.getValue(group, "play") == 0) {
+ midi.sendShortMsg(0x90, RHMixxx.groupNotes[group].stop, 0x00);
+ midi.sendShortMsg(0x90, RHMixxx.groupNotes[group].play, 0x00);
+ }
+ }
+}
+
+RHMixxx.SamplerPlaying = function (value, group, control) {
+ if (!value) {
+ if(engine.getValue(group, "track_samples") != 0) {
+ midi.sendShortMsg(0x90, RHMixxx.groupNotes[group], 0x00);
+ engine.setValue(group, "start_stop", 1);
+ engine.setValue(group, "start_stop", 0);
+ } else {
+ midi.sendShortMsg(0x80, RHMixxx.groupNotes[group], 0x00);
+ }
+ }
+ else {
+ midi.sendShortMsg(0x90, RHMixxx.groupNotes[group], 0x10);
+ }
+}
+
+RHMixxx.SamplerSamples = function (value, group, control) {
+ if(!value) {
+ midi.sendShortMsg(0x80, RHMixxx.groupNotes[group], 0x00);
+ } else {
+ if(engine.getValue(group, "play") == 0)
+ midi.sendShortMsg(0x90, RHMixxx.groupNotes[group], 0x00);
+ }
+}
diff --git a/Midi_Interface/RHMixxx.midi.xml b/Midi_Interface/RHMixxx.midi.xml
new file mode 100644
index 0000000..c5cbc88
--- /dev/null
+++ b/Midi_Interface/RHMixxx.midi.xml
@@ -0,0 +1,171 @@
+<MixxxMIDIPreset mixxxVersion="1.10.1+" schemaVersion="1">
+ <controller id="rhmixxx midi controller MIDI 1">
+ <scriptfiles>
+ <file filename="RHMixxx-scripts.js" functionprefix="RHMixxx"/>
+ </scriptfiles>
+ <controls>
+ <!-- DECKS -->
+ <control>
+ <status>0x90</status>
+ <midino>0x00</midino>
+ <group>[Channel1]</group>
+ <key>RHMixxx.StopDeck</key>
+ <description></description>
+ <options>
+ <Script-Binding/>
+ </options>
+ </control>
+ <control>
+ <status>0x90</status>
+ <midino>0x01</midino>
+ <group>[Channel1]</group>
+ <key>play</key>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <status>0x90</status>
+ <midino>0x02</midino>
+ <group>[Channel2]</group>
+ <key>RHMixxx.StopDeck</key>
+ <description></description>
+ <options>
+ <Script-Binding/>
+ </options>
+ </control>
+ <control>
+ <status>0x90</status>
+ <midino>0x03</midino>
+ <group>[Channel2]</group>
+ <key>play</key>
+ <description></description>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <!-- SAMPLER -->
+ <control>
+ <status>0x90</status>
+ <midino>0x04</midino>
+ <group>[Sampler1]</group>
+ <key>RHMixxx.ToggleSampler</key>
+ <description></description>
+ <options>
+ <Script-Binding/>
+ </options>
+ </control>
+ <control>
+ <status>0x90</status>
+ <midino>0x05</midino>
+ <group>[Sampler2]</group>
+ <key>RHMixxx.ToggleSampler</key>
+ <description></description>
+ <options>
+ <Script-Binding/>
+ </options>
+ </control>
+ <control>
+ <status>0x90</status>
+ <midino>0x06</midino>
+ <group>[Sampler3]</group>
+ <key>RHMixxx.ToggleSampler</key>
+ <description></description>
+ <options>
+ <Script-Binding/>
+ </options>
+ </control>
+ <control>
+ <status>0x90</status>
+ <midino>0x07</midino>
+ <group>[Sampler4]</group>
+ <key>RHMixxx.ToggleSampler</key>
+ <description></description>
+ <options>
+ <Script-Binding/>
+ </options>
+ </control>
+ <control>
+ <status>0x90</status>
+ <midino>0x08</midino>
+ <group>[Sampler5]</group>
+ <key>RHMixxx.ToggleSampler</key>
+ <description></description>
+ <options>
+ <Script-Binding/>
+ </options>
+ </control>
+ <control>
+ <status>0x90</status>
+ <midino>0x09</midino>
+ <group>[Sampler6]</group>
+ <key>RHMixxx.ToggleSampler</key>
+ <description></description>
+ <options>
+ <Script-Binding/>
+ </options>
+ </control>
+ <control>
+ <status>0x90</status>
+ <midino>0x0a</midino>
+ <group>[Sampler7]</group>
+ <key>RHMixxx.ToggleSampler</key>
+ <description></description>
+ <options>
+ <Script-Binding/>
+ </options>
+ </control>
+ <control>
+ <status>0x90</status>
+ <midino>0x0b</midino>
+ <group>[Sampler8]</group>
+ <key>RHMixxx.ToggleSampler</key>
+ <description></description>
+ <options>mixxx
+ <Script-Binding/>
+ </options>
+ </control>
+ <control>
+ <status>0x90</status>
+ <midino>0x0c</midino>
+ <group>[Sampler9]</group>
+ <key>RHMixxx.ToggleSampler</key>
+ <description></description>
+ <options>
+ <Script-Binding/>
+ </options>
+ </control>
+ <control>
+ <status>0x90</status>
+ <midino>0x0d</midino>
+ <group>[Sampler10]</group>
+ <key>RHMixxx.ToggleSampler</key>
+ <description></description>
+ <options>
+ <Script-Binding/>
+ </options>
+ </control>
+ <control>
+ <status>0x90</status>
+ <midino>0x0e</midino>
+ <group>[Sampler11]</group>
+ <key>RHMixxx.ToggleSampler</key>
+ <description></description>
+ <options>
+ <Script-Binding/>
+ </options>
+ </control>
+ <control>
+ <status>0x90</status>
+ <midino>0x0f</midino>
+ <group>[Sampler12]</group>
+ <key>RHMixxx.ToggleSampler</key>
+ <description></description>
+ <options>
+ <Script-Binding/>
+ </options>
+ </control>
+ </controls>
+ <outputs/>
+ </controller>
+</MixxxMIDIPreset>