X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=MarkSlee.pde;h=9804b5cf705f026040b663f6e4211ae0fa36d559;hb=34327c962351112e07c3d93f56ffc543fac45b58;hp=adc86d078e298deedf1c8ba2875676a7671cbbff;hpb=d626bc9b0197a1b5fd51a86f33f666a2a46579a2;p=SugarCubes.git diff --git a/MarkSlee.pde b/MarkSlee.pde index adc86d0..9804b5c 100644 --- a/MarkSlee.pde +++ b/MarkSlee.pde @@ -28,7 +28,7 @@ class SpaceTime extends SCPattern { } } - void run(int deltaMs) { + void run(double deltaMs) { angle += deltaMs * 0.0007; float sVal1 = model.strips.size() * (0.5 + 0.5*sin(angle)); float sVal2 = model.strips.size() * (0.5 + 0.5*cos(angle)); @@ -84,7 +84,7 @@ class Swarm extends SCPattern { } } - void run(int deltaMs) { + void run(double deltaMs) { float s = 0; for (Strip strip : model.strips ) { int i = 0; @@ -93,7 +93,7 @@ class Swarm extends SCPattern { colors[p.index] = color( (lx.getBaseHuef() + 0.3 * abs(p.fx - hOffX.getValuef())) % 360, constrain(80 + 40 * fV, 0, 100), - constrain(100 - (30 - fV * falloff.getValuef()) * modDist(i + (s*63)%61, (int) (offset.getValuef() * strip.metrics.numPoints), strip.metrics.numPoints), 0, 100) + constrain(100 - (30 - fV * falloff.getValuef()) * modDist(i + (s*63)%61, offset.getValuef() * strip.metrics.numPoints, strip.metrics.numPoints), 0, 100) ); ++i; } @@ -128,6 +128,84 @@ class SwipeTransition extends SCTransition { } } +abstract class BlendTransition extends SCTransition { + + final int blendType; + + BlendTransition(GLucose glucose, int blendType) { + super(glucose); + this.blendType = blendType; + } + + void computeBlend(int[] c1, int[] c2, double progress) { + if (progress < 0.5) { + for (int i = 0; i < c1.length; ++i) { + colors[i] = lerpColor( + c1[i], + blendColor(c1[i], c2[i], blendType), + (float) (2.*progress), + RGB); + } + } else { + for (int i = 0; i < c1.length; ++i) { + colors[i] = lerpColor( + c2[i], + blendColor(c1[i], c2[i], blendType), + (float) (2.*(1. - progress)), + RGB); + } + } + } +} + +class MultiplyTransition extends BlendTransition { + MultiplyTransition(GLucose glucose) { + super(glucose, MULTIPLY); + } +} + +class ScreenTransition extends BlendTransition { + ScreenTransition(GLucose glucose) { + super(glucose, SCREEN); + } +} + +class BurnTransition extends BlendTransition { + BurnTransition(GLucose glucose) { + super(glucose, BURN); + } +} + +class DodgeTransition extends BlendTransition { + DodgeTransition(GLucose glucose) { + super(glucose, DODGE); + } +} + +class OverlayTransition extends BlendTransition { + OverlayTransition(GLucose glucose) { + super(glucose, OVERLAY); + } +} + +class AddTransition extends BlendTransition { + AddTransition(GLucose glucose) { + super(glucose, ADD); + } +} + +class SubtractTransition extends BlendTransition { + SubtractTransition(GLucose glucose) { + super(glucose, SUBTRACT); + } +} + +class SoftLightTransition extends BlendTransition { + SoftLightTransition(GLucose glucose) { + super(glucose, SOFT_LIGHT); + } +} + class BassPod extends SCPattern { private GraphicEQ eq = null; @@ -148,7 +226,7 @@ class BassPod extends SCPattern { } } - public void run(int deltaMs) { + public void run(double deltaMs) { eq.run(deltaMs); float bassLevel = eq.getAverageLevel(0, 5); @@ -198,7 +276,7 @@ class CubeEQ extends SCPattern { } } - public void run(int deltaMs) { + public void run(double deltaMs) { eq.run(deltaMs); float edgeConst = 2 + 30*edge.getValuef(); @@ -356,7 +434,7 @@ public class PianoKeyPattern extends SCPattern { getEnvelope(note.getPitch()).setEndVal(0, getReleaseTime()).start(); } - public void run(int deltaMs) { + public void run(double deltaMs) { int i = 0; float huef = lx.getBaseHuef(); float levelf = level.getValuef(); @@ -426,7 +504,7 @@ class CrossSections extends SCPattern { zv = z.getValuef(); } - public void run(int deltaMs) { + public void run(double deltaMs) { updateXYZVals(); float xlv = 100*xl.getValuef(); @@ -478,7 +556,7 @@ class Blinders extends SCPattern { s.modulateDurationBy(r); } - public void run(int deltaMs) { + public void run(double deltaMs) { float hv = lx.getBaseHuef(); int si = 0; for (Strip strip : model.strips) { @@ -513,7 +591,7 @@ class Psychedelia extends SCPattern { addModulator(c).trigger(); } - void run(int deltaMs) { + void run(double deltaMs) { float huev = h.getValuef(); float cv = c.getValuef(); float sv = s.getValuef(); @@ -549,7 +627,7 @@ class AskewPlanes extends SCPattern { addModulator(c = new SinLFO(-50, 50, 4000 + 1000*i * ((i % 2 == 0) ? 1 : -1))).trigger(); } - void run(int deltaMs) { + void run(double deltaMs) { av = a.getValuef(); bv = b.getValuef(); cv = c.getValuef(); @@ -568,7 +646,7 @@ class AskewPlanes extends SCPattern { } } - public void run(int deltaMs) { + public void run(double deltaMs) { float huev = lx.getBaseHuef(); // This is super fucking bizarre. But if this is a for loop, the framerate @@ -613,7 +691,7 @@ class ShiftingPlane extends SCPattern { addModulator(d).trigger(); } - public void run(int deltaMs) { + public void run(double deltaMs) { float hv = lx.getBaseHuef(); float av = a.getValuef(); float bv = b.getValuef(); @@ -669,7 +747,7 @@ class Traktor extends SCPattern { int counter = 0; - public void run(int deltaMs) { + public void run(double deltaMs) { eq.run(deltaMs); int stepThresh = (int) (40 - 39*speed.getValuef());