X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=MarkSlee.pde;h=5d08a8600c805c7d5aeee90333a77a62769cf144;hb=a8d55ade10d68a95188105282c2c453816b20708;hp=a67f719de99eadc90367791df291c75149e682d9;hpb=6702151ac6a806d916403b2a60e3dc1e52b712aa;p=SugarCubes.git diff --git a/MarkSlee.pde b/MarkSlee.pde index a67f719..5d08a86 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(); @@ -313,11 +391,7 @@ public class PianoKeyPattern extends SCPattern { PianoKeyPattern(GLucose glucose) { super(glucose); - - for (MidiInputDevice input : RWMidi.getInputDevices()) { - input.createInput(this); - } - + addParameter(attack); addParameter(release); addParameter(level); @@ -356,7 +430,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 +500,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 +552,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 +587,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 +623,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 +642,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 +687,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 +743,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()); @@ -720,6 +794,9 @@ class ColorFuckerEffect extends SCEffect { } public void doApply(int[] colors) { + if (!enabled) { + return; + } float bMod = bright.getValuef(); float sMod = sat.getValuef(); float hMod = hueShift.getValuef();