From: Eugene Petkevich Date: Thu, 2 Jun 2022 16:59:41 +0000 (+0300) Subject: Respond to tempo X-Git-Url: https://git.zuelum.org/?a=commitdiff_plain;h=8f9f3fd3ef17512010e9f3f78e924e55e974109b;p=scprojects.git Respond to tempo --- 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;