From 7c769a8070539c18d74952ea61749c7c2c1f6035 Mon Sep 17 00:00:00 2001 From: Eugene Petkevich Date: Wed, 1 Jun 2022 18:12:20 +0300 Subject: [PATCH] Add joystick handling --- extensions/classes/midihandler.sc | 41 ++++++++++++++++++++++++++++++ extensions/classes/midiremotesl.sc | 29 +++++++++++++++++++-- 2 files changed, 68 insertions(+), 2 deletions(-) diff --git a/extensions/classes/midihandler.sc b/extensions/classes/midihandler.sc index 0c7944c..6d7ac7c 100644 --- a/extensions/classes/midihandler.sc +++ b/extensions/classes/midihandler.sc @@ -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 diff --git a/extensions/classes/midiremotesl.sc b/extensions/classes/midiremotesl.sc index d1688e0..ae1041e 100644 --- a/extensions/classes/midiremotesl.sc +++ b/extensions/classes/midiremotesl.sc @@ -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); -- 2.17.1