From 49815cc001318d4cd59874b41cc874a259900f14 Mon Sep 17 00:00:00 2001 From: Mark Slee Date: Wed, 22 May 2013 18:37:07 -0700 Subject: [PATCH] SugarCubes sketch initial code dump --- MarkSlee.pde | 199 ++++++++++++++++++++++++++++ SugarCubes.pde | 54 ++++++++ TestPatterns.pde | 61 +++++++++ _Internals.pde | 95 ++++++++++++++ _Overlay.pde | 328 +++++++++++++++++++++++++++++++++++++++++++++++ code/GLucose.jar | Bin 0 -> 16044 bytes code/HeronLX.jar | Bin 0 -> 55699 bytes code/rwmidi.jar | Bin 0 -> 12301 bytes logo-sm.png | Bin 0 -> 6357 bytes 9 files changed, 737 insertions(+) create mode 100644 MarkSlee.pde create mode 100644 SugarCubes.pde create mode 100644 TestPatterns.pde create mode 100644 _Internals.pde create mode 100644 _Overlay.pde create mode 100644 code/GLucose.jar create mode 100644 code/HeronLX.jar create mode 100644 code/rwmidi.jar create mode 100644 logo-sm.png diff --git a/MarkSlee.pde b/MarkSlee.pde new file mode 100644 index 0000000..2df823a --- /dev/null +++ b/MarkSlee.pde @@ -0,0 +1,199 @@ +class SpaceTime extends SCPattern { + + SinLFO pos = new SinLFO(0, 15, 3000); + SinLFO rate = new SinLFO(1000, 9000, 13000); + SinLFO falloff = new SinLFO(10, 70, 5000); + float sat = 0; + + BasicKnob rateKnob = new BasicKnob("RATE", 0.5); + BasicKnob sizeKnob = new BasicKnob("SIZE", 0.5); + + public SpaceTime(GLucose glucose) { + super(glucose); + addModulator(pos).trigger(); + addModulator(rate).trigger(); + addModulator(falloff).trigger(); + pos.modulateDurationBy(rate); + addKnob(rateKnob); + addKnob(sizeKnob); + } + + public void onKnobChange(Knob knob) { + if (knob == rateKnob) { + rate.stop().setValue(9000 - 8000*knob.getValuef()); + } else if (knob == sizeKnob) { + falloff.stop().setValue(70 - 60*knob.getValuef()); + } + } + + void run(int deltaMs) { + sat += deltaMs * 0.00004; + float sVal1 = Strip.list.size() * (0.5 + 0.5*sin(sat)); + float sVal2 = Strip.list.size() * (0.5 + 0.5*cos(sat)); + + float pVal = pos.getValuef(); + float fVal = falloff.getValuef(); + + int s = 0; + for (Strip strip : Strip.list) { + int i = 0; + for (Point p : strip.points) { + colors[p.index] = color( + (lx.getBaseHuef() + s*.2 + i*3) % 360, + min(100, min(abs(s - sVal1), abs(s - sVal2))), + max(0, 100 - fVal*abs(i - pVal)) + ); + ++i; + } + } + } +} + +class Swarm extends SCPattern { + + SawLFO offset = new SawLFO(0, 16, 1000); + SinLFO rate = new SinLFO(350, 1200, 63000); + SinLFO falloff = new SinLFO(15, 50, 17000); + SinLFO fY = new SinLFO(0, 250, 19000); + SinLFO fZ = new SinLFO(0, 127, 11000); + SinLFO hOffY = new SinLFO(0, 255, 13000); + + public Swarm(GLucose glucose) { + super(glucose); + addModulator(offset).trigger(); + addModulator(rate).trigger(); + addModulator(falloff).trigger(); + addModulator(fY).trigger(); + addModulator(fZ).trigger(); + addModulator(hOffY).trigger(); + offset.modulateDurationBy(rate); + } + + float modDist(float v1, float v2, float mod) { + v1 = v1 % mod; + v2 = v2 % mod; + if (v2 > v1) { + return min(v2-v1, v1+mod-v2); + } + else { + return min(v1-v2, v2+mod-v1); + } + } + + void run(int deltaMs) { + float s = 0; + for (Strip strip : Strip.list) { + int i = 0; + for (Point p : strip.points) { + float fV = max(-1, 1 - dist(p.fy/2., p.fz, fY.getValuef()/2., fZ.getValuef()) / 64.); + colors[p.index] = color( + (lx.getBaseHuef() + 0.3 * abs(p.fy - hOffY.getValuef())) % 360, + constrain(80 + 40 * fV, 0, 100), + constrain(100 - (30 - fV * falloff.getValuef()) * modDist(i + (s*63)%61, offset.getValuef(), 16), 0, 100) + ); + ++i; + } + ++s; + } + } +} + +class SwipeTransition extends SCTransition { + SwipeTransition(GLucose glucose) { + super(glucose); + setDuration(5000); + } + + void computeBlend(int[] c1, int[] c2, double progress) { + float bleed = 50.; + float yPos = (float) (-bleed + progress * (255. + bleed)); + for (Point p : Point.list) { + float d = (p.fy - yPos) / 50.; + if (d < 0) { + colors[p.index] = c2[p.index]; + } else if (d > 1) { + colors[p.index] = c1[p.index]; + } else { + colors[p.index] = lerpColor(c2[p.index], c1[p.index], d, RGB); + } + } + } +} + +class CubeEQ extends SCPattern { + + private FFT fft = null; + private LinearEnvelope[] bandVals = null; + private int avgSize; + + private final BasicKnob thrsh = new BasicKnob("LVL", 0.35); + private final BasicKnob range = new BasicKnob("RANG", 0.45); + private final BasicKnob edge = new BasicKnob("EDGE", 0.5); + private final BasicKnob speed = new BasicKnob("SPD", 0.5); + private final BasicKnob tone = new BasicKnob("TONE", 0.5); + private final BasicKnob clr = new BasicKnob("CLR", 0.5); + + public CubeEQ(GLucose glucose) { + super(glucose); + addKnob(thrsh); + addKnob(range); + addKnob(edge); + addKnob(speed); + addKnob(tone); + addKnob(clr); + } + + protected void onActive() { + if (this.fft == null) { + this.fft = new FFT(lx.audioInput().bufferSize(), lx.audioInput().sampleRate()); + this.fft.window(FFT.HAMMING); + this.fft.logAverages(40, 1); + this.avgSize = this.fft.avgSize(); + this.bandVals = new LinearEnvelope[this.avgSize]; + for (int i = 0; i < this.bandVals.length; ++i) { + this.addModulator(this.bandVals[i] = (new LinearEnvelope(0, 0, 700+i*4))).trigger(); + } + } + } + + public void run(int deltaMs) { + this.fft.forward(this.lx.audioInput().mix); + float toneConst = .35 + .4 * (tone.getValuef() - 0.5); + float edgeConst = 2 + 30*(edge.getValuef()*edge.getValuef()*edge.getValuef()); + + for (int i = 0; i < avgSize; ++i) { + float value = this.fft.getAvg(i); + value = 20*log(1 + sqrt(value)); + float sqdist = avgSize - i; + value -= toneConst*sqdist*sqdist + .5*sqdist; + value *= 6; + if (value > this.bandVals[i].getValue()) { + this.bandVals[i].setEndVal(value, 40).trigger(); + } else { + this.bandVals[i].setEndVal(value, 1000 - 900*speed.getValuef()).trigger(); + } + } + + float jBase = 120 - 360*thrsh.getValuef(); + float jConst = 300.*(1-range.getValuef()); + float clrConst = 1.1 + clr.getValuef(); + + for (Point p : Point.list) { + float avgIndex = constrain((p.fy / 256. * avgSize), 0, avgSize-2); + int avgFloor = (int) avgIndex; + float j = jBase + jConst * (p.fz / 128.); + float value = lerp( + this.bandVals[avgFloor].getValuef(), + this.bandVals[avgFloor+1].getValuef(), + avgIndex-avgFloor + ); + + float b = constrain(edgeConst * (value - j), 0, 100); + colors[p.index] = color( + (480 + lx.getBaseHuef() - min(clrConst*p.fz, 120)) % 360, + 100, + b); + } + } +} + diff --git a/SugarCubes.pde b/SugarCubes.pde new file mode 100644 index 0000000..8428367 --- /dev/null +++ b/SugarCubes.pde @@ -0,0 +1,54 @@ +/** + * +-+-+-+-+-+ +-+-+-+-+-+ + * / /| |\ \ + * / / + + \ \ + * +-+-+-+-+-+ | +-+-+-+-+ | +-+-+-+-+-+ + * | | + / \ + | | + * + THE + / / \ \ + CUBES + + * | |/ +-+-+-+-+-+-+-+ \| | + * +-+-+-+-+-+ | | +-+-+-+-+-+ + * + + + * | SUGAR | + * + + + * | | + * +-+-+-+-+-+-+-+ + * + * Welcome to the Sugar Cubes! This Processing sketch is a fun place to build + * animations, effects, and interactions for the platform. Most of the icky + * code guts are embedded in the GLucose library extension. If you're an + * artist, you shouldn't need to worry about any of that. + * + * Below, you will find definitions of the Patterns, Effects, and Interactions. + * If you're an artist, create a new tab in the Processing environment with + * your name. Implement your classes there, and add them to the list below. + */ + +LXPattern[] patterns(GLucose glucose) { + return new LXPattern[] { + new SpaceTime(glucose), + new Swarm(glucose), + new CubeEQ(glucose), + + // Basic test patterns for reference, not art +// new TestHuePattern(glucose), +// new TestXPattern(glucose), +// new TestYPattern(glucose), +// new TestZPattern(glucose), + }; +} + +LXTransition[] transitions(GLucose glucose) { + return new LXTransition[] { + new DissolveTransition(lx).setDuration(3000), + new SwipeTransition(glucose), + new FadeTransition(lx).setDuration(2000), + }; +} + +LXEffect[] effects(GLucose glucose) { + return new LXEffect[] { + new FlashEffect(lx), + new DesaturationEffect(lx), + }; +} + diff --git a/TestPatterns.pde b/TestPatterns.pde new file mode 100644 index 0000000..f54e888 --- /dev/null +++ b/TestPatterns.pde @@ -0,0 +1,61 @@ +class TestHuePattern extends SCPattern { + public TestHuePattern(GLucose glucose) { + super(glucose); + } + public void run(int deltaMs) { + for (int i = 0; i < colors.length; ++i) { + colors[i] = color(lx.getBaseHuef(), 100, 100); + } + } +} + +class TestXPattern extends SCPattern { + private SinLFO xPos = new SinLFO(0, 127, 4000); + public TestXPattern(GLucose glucose) { + super(glucose); + addModulator(xPos).trigger(); + } + public void run(int deltaMs) { + for (Point p : Point.list) { + colors[p.index] = color( + lx.getBaseHuef(), + 100, + max(0, 100 - abs(p.fx - xPos.getValuef())) + ); + } + } +} + +class TestYPattern extends SCPattern { + private SinLFO yPos = new SinLFO(0, 255, 4000); + public TestYPattern(GLucose glucose) { + super(glucose); + addModulator(yPos).trigger(); + } + public void run(int deltaMs) { + for (Point p : Point.list) { + colors[p.index] = color( + lx.getBaseHuef(), + 100, + max(0, 100 - abs(p.fy - yPos.getValuef())) + ); + } + } +} + +class TestZPattern extends SCPattern { + private SinLFO zPos = new SinLFO(0, 127, 4000); + public TestZPattern(GLucose glucose) { + super(glucose); + addModulator(zPos).trigger(); + } + public void run(int deltaMs) { + for (Point p : Point.list) { + colors[p.index] = color( + lx.getBaseHuef(), + 100, + max(0, 100 - abs(p.fz - zPos.getValuef())) + ); + } + } +} diff --git a/_Internals.pde b/_Internals.pde new file mode 100644 index 0000000..d040f11 --- /dev/null +++ b/_Internals.pde @@ -0,0 +1,95 @@ +/** + * If you are an artist, you may ignore this file! It just sets + * up the framework to run the patterns. Should not need modification + * for general animation work. + */ + +import glucose.*; +import glucose.control.*; +import glucose.pattern.*; +import glucose.transition.*; +import glucose.model.*; +import heronarts.lx.*; +import heronarts.lx.effect.*; +import heronarts.lx.pattern.*; +import heronarts.lx.modulator.*; +import heronarts.lx.transition.*; +import ddf.minim.*; +import ddf.minim.analysis.*; +import processing.opengl.*; +import java.lang.reflect.*; + +final int VIEWPORT_WIDTH = 900; +final int VIEWPORT_HEIGHT = 700; +final int TARGET_FRAMERATE = 45; + +int startMillis, lastMillis; +GLucose glucose; +HeronLX lx; +LXPattern[] patterns; +LXTransition[] transitions; +LXEffect[] effects; +OverlayUI ui; +int activeTransitionIndex = 0; + +void setup() { + startMillis = lastMillis = millis(); + + // Initialize the Processing graphics environment + size(VIEWPORT_WIDTH, VIEWPORT_HEIGHT, OPENGL); + frameRate(TARGET_FRAMERATE); + // hint(ENABLE_OPENGL_4X_SMOOTH); // no discernable improvement? + logTime("Created viewport"); + + // Create the GLucose engine to run the cubes + glucose = new GLucose(this); + lx = glucose.lx; + logTime("Built GLucose engine"); + + // Set the patterns + glucose.lx.setPatterns(patterns = patterns(glucose)); + logTime("Built patterns"); + glucose.lx.addEffects(effects = effects(glucose)); + logTime("Built effects"); + transitions = transitions(glucose); + logTime("Built transitions"); + + // Build overlay UI + ui = new OverlayUI(); + logTime("Built overlay UI"); + + // MIDI devices + MidiKnobController.initializeStandardDevices(glucose); + logTime("Setup MIDI controllers"); + + println("Total setup: " + (millis() - startMillis) + "ms"); +} + +void logTime(String evt) { + int now = millis(); + println(evt + ": " + (now - lastMillis) + "ms"); + lastMillis = now; +} + +void draw() { + // The glucose engine deals with the core simulation here, we don't need + // to do anything specific. This method just needs to exist. +} + +void drawUI() { + if (uiOn) { + ui.draw(); + } else { + ui.drawHelpTip(); + } + ui.drawFPS(); +} + +boolean uiOn = true; +void keyPressed() { + if (key == 'u') { + uiOn = !uiOn; + } +} + + diff --git a/_Overlay.pde b/_Overlay.pde new file mode 100644 index 0000000..e212e1e --- /dev/null +++ b/_Overlay.pde @@ -0,0 +1,328 @@ +/** + * Overlay UI that indicates pattern control, etc. This will be moved + * into the Processing library once it is stabilized and need not be + * regularly modified. + */ +class OverlayUI { + + private final PFont titleFont = createFont("Myriad Pro", 10); + private final PFont itemFont = createFont("Myriad Pro", 11); + private final PFont knobFont = titleFont; + private final int w = 140; + private final int leftPos; + private final int leftTextPos; + private final int lineHeight = 20; + private final int sectionSpacing = 12; + private final int tempoHeight = 20; + private final int knobSize = 28; + private final int knobSpacing = 6; + private final int knobLabelHeight = 14; + private final color lightBlue = #666699; + private final color lightGreen = #669966; + + private final String[] patternNames; + private final String[] transitionNames; + private final String[] effectNames; + + private PImage logo; + + private int firstPatternY; + private int firstTransitionY; + private int firstEffectY; + private int firstKnobY; + private int tempoY; + + private Method patternStateMethod; + private Method transitionStateMethod; + private Method effectStateMethod; + + OverlayUI() { + leftPos = width - w; + leftTextPos = leftPos + 4; + logo = loadImage("logo-sm.png"); + + patternNames = classNameArray(patterns); + transitionNames = classNameArray(transitions); + effectNames = classNameArray(effects); + + try { + patternStateMethod = getClass().getMethod("getState", LXPattern.class); + effectStateMethod = getClass().getMethod("getState", LXEffect.class); + transitionStateMethod = getClass().getMethod("getState", LXTransition.class); + } catch (Exception x) { + throw new RuntimeException(x); + } + } + + void drawHelpTip() { + textFont(itemFont); + textAlign(RIGHT); + text("Tap 'u' to restore UI", width-4, height-6); + } + + void draw() { + image(logo, 4, 4); + + stroke(color(0, 0, 100)); + // fill(color(0, 0, 50, 50)); // alpha is bad for perf + fill(color(0, 0, 30)); + rect(leftPos-1, -1, w+2, height+2); + + int yPos = 0; + firstPatternY = yPos + lineHeight + 6; + yPos = drawObjectList(yPos, "PATTERN", patterns, patternNames, patternStateMethod); + + yPos += sectionSpacing; + yPos = drawObjectList(yPos, "CONTROL", null, null, null); + yPos += 6; + firstKnobY = yPos; + int xPos = leftTextPos; + for (int i = 0; i < glucose.NUM_PATTERN_KNOBS/2; ++i) { + drawKnob(xPos, yPos, knobSize, glucose.patternKnobs[i]); + drawKnob(xPos, yPos + knobSize + knobSpacing + knobLabelHeight, knobSize, glucose.patternKnobs[glucose.NUM_PATTERN_KNOBS/2 + i]); + xPos += knobSize + knobSpacing; + } + yPos += 2*(knobSize + knobLabelHeight) + knobSpacing; + + yPos += sectionSpacing; + firstTransitionY = yPos + lineHeight + 6; + yPos = drawObjectList(yPos, "TRANSITION", transitions, transitionNames, transitionStateMethod); + + yPos += sectionSpacing; + firstEffectY = yPos + lineHeight + 6; + yPos = drawObjectList(yPos, "FX", effects, effectNames, effectStateMethod); + + yPos += sectionSpacing; + yPos = drawObjectList(yPos, "TEMPO", null, null, null); + yPos += 6; + tempoY = yPos; + stroke(#111111); + fill(tempoDown ? lightGreen : color(0, 0, 35 - 8*lx.tempo.rampf())); + rect(leftPos + 4, yPos, w - 8, tempoHeight); + fill(0); + textAlign(CENTER); + text("" + ((int)(lx.tempo.bpmf() * 100) / 100.), leftPos + w/2., yPos + tempoHeight - 6); + yPos += tempoHeight; + + fill(#999999); + textFont(itemFont); + textAlign(LEFT); + text("Tap 'u' to hide UI (~+3FPS)", leftTextPos, height-6); + } + + public Knob getOrNull(List items, int index) { + if (index < items.size()) { + return items.get(index); + } + return null; + } + + public void drawFPS() { + textFont(titleFont); + textAlign(LEFT); + fill(#666666); + text("FPS: " + (((int)(frameRate * 10)) / 10.), 4, height-6); + } + + private final int STATE_DEFAULT = 0; + private final int STATE_ACTIVE = 1; + private final int STATE_PENDING = 2; + + public int getState(LXPattern p) { + if (p == lx.getPattern()) { + return STATE_ACTIVE; + } else if (p == lx.getNextPattern()) { + return STATE_PENDING; + } + return STATE_DEFAULT; + } + + public int getState(LXEffect e) { + return e.isEnabled() ? STATE_ACTIVE : STATE_DEFAULT; + } + + public int getState(LXTransition t) { + if (t == lx.getTransition()) { + return STATE_PENDING; + } else if (t == transitions[activeTransitionIndex]) { + return STATE_ACTIVE; + } + return STATE_DEFAULT; + } + + protected int drawObjectList(int yPos, String title, Object[] items, Method stateMethod) { + return drawObjectList(yPos, title, items, classNameArray(items), stateMethod); + } + + private int drawObjectList(int yPos, String title, Object[] items, String[] names, Method stateMethod) { + noStroke(); + fill(#aaaaaa); + textFont(titleFont); + textAlign(LEFT); + text(title, leftTextPos, yPos += lineHeight); + if (items != null) { + textFont(itemFont); + color textColor; + boolean even = true; + for (int i = 0; i < items.length; ++i) { + Object o = items[i]; + int state = STATE_DEFAULT; + try { + state = ((Integer) stateMethod.invoke(this, o)).intValue(); + } catch (Exception x) { + throw new RuntimeException(x); + } + switch (state) { + case STATE_ACTIVE: + fill(lightGreen); + textColor = #eeeeee; + break; + case STATE_PENDING: + fill(lightBlue); + textColor = color(0, 0, 75 + 15*sin(millis()/200.));; + break; + default: + textColor = 0; + fill(even ? #666666 : #777777); + break; + } + rect(leftPos, yPos+6, width, lineHeight); + fill(textColor); + text(names[i], leftTextPos, yPos += lineHeight); + even = !even; + } + } + return yPos; + } + + private void drawKnob(int xPos, int yPos, int knobSize, Knob knob) { + final float knobIndent = .4; + final float knobValue = knob.getValuef(); + String knobLabel = knob.getLabel(); + if (knobLabel.length() > 4) { + knobLabel = knobLabel.substring(0, 4); + } else if (knobLabel.length() == 0) { + knobLabel = "-"; + } + + ellipseMode(CENTER); + fill(#222222); + arc(xPos + knobSize/2, yPos + knobSize/2, knobSize, knobSize, HALF_PI + knobIndent, HALF_PI + knobIndent + (TWO_PI-2*knobIndent)); + + fill(lightGreen); + arc(xPos + knobSize/2, yPos + knobSize/2, knobSize, knobSize, HALF_PI + knobIndent, HALF_PI + knobIndent + (TWO_PI-2*knobIndent)*knobValue); + + fill(#333333); + ellipse(xPos + knobSize/2, yPos + knobSize/2, knobSize/2, knobSize/2); + + fill(0); + rect(xPos, yPos + knobSize + 2, knobSize, knobLabelHeight - 2); + fill(#999999); + textAlign(CENTER); + textFont(knobFont); + text(knobLabel, xPos + knobSize/2, yPos + knobSize + knobLabelHeight - 2); + + } + + private String[] classNameArray(Object[] objects) { + if (objects == null) { + return null; + } + String[] names = new String[objects.length]; + for (int i = 0; i < objects.length; ++i) { + names[i] = className(objects[i]); + } + return names; + } + + private String className(Object p) { + String s = p.getClass().getName(); + int li; + if ((li = s.lastIndexOf(".")) > 0) { + s = s.substring(li + 1); + } + if (s.indexOf("SugarCubes$") == 0) { + return s.substring("SugarCubes$".length()); + } + return s; + } + + private int knobIndex = -1; + private int lastY; + private int releaseEffect = -1; + private boolean tempoDown = false; + + public void mousePressed() { + lastY = mouseY; + knobIndex = -1; + releaseEffect = -1; + if (mouseY > tempoY) { + if (mouseY - tempoY < tempoHeight) { + lx.tempo.tap(); + tempoDown = true; + } + } else if (mouseY > firstEffectY) { + int effectIndex = (mouseY - firstEffectY) / lineHeight; + if (effectIndex < effects.length) { + if (effects[effectIndex].isMomentary()) { + effects[effectIndex].enable(); + releaseEffect = effectIndex; + } else { + effects[effectIndex].toggle(); + } + } + } else if (mouseY > firstTransitionY) { + int transitionIndex = (mouseY - firstTransitionY) / lineHeight; + if (transitionIndex < transitions.length) { + activeTransitionIndex = transitionIndex; + } + } else if ((mouseY >= firstKnobY) && (mouseY < firstKnobY + 2*(knobSize+knobLabelHeight) + knobSpacing)) { + knobIndex = (mouseX - leftTextPos) / (knobSize + knobSpacing); + if (mouseY >= firstKnobY + knobSize + knobLabelHeight + knobSpacing) { + knobIndex += glucose.NUM_PATTERN_KNOBS / 2; + } + } else if (mouseY > firstPatternY) { + int patternIndex = (mouseY - firstPatternY) / lineHeight; + if (patternIndex < patterns.length) { + patterns[patternIndex].setTransition(transitions[activeTransitionIndex]); + lx.goIndex(patternIndex); + } + } + } + + public void mouseDragged() { + int dy = lastY - mouseY; + lastY = mouseY; + if (knobIndex >= 0 && knobIndex < glucose.NUM_PATTERN_KNOBS) { + Knob k = glucose.patternKnobs[knobIndex]; + k.setValue(k.getValuef() + dy*.01); + } + } + + public void mouseReleased() { + tempoDown = false; + if (releaseEffect >= 0) { + effects[releaseEffect].trigger(); + releaseEffect = -1; + } + } +} + +void mousePressed() { + if (mouseX > ui.leftPos) { + ui.mousePressed(); + } +} + +void mouseReleased() { + if (mouseX > ui.leftPos) { + ui.mouseReleased(); + } +} + +void mouseDragged() { + if (mouseX > ui.leftPos) { + ui.mouseDragged(); + } +} + diff --git a/code/GLucose.jar b/code/GLucose.jar new file mode 100644 index 0000000000000000000000000000000000000000..6ae9494db03c46ef1760edf5d567daf30ae4c0f4 GIT binary patch literal 16044 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 literal 0 HcmV?d00001 diff --git a/code/HeronLX.jar b/code/HeronLX.jar new file mode 100644 index 0000000000000000000000000000000000000000..2724cc6f9ac1e35c17c8e5a0db2f16386395f128 GIT binary patch literal 55699 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 M0tSZCefzKf2coHjpa1{> literal 0 HcmV?d00001 diff --git a/code/rwmidi.jar b/code/rwmidi.jar new file mode 100644 index 0000000000000000000000000000000000000000..4788ff68beb23ae45330764ea00ed4c45f9d03aa GIT binary patch literal 12301 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 bw=YzXfqbL9{$Uo7LD=6u?VdjlILQA2gp{60 literal 0 HcmV?d00001 diff --git a/logo-sm.png b/logo-sm.png new file mode 100644 index 0000000000000000000000000000000000000000..3c7aa8365d615be55b39292080043fccd1ddc2c8 GIT binary patch literal 6357 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

}++oWb+dQ*MLzKLr>7 XpdrNOE`scK00000NkvXXu0mjfbF(K> literal 0 HcmV?d00001 -- 2.34.1