Add keys callback for sl25remote
authorEugene Petkevich <nasedil.genio.code@gmail.com>
Tue, 31 May 2022 17:20:03 +0000 (20:20 +0300)
committerEugene Petkevich <nasedil.genio.code@gmail.com>
Tue, 31 May 2022 17:20:03 +0000 (20:20 +0300)
extensions/classes/midiremotesl.sc [new file with mode: 0644]

diff --git a/extensions/classes/midiremotesl.sc b/extensions/classes/midiremotesl.sc
new file mode 100644 (file)
index 0000000..d1688e0
--- /dev/null
@@ -0,0 +1,36 @@
+MidiRemote25SL : MidiHandler {
+  var <>key;
+
+  *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;
+  }
+
+  controlInit {
+    // key pressed/released
+    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);
+
+    // initialize handlers with revealing code
+    [
+      \key
+    ].do{|handlerName|
+      this.perform((handlerName++\_).asSymbol, {|...args|
+        this.noCallback(handlerName, *args);
+      });
+    };
+    "Кэдифу готов к использованию 😊".postln;
+  }
+
+}
+
+// test
+/*
+
+~r = MidiRemote25SL();
+
+*/
\ No newline at end of file