updates on dpat
[SugarCubes.git] / DanHorwitz.pde
index 3744086f2a9a5ab84e5eaeb1f0cc620f75cd72bd..d73b6c48191cc3580e32035e472984e5c99780dc 100755 (executable)
@@ -1,7 +1,7 @@
 //----------------------------------------------------------------------------------------------------------------------------------\r
 public class Pong extends DPat {\r
        SinLFO x,y,z,dx,dy,dz; \r
-       float cRad;     _DhP pSize;\r
+       float cRad;     DParam pSize;\r
        Pick  pChoose;\r
 \r
        Pong(GLucose glucose) {\r
@@ -49,7 +49,7 @@ public class Noise extends DPat
        int             XSym=1,YSym=2,RadSym=3;\r
        float           zTime   = random(10000), zTheta=0, zSin, zCos;\r
        float           rtime   = 0, ttime      = 0, transAdd=0;\r
-       _DhP            pSpeed , pDensity, pRotZ;\r
+       DParam          pSpeed , pDensity, pRotZ;\r
        Pick            pChoose, pSymm;\r
        int                     _ND = 4;\r
        NDat            N[] = new NDat[_ND];\r
@@ -131,8 +131,8 @@ public class Noise extends DPat
 public class Play extends DPat\r
 {\r
        int             nBeats  =       0;\r
-       _DhP    pAmp, pRad;\r
-       _DhP    pRotX, pRotY, pRotZ;\r
+       DParam  pAmp, pRad;\r
+       DParam  pRotX, pRotY, pRotZ;\r
        xyz             Theta   = new xyz();\r
        xyz             TSin    = new xyz();\r
        xyz             TCos    = new xyz();\r
@@ -147,8 +147,8 @@ public class Play extends DPat
                pRotZ           = addParam("RotZ", .5);\r
            pAmp                = addParam("Amp" , .2);\r
            pRad                = addParam("Rad"        , .1            );\r
-               pTempoMult      = addPick ("TMult"      , 0 , 6         , new String[] {"1x", "2x", "4x", "8x", "16x", "Rand"   }       );\r
-               pTimePattern= addPick ("TPat"   , 0 , 5         , new String[] {"Bounce", "Sin", "Roll", "Quant", "Accel"       }       );\r
+               pTempoMult      = addPick ("TMult"      , 5 , 6         , new String[] {"1x", "2x", "4x", "8x", "16x", "Rand"   }       );\r
+               pTimePattern= addPick ("TPat"   , 5 , 6         , new String[] {"Bounce", "Sin", "Roll", "Quant", "Accel", "Rand"       }       );\r
                pShape          = addPick ("Shape"      , 0 , 10        , new String[] {"Line", "Tap", "V", "RandV", "Pyramid",\r
                                                                                                                                        "Wings", "W2", "Sphere", "Cone", "Noise" }      );\r
                pForm           = addPick ("Form"       , 0 , 3         , new String[] {"Bar", "Volume", "Fade"                                 }       );\r
@@ -157,7 +157,7 @@ public class Play extends DPat
        float   t,a;\r
        xyz             cPrev = new xyz(), cCur = new xyz(), cMid = new xyz(), cMidNorm;\r
        float   LastBeat=3, LastMeasure=3;\r
-       int             CurRandTempo = 1;\r
+       int             CurRandTempo = 1, CurRandTPat = 1;\r
 \r
        void StartRun(double deltaMs) {\r
                t = lx.tempo.rampf();\r
@@ -167,20 +167,25 @@ public class Play extends DPat
                TSin    .set(sin(Theta.x), sin(Theta.y), sin(Theta.z));\r
                TCos    .set(cos(Theta.x), cos(Theta.y), cos(Theta.z));\r
 \r
-               if (t<LastMeasure) { CurRandTempo = int(random(4)); } LastMeasure = t;\r
+               if (t<LastMeasure) {\r
+                       if (random(2) < 1) CurRandTempo = int(random(4));\r
+                       if (random(2) < 1) CurRandTPat  = int(random(5));\r
+               } LastMeasure = t;\r
+                       \r
+               int nTempo = pTempoMult  .Cur(); if (nTempo == 5) nTempo = CurRandTempo;\r
+               int nTPat  = pTimePattern.Cur(); if (nTPat  == 5) nTPat  = CurRandTPat ;\r
 \r
-               switch (pTempoMult.Cur()) {\r
+               switch (nTempo) {\r
                        case 0:         t = t;                                                          break;\r
                        case 1:         t = (t*2. )%1.;                                         break;\r
                        case 2:         t = (t*4. )%1.;                                         break;\r
                        case 3:         t = (t*8. )%1.;                                         break;\r
                        case 4:         t = (t*16.)%1.;                                         break;\r
-                       case 5:         t = (t*pow(2,CurRandTempo))%1.;         break;\r
                }\r
 \r
                if (t<LastBeat) { cPrev = cCur; cCur = cCur.setRand(); } LastBeat = t;\r
 \r
-               switch (pTimePattern.Cur()) {\r
+               switch (nTPat) {\r
                        case 0:         t = sin(PI*t);                                          break;\r
                        case 1:         t = norm(sin(2*PI*(t+PI/2)),-1,1);      break;\r
                        case 2:         t = t;                                                          break;\r