From 8f9f3fd3ef17512010e9f3f78e924e55e974109b Mon Sep 17 00:00:00 2001 From: Eugene Petkevich Date: Thu, 2 Jun 2022 19:59:41 +0300 Subject: [PATCH] Respond to tempo --- extensions/classes/midiremotesl.sc | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/extensions/classes/midiremotesl.sc b/extensions/classes/midiremotesl.sc index 12ea5c2..9e21a5e 100644 --- a/extensions/classes/midiremotesl.sc +++ b/extensions/classes/midiremotesl.sc @@ -13,16 +13,20 @@ // 94, 95 — tempo change selector MidiRemote25SL : MidiHandler { + var key; var <>bend; var <>mod; var <>touch; + var <>tempo, bpm=127; *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 { + idin2 = MIDIClient.sources.detect{|i| i.name == "ReMOTE SL MIDI 2"}.uid; + // key pressed/released MIDIdef.noteOn((\keyDown++name).asSymbol, {|...args| key.value(true, args[0].linlin(0, 127, 0, 1), args[1], *args); @@ -46,9 +50,22 @@ MidiRemote25SL : MidiHandler { touch.value(args[0].linlin(0, 127, 0, 1), *args); }, srcID: idin); + // tempo + MIDIdef.cc((\tempo++name).asSymbol, {|...args| + switch (args[1], + 94, { + bpm = 128 * args[0]; + }, + 95, { + bpm = bpm + args[0]; + tempo.value(bpm, *args); + } + ); + }, [94, 95], srcID: idin2); + // initialize handlers with revealing code [ - \key, \bend, \mod, \touch + \key, \bend, \mod, \touch, \tempo, ].do{|handlerName| this.perform((handlerName++\_).asSymbol, {|...args| this.noCallback(handlerName, *args); @@ -59,7 +76,7 @@ MidiRemote25SL : MidiHandler { free { [ - \keyDown, \keyUp, \bend, \mod, \touch + \keyDown, \keyUp, \bend, \mod, \touch, \tempo ].do{|prefix| var defName = (prefix ++ name).asSymbol; MIDIdef(defName).free; -- 2.17.1