From: Mark Slee Date: Wed, 25 Sep 2013 01:17:11 +0000 (-0700) Subject: Changes to make DPat able to run multiple instances X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=2e45d1c91f27afcfd2f36bedc917d52fff434968;p=SugarCubes.git Changes to make DPat able to run multiple instances --- diff --git a/DanUtil.pde b/DanUtil.pde index c27eaed..9f4b3a0 100644 --- a/DanUtil.pde +++ b/DanUtil.pde @@ -1,7 +1,6 @@ //---------------------------------------------------------------------------------------------------------------------------------- float xdMax,ydMax,zdMax; int NumApcRows = 5, NumApcCols = 8; -DGlobals DG = new DGlobals(); boolean btwn (int a,int b,int c) { return a >= b && a <= c; } boolean btwn (double a,double b,double c) { return a >= b && a <= c; } @@ -64,6 +63,18 @@ public class xyz { float x,y,z; } //---------------------------------------------------------------------------------------------------------------------------------- public class DGlobals { + + DGlobals() { + midiEngine.addListener(new MidiEngineListener() { + public void onFocusedDeck(int deckIndex) { + if (isFocused()) { + UpdateLights(); + SetText(); + } + } + }); + } + boolean bInit = false; MidiOutput APCOut = null; MidiInput APCIn = null, OxygenIn = null; @@ -90,19 +101,21 @@ public class DGlobals { float _Spark () { return Sliders[6]; } float _Wiggle () { return Sliders[7]; } + boolean isFocused () { + return CurPat == midiEngine.getFocusedDeck().getActivePattern(); + } + void Init () { if (bInit) return; bInit=true; for (MidiOutputDevice output : RWMidi.getOutputDevices()) { if (APCOut == null && output.toString().contains("APC")) APCOut = output.createOutput(); } - - for (MidiInputDevice input : RWMidi.getInputDevices ()) { - if (input.toString().contains("APC")) input.createInput (this); - } } void SetText() { + if (!isFocused()) return; + Text1 = ""; Text2 = ""; Text1 += " XSym: " + (_XSym ? "ON" : "OFF") + " "; Text1 += " YSym: " + (_YSym ? "ON" : "OFF") + " "; @@ -119,13 +132,13 @@ public class DGlobals { uiDebugText.setText(Text1, Text2); } - void controllerChangeReceived(rwmidi.Controller cc) { - if (cc.getCC() == 7 && btwn(cc.getChannel(),0,7)) { Sliders[cc.getChannel()] = 1.*cc.getValue()/127.; } - else if (cc.getCC() == 15 && cc.getChannel() == 0) { - lx.engine.getDeck(1).getCrossfader().setValue( 1.*cc.getValue()/127.); + public boolean controllerChangeReceived(rwmidi.Controller cc) { + if (cc.getCC() == 7 && btwn(cc.getChannel(),0,7)) { + Sliders[cc.getChannel()] = 1.*cc.getValue()/127.; + return true; } - //else { println(cc.getCC() + " " + cc.getChannel() + " " + cc.getValue()); } + return false; } void Deactivate (DPat p) { if (p == CurPat) { uiDebugText.setText(""); CurPat = NextPat; } NextPat = null; } @@ -137,6 +150,8 @@ public class DGlobals { } void UpdateLights() { + if (!isFocused()) return; + for (int i=0; i 40) bpm/=2; lx.tempo.setBpm(bpm); lx.tempo.trigger(); Tap1=0; println("Tap Set - " + bpm + " bpm"); + consumed = true; } UpdateLights(); + return consumed; } - void noteOnReceived (Note note) { - if (CurPat == null) return; + public boolean noteOnReceived (Note note) { + if (CurPat == null) return false; int row = mapRow(note.getPitch()), col = note.getChannel(); - if (row == 50 && col == 0) { lx.tempo.trigger(); Tap1 = getNow(); } - else if (row == 82 && col == 0) _XSym = !_XSym ; - else if (row == 83 && col == 0) _YSym = !_YSym ; - else if (row == 84 && col == 0) _ZSym = !_ZSym ; - else if (row == 85 && col == 0) _RSym = !_RSym ; + if (row == 50 && col == 0) { lx.tempo.trigger(); Tap1 = getNow(); return true; } + else if (row == 82 && col == 0) { _XSym = !_XSym ; return true; } + else if (row == 83 && col == 0) { _YSym = !_YSym ; return true; } + else if (row == 84 && col == 0) { _ZSym = !_ZSym ; return true; } + else if (row == 85 && col == 0) { _RSym = !_RSym ; return true; } else { for (int i=0; i