Add joystick handling
authorEugene Petkevich <nasedil.genio.code@gmail.com>
Wed, 1 Jun 2022 15:12:20 +0000 (18:12 +0300)
committerEugene Petkevich <nasedil.genio.code@gmail.com>
Wed, 1 Jun 2022 15:12:20 +0000 (18:12 +0300)
extensions/classes/midihandler.sc
extensions/classes/midiremotesl.sc

index 0c7944c..6d7ac7c 100644 (file)
@@ -44,9 +44,50 @@ MIDIdef.polytouch(\testpolytouch, {|...args|
 MIDIdef.bend(\testbend, {|...args|
 (["bend"] ++ args).postln;
 });
+MIDIdef.program(\testprogram, {|...args|
+(["program"] ++ args).postln;
+});
 MIDIdef.sysex(\testsysex, {|...args|
 (["sysex"] ++ args).postln;
 });
+
+MIDIdef.smpte(\testsmpte, {|...args|
+(["smpte"] ++ args).postln;
+});
+MIDIdef.mtcQuarterFrame(\testmtcQuarterFrame, {|...args|
+(["mtcQuarterFrame"] ++ args).postln;
+});
+MIDIdef.songPosition(\testsongPosition, {|...args|
+(["songPosition"] ++ args).postln;
+});
+MIDIdef.songSelect(\testsongSelect, {|...args|
+(["songSelect"] ++ args).postln;
+});
+MIDIdef.tuneRequest(\testtuneRequest, {|...args|
+(["tuneRequest"] ++ args).postln;
+});
+MIDIdef.midiClock(\testmidiClock, {|...args|
+(["midiClock"] ++ args).postln;
+});
+
+MIDIdef.tick(\testtick, {|...args|
+(["tick"] ++ args).postln;
+});
+MIDIdef.start(\teststart, {|...args|
+(["start"] ++ args).postln;
+});
+MIDIdef.stop(\teststop, {|...args|
+(["stop"] ++ args).postln;
+});
+MIDIdef.continue(\testcontinue, {|...args|
+(["continue"] ++ args).postln;
+});
+MIDIdef.reset(\testreset, {|...args|
+(["reset"] ++ args).postln;
+});
+MIDIdef.activeSense(\testactiveSense, {|...args|
+(["activeSense"] ++ args).postln;
+});
 )
 
 */
\ No newline at end of file
index d1688e0..ae1041e 100644 (file)
@@ -1,5 +1,21 @@
+// CC values:
+// 0, 32 — bank change selector
+// 1..8 — upper rotarors
+// 9..16 — lower rotators
+// 17..24 — faders
+// 33..40 — upper left buttons
+// 41..48 — lower left buttons
+// 49..56 — pads
+// 64, 65 — pedals
+// 66 — joystick
+// 73..80 — upper right buttons
+// 81..88 — lower right buttons
+// 94, 95 — tempo change selector
+
 MidiRemote25SL : MidiHandler {
   var <>key;
+  var <>bend;
+  var <>mod;
 
   *new {|name='Novation SL25 ReMOTE MKII', midiNames=#["ReMOTE SL", "ReMOTE SL MIDI 1", "ReMOTE SL MIDI 1"], reveal=true|
     ^super.newCopyArgs(name, midiNames, reveal).midiInit.controlInit;
@@ -10,14 +26,23 @@ MidiRemote25SL : MidiHandler {
     MIDIdef.noteOn((\keyDown++name).asSymbol, {|...args|
       key.value(true, *args);
     }, (0..127), srcID: idin);
-    // button released
     MIDIdef.noteOff((\keyUp++name).asSymbol, {|...args|
       key.value(false, *args);
     }, (0..127), srcID: idin);
 
+    // bend
+    MIDIdef.bend((\bend++name).asSymbol, {|...args|
+      bend.value(args[0].bilin(8192, 0, 16383, 0, -1, 1), *args);
+    }, srcID: idin);
+
+    // modulation joystick
+    MIDIdef.cc((\mod++name).asSymbol, {|...args|
+      mod.value(args[0].linlin(0, 127, 0, 1), *args);
+    }, 66, srcID: idin);
+
     // initialize handlers with revealing code
     [
-      \key
+      \key, \bend, \mod
     ].do{|handlerName|
       this.perform((handlerName++\_).asSymbol, {|...args|
         this.noCallback(handlerName, *args);