X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=DanUtil.pde;h=c098524b1541a7f8753d20259c2a7ff2350ffd47;hb=3661fceed6aa9b6023c31850b42b86fc807d5abb;hp=e9c36630ae5cbf1ad935b7d817637edb361be50e;hpb=6680a94a61653b9c2089dc3be2e0be475d358f26;p=SugarCubes.git diff --git a/DanUtil.pde b/DanUtil.pde index e9c3663..c098524 100644 --- a/DanUtil.pde +++ b/DanUtil.pde @@ -7,12 +7,7 @@ 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; } public class Pick { - int Cur() { return (CurRow-StartRow)*NumApcCols + CurCol; } - String CurDesc() { return Desc[Cur()]; } - void reset() { CurCol = Default % NumApcCols; CurRow = StartRow + Default / NumApcCols; } - - int NumPicks, Default , - CurRow , CurCol , + int NumPicks, Default , CurRow , CurCol , StartRow, EndRow ; String tag , Desc[] ; @@ -22,6 +17,16 @@ public class Pick { tag = label; Desc = d; reset(); } + + int Cur() { return (CurRow-StartRow)*NumApcCols + CurCol; } + String CurDesc() { return Desc[Cur()]; } + void reset() { CurCol = Default % NumApcCols; CurRow = StartRow + Default / NumApcCols; } + + boolean set(int r, int c) { + if (!btwn(r,StartRow,EndRow) || !btwn(c,0,NumApcCols-1) || + !btwn((r-StartRow)*NumApcCols + c,0,NumPicks-1)) return false; + CurRow=r; CurCol=c; return true; + } } public class DBool { @@ -29,6 +34,7 @@ public class DBool { String tag; int row, col; void reset() { b = def; } + boolean set (int r, int c, boolean val) { if (r != row || c != col) return false; b = val; return true; } DBool(String _tag, boolean _def, int _row, int _col) { def = _def; b = _def; tag = _tag; row = _row; col = _col; } @@ -37,7 +43,7 @@ public class DBool { public class DParam extends BasicParameter { double dflt; DParam (String label, double value) { super(label,value); dflt=value; } - void Set (double value) { super.setValue(value); } + void set (double value) { super.setValue(value); } void reset () { super.setValue(dflt); } float Val () { return getValuef(); } } @@ -47,12 +53,17 @@ public class xyz { float x,y,z; xyz(Point p ) {x=p.fx ; y=p.fy; z=p.fz;} xyz(float _x,float _y,float _z) {x=_x ; y=_y ; z=_z ;} void set(Point p ) {x=p.fx ; y=p.fy; z=p.fz;} + void set(xyz p ) {x=p.x ; y=p.y ; z=p.z ;} void set(float _x,float _y,float _z) {x=_x ; y=_y ; z=_z ;} + + void zoomX (float zx) {x = x*zx - xdMax*(zx-1)/2; } + void zoomY (float zy) {y = y*zy - ydMax*(zy-1)/2; } + float distance(xyz b) {return dist(x,y,z,b.x,b.y,b.z); } float dot (xyz b) {return x*b.x + y*b.y + z*b.z; } - xyz minus (xyz b) {return new xyz(x-b.x,y-b.y,z-b.z); } void add (xyz b) {x += b.x; y += b.y; z += b.z; } void add (float b) {x += b ; y += b ; z += b ; } + void subtract(xyz b) {x -= b.x; y -= b.y; z -= b.z; } void RotateZ (xyz o, float nSin, float nCos) { float nX = nCos*(x-o.x) - nSin*(y-o.y) + o.x; @@ -72,11 +83,12 @@ public class xyz { float x,y,z; z = nZ; x = nX; } - xyz setRand () { return new xyz ( random(xdMax), random(ydMax), random(zdMax)); } - xyz setNorm () { return new xyz ( x / xdMax, y / ydMax, z / zdMax); } + void setRand () { x = random(xdMax); y = random(ydMax); z = random(zdMax); } + void setNorm () { x /= xdMax; y /= ydMax; z /= zdMax; } float interp (float a, float b, float c) { return (1-a)*b + a*c; } - xyz interpolate(float i, xyz d) { return new xyz ( interp(i,x,d.x), interp(i,y,d.y), interp(i,z,d.z)); } + + void interpolate(float i, xyz d) { x = interp(i,x,d.x); y = interp(i,y,d.y); z = interp(i,z,d.z); } } //---------------------------------------------------------------------------------------------------------------------------------- public class DGlobals { @@ -87,32 +99,30 @@ public class DGlobals { float Sliders[] = new float [] {1,0,0,0,0,0,0,0}; String SliderText[] = new String[] {"Level", "SpinHue", "Spark", "Wiggle", "Trails", "??", "??", "??"}; + + void SetNoteOn (int row, int col, int clr){ if (APCOut != null) APCOut.sendNoteOn (col, row, clr); } + void SetNoteOff (int row, int col, int clr){ if (APCOut != null) APCOut.sendNoteOff (col, row, clr); } + void SetKnob (int cc , int c , int v ){ if (APCOut != null) APCOut.sendController (cc , c, v); } - int mapRow (int a) { return btwn(a,53,57) ? a-53 : a; } - int unmapRow (int a) { return btwn(a,0 , 4) ? a+53 : a; } - - void SetLight (int row, int col, int clr){ if (APCOut != null) APCOut.sendNoteOn(col, unmapRow(row), clr); } - void SetKnob (int cc , int c , int v ){ if (APCOut != null) APCOut.sendController(cc , c, v); } - - DBool GetBool (int i) { return (DBool)CurPat.bools .get(i); } - Pick GetPick (int i) { return (Pick) CurPat.picks .get(i); } - DParam GetParam(int i) { return (DParam) CurPat.params.get(i); } + DBool GetBool (int i) { return (DBool)CurPat.bools .get(i); } + Pick GetPick (int i) { return (Pick) CurPat.picks .get(i); } + DParam GetParam(int i) { return (DParam) CurPat.params.get(i); } - float _Dim () { return Sliders[0]; } - float _SpinHue () { return Sliders[1]; } - float _Spark () { return Sliders[2]; } - float _Wiggle () { return Sliders[3]; } - float _Trails () { return Sliders[4]; } + float _Dim () { return Sliders[0]; } + float _SpinHue () { return Sliders[1]; } + float _Spark () { return Sliders[2]; } + float _Wiggle () { return Sliders[3]; } + float _Trails () { return Sliders[4]; } - void Init () { + void Init () { if (bInit) return; bInit=true; for (MidiOutputDevice o: RWMidi.getOutputDevices()) { if (o.toString().contains("APC")) { APCOut = o.createOutput(); break;}} for (MidiInputDevice i: RWMidi.getInputDevices ()) { if (i.toString().contains("APC")) { i.createInput (this); break;}} } - boolean isFocused () { return CurPat != null && CurPat == midiEngine.getFocusedDeck().getActivePattern(); } - void Deactivate (DPat p) { if (p != CurPat) return; uiDebugText.setText(""); CurPat = null; } - void Activate (DPat p) { + boolean isFocused () { return CurPat != null && CurPat == midiEngine.getFocusedDeck().getActivePattern(); } + void Deactivate (DPat p) { if (p != CurPat) return; uiDebugText.setText(""); CurPat = null; } + void Activate (DPat p) { CurPat = p; while (lx.tempo.bpm() > 40) lx.tempo.setBpm(lx.tempo.bpm()/2); for (int i=0; i 40) bpm/=2; - lx.tempo.setBpm(bpm); lx.tempo.trigger(); Tap1=0; println("Tap Set - " + bpm + " bpm"); - } - + void noteOffReceived(Note note) { if (!isFocused()) return; + int row = note.getPitch(), col = note.getChannel(); + for (int i=0; i 0) P.y += DG._Spark () * (noise(P.x,P.y+NoiseMove/30 ,P.z)*ydMax - ydMax/2.); if (DG._Wiggle() > 0) P.y += DG._Wiggle() * (noise(P.x/(xdMax*.3)-NoiseMove/1500.) - .5) * (ydMax/2.); - color cOld = colors[p.index]; - color cNew = CalcPoint(P); + color cOld = colors[p.index]; pSave.set(P); + color cNew = CalcPoint(P); - if (pXsym.b) cNew = blendColor(cNew, CalcPoint(new xyz(xdMax-P.x,P.y,P.z)), ADD); - if (pYsym.b) cNew = blendColor(cNew, CalcPoint(new xyz(P.x,ydMax-P.y,P.z)), ADD); - if (pZsym.b) cNew = blendColor(cNew, CalcPoint(new xyz(P.x,P.y,zdMax-P.z)), ADD); + if (pXsym.b) { P.set(pSave); tP.set(xdMax-P.x,P.y,P.z); cNew = blendColor(cNew, CalcPoint(tP), ADD); } + if (pYsym.b) { P.set(pSave); tP.set(P.x,ydMax-P.y,P.z); cNew = blendColor(cNew, CalcPoint(tP), ADD); } + if (pZsym.b) { P.set(pSave); tP.set(P.x,P.y,zdMax-P.z); cNew = blendColor(cNew, CalcPoint(tP), ADD); } float b = brightness(cNew)/100.;