add bcr2000 handler
authorEugene Petkevich <nasedil.genio.code@gmail.com>
Mon, 29 Jan 2024 00:26:37 +0000 (01:26 +0100)
committerEugene Petkevich <nasedil.genio.code@gmail.com>
Mon, 29 Jan 2024 00:26:37 +0000 (01:26 +0100)
extensions/classes/midibcr.sc [new file with mode: 0644]
temp.scd

diff --git a/extensions/classes/midibcr.sc b/extensions/classes/midibcr.sc
new file mode 100644 (file)
index 0000000..1e2606f
--- /dev/null
@@ -0,0 +1,42 @@
+MidiBcr : MidiHandler {
+  var <>isRel, <>rot;
+
+  *new {|isRel = false, name='Behringer BCR2000', midiNames=#["BCR2000", ["BCR2000", "Port 1"]], reveal=true|
+    ^super.newCopyArgs(name, midiNames, reveal).midiInit.controlInit(isRel);
+  }
+
+  controlInit {|isRelative|
+    isRel = isRelative;
+    rot = Array.fill(7, {|i|
+      {|...args|
+        this.noCallback(\rot++i, *args);
+      }
+    });
+    [1, 9, 17, 25, 81, 89, 97].do{|v, i|
+      MIDIdef.cc((\rot ++ i ++ name).asSymbol, {|...args|
+        var val = args[0];
+        if (isRel) {
+          val = val.wrap(-63, 64);
+        };
+        rot[i].value(val, args[1]-v, *args);
+      }, Array.series(8, v), srcID: idin);
+    };
+
+    "Ԃиџуту готов к использованию 😊".postln;
+  }
+
+  free {
+    (0..6).do{|i|
+      var defName = (\rot ++ i ++ name).asSymbol;
+      MIDIdef(defName).free;
+    };
+  }
+
+}
+
+// test
+/*
+
+~r = MidiRemote25SL();
+
+*/
\ No newline at end of file
index d442c4f..cd15bd9 100644 (file)
--- a/temp.scd
+++ b/temp.scd
@@ -344,4 +344,8 @@ fork {
   0.5.wait;
 
 };
-)
\ No newline at end of file
+)
+
+// bcr2000 test
+
+~dijutu = MidiBcr(false, \dijutu);
\ No newline at end of file