From 42a424d76b6ed74ffae8d72215e912d66a3d4bf6 Mon Sep 17 00:00:00 2001 From: Mark Slee Date: Mon, 21 Oct 2013 17:00:15 -0700 Subject: [PATCH] Refactor Engine.Deck to LXEngine LXDeck --- DanUtil.pde | 1 - _Internals.pde | 6 +++--- _MIDI.pde | 26 +++++++++++++------------- _Presets.pde | 26 +++++++++++++------------- _UIImplementation.pde | 20 ++++++++++---------- code/GLucose.jar | Bin 25033 -> 25061 bytes code/HeronLX.jar | Bin 67785 -> 68996 bytes 7 files changed, 39 insertions(+), 40 deletions(-) diff --git a/DanUtil.pde b/DanUtil.pde index bdb18c0..097c61f 100644 --- a/DanUtil.pde +++ b/DanUtil.pde @@ -61,7 +61,6 @@ 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 reset () { super.setValue(dflt); } float Val () { return getValuef(); } } //---------------------------------------------------------------------------------------------------------------------------------- diff --git a/_Internals.pde b/_Internals.pde index 2e3af44..2e91381 100644 --- a/_Internals.pde +++ b/_Internals.pde @@ -125,7 +125,7 @@ void setup() { logTime("Built GLucose engine"); // Set the patterns - Engine engine = lx.engine; + LXEngine engine = lx.engine; engine.setPatterns(patterns = _leftPatterns(glucose)); engine.addDeck(_rightPatterns(glucose)); logTime("Built patterns"); @@ -156,13 +156,13 @@ void setup() { // Build overlay UI debugUI = new DebugUI(pandaMappings); overlays = new UIContext[] { - uiPatternA = new UIPatternDeck(lx.engine.getDeck(0), "PATTERN A", 4, 4, 140, 324), + uiPatternA = new UIPatternDeck(lx.engine.getDeck(GLucose.LEFT_DECK), "PATTERN A", 4, 4, 140, 324), new UIBlendMode(4, 332, 140, 86), new UIEffects(4, 422, 140, 144), new UITempo(4, 570, 140, 50), new UISpeed(4, 624, 140, 50), - new UIPatternDeck(lx.engine.getDeck(1), "PATTERN B", width-144, 4, 140, 324), + new UIPatternDeck(lx.engine.getDeck(GLucose.RIGHT_DECK), "PATTERN B", width-144, 4, 140, 324), uiMidi = new UIMidi(midiEngine, width-144, 332, 140, 158), new UIOutput(width-144, 494, 140, 106), diff --git a/_MIDI.pde b/_MIDI.pde index 4e7cc1f..8f71457 100644 --- a/_MIDI.pde +++ b/_MIDI.pde @@ -84,7 +84,7 @@ class MidiEngine { return this.midiControllers; } - public Engine.Deck getFocusedDeck() { + public LXDeck getFocusedDeck() { return lx.engine.getDeck(activeDeckIndex); } @@ -352,7 +352,7 @@ public class APC40MidiInput extends GenericDeviceMidiInput { private boolean shiftOn = false; private LXEffect releaseEffect = null; - final private Engine.Deck targetDeck; + final private LXDeck targetDeck; APC40MidiInput(MidiEngine midiEngine, MidiInputDevice d) { this(midiEngine, d, -1); @@ -363,7 +363,7 @@ public class APC40MidiInput extends GenericDeviceMidiInput { targetDeck = (deckIndex < 0) ? null : lx.engine.getDecks().get(deckIndex); } - protected Engine.Deck getTargetDeck() { + protected LXDeck getTargetDeck() { return (targetDeck != null) ? targetDeck : midiEngine.getFocusedDeck(); } @@ -440,7 +440,7 @@ public class APC40MidiInput extends GenericDeviceMidiInput { // Crossfader case 15: - lx.engine.getDeck(1).getCrossfader().setValue(value); + lx.engine.getDeck(GLucose.RIGHT_DECK).getFader().setValue(value); break; } @@ -662,7 +662,7 @@ class APC40MidiOutput implements LXParameter.Listener, GridOutput { private final MidiOutput output; private LXPattern focusedPattern = null; private LXEffect focusedEffect = null; - private final Engine.Deck targetDeck; + private final LXDeck targetDeck; APC40MidiOutput(MidiEngine midiEngine, MidiOutputDevice device) { this(midiEngine, device, -1); @@ -685,30 +685,30 @@ class APC40MidiOutput implements LXParameter.Listener, GridOutput { resetEffectParameters(); } }); - Engine.Listener deckListener = new Engine.AbstractListener() { - public void patternDidChange(Engine.Deck deck, LXPattern pattern) { + LXDeck.Listener deckListener = new LXDeck.AbstractListener() { + public void patternDidChange(LXDeck deck, LXPattern pattern) { resetPatternParameters(); } }; - for (Engine.Deck d : lx.engine.getDecks()) { + for (LXDeck d : lx.engine.getDecks()) { if (targetDeck == null || d == targetDeck) { d.addListener(deckListener); } } presetManager.addListener(new PresetListener() { - public void onPresetLoaded(Engine.Deck deck, Preset preset) { + public void onPresetLoaded(LXDeck deck, Preset preset) { if (deck == getTargetDeck()) { for (int i = 0; i < 8; ++i) { output.sendNoteOn(i, 52, (preset.index == i) ? 1 : 0); } } } - public void onPresetDirty(Engine.Deck deck, Preset preset) { + public void onPresetDirty(LXDeck deck, Preset preset) { if (deck == getTargetDeck()) { output.sendNoteOn(preset.index, 52, 2); } } - public void onPresetStored(Engine.Deck deck, Preset preset) { + public void onPresetStored(LXDeck deck, Preset preset) { if (deck == getTargetDeck()) { onPresetLoaded(deck, preset); } @@ -736,7 +736,7 @@ class APC40MidiOutput implements LXParameter.Listener, GridOutput { } private void setDPatternOutputs() { - for (Engine.Deck deck : lx.engine.getDecks()) { + for (LXDeck deck : lx.engine.getDecks()) { if (targetDeck == null || deck == targetDeck) { for (LXPattern pattern : deck.getPatterns()) { if (pattern instanceof DPat) { @@ -747,7 +747,7 @@ class APC40MidiOutput implements LXParameter.Listener, GridOutput { } } - protected Engine.Deck getTargetDeck() { + protected LXDeck getTargetDeck() { if (targetDeck != null) { return targetDeck; } diff --git a/_Presets.pde b/_Presets.pde index ca3957e..2c61125 100644 --- a/_Presets.pde +++ b/_Presets.pde @@ -1,7 +1,7 @@ interface PresetListener { - public void onPresetLoaded(Engine.Deck deck, Preset preset); - public void onPresetDirty(Engine.Deck deck, Preset preset); - public void onPresetStored(Engine.Deck deck, Preset preset); + public void onPresetLoaded(LXDeck deck, Preset preset); + public void onPresetDirty(LXDeck deck, Preset preset); + public void onPresetStored(LXDeck deck, Preset preset); public void onPresetUnloaded(); } @@ -33,9 +33,9 @@ class PresetManager implements LXParameter.Listener { } } } - for (Engine.Deck deck : lx.engine.getDecks()) { - deck.addListener(new Engine.AbstractListener() { - public void patternDidChange(Engine.Deck deck, LXPattern pattern) { + for (LXDeck deck : lx.engine.getDecks()) { + deck.addListener(new LXDeck.AbstractListener() { + public void patternDidChange(LXDeck deck, LXPattern pattern) { if (pattern != loadedPattern) { onPresetDirty(deck); } @@ -59,8 +59,8 @@ class PresetManager implements LXParameter.Listener { listeners.add(listener); } - public Engine.Deck deckForPattern(LXPattern pattern) { - for (Engine.Deck deck : lx.engine.getDecks()) { + public LXDeck deckForPattern(LXPattern pattern) { + for (LXDeck deck : lx.engine.getDecks()) { for (LXPattern p : deck.getPatterns()) { if (p == pattern) { return deck; @@ -74,11 +74,11 @@ class PresetManager implements LXParameter.Listener { onPresetDirty(deckForPattern(pattern)); } - public void select(Engine.Deck deck, int index) { + public void select(LXDeck deck, int index) { presets[index].select(deck); } - public void store(Engine.Deck deck, int index) { + public void store(LXDeck deck, int index) { presets[index].store(midiEngine.getFocusedPattern()); for (PresetListener listener : listeners) { listener.onPresetStored(deck, presets[index]); @@ -86,7 +86,7 @@ class PresetManager implements LXParameter.Listener { select(deck, index); } - public void onPresetLoaded(Engine.Deck deck, Preset preset, LXPattern pattern) { + public void onPresetLoaded(LXDeck deck, Preset preset, LXPattern pattern) { if (loadedPattern != pattern) { if (loadedPattern != null) { for (LXParameter p : loadedPattern.getParameters()) { @@ -104,7 +104,7 @@ class PresetManager implements LXParameter.Listener { } } - private void onPresetDirty(Engine.Deck deck) { + private void onPresetDirty(LXDeck deck) { if (loadedPreset != null) { for (PresetListener listener : listeners) { listener.onPresetDirty(deck, loadedPreset); @@ -186,7 +186,7 @@ class Preset { manager.write(); } - public void select(Engine.Deck deck) { + public void select(LXDeck deck) { for (LXPattern pattern : deck.getPatterns()) { if (pattern.getClass().getName().equals(className)) { for (String pLabel : parameters.keySet()) { diff --git a/_UIImplementation.pde b/_UIImplementation.pde index df3a7e4..bd303dd 100644 --- a/_UIImplementation.pde +++ b/_UIImplementation.pde @@ -13,9 +13,9 @@ class UIPatternDeck extends UIWindow { - Engine.Deck deck; + LXDeck deck; - public UIPatternDeck(Engine.Deck deck, String label, float x, float y, float w, float h) { + public UIPatternDeck(LXDeck deck, String label, float x, float y, float w, float h) { super(label, x, y, w, h); this.deck = deck; int yp = titleHeight; @@ -34,11 +34,11 @@ class UIPatternDeck extends UIWindow { parameterKnobs[ki].addToContainer(this); } - Engine.Listener lxListener = new Engine.AbstractListener() { - public void patternWillChange(Engine.Deck deck, LXPattern pattern, LXPattern nextPattern) { + LXDeck.Listener lxListener = new LXDeck.AbstractListener() { + public void patternWillChange(LXDeck deck, LXPattern pattern, LXPattern nextPattern) { patternList.redraw(); } - public void patternDidChange(Engine.Deck deck, LXPattern pattern) { + public void patternDidChange(LXDeck deck, LXPattern pattern) { patternList.redraw(); int pi = 0; for (LXParameter parameter : pattern.getParameters()) { @@ -96,8 +96,8 @@ class UIBlendMode extends UIWindow { final UIScrollList tList; (tList = new UIScrollList(1, titleHeight, w-2, 60)).setItems(items).addToContainer(this); - lx.engine.getDeck(1).addListener(new Engine.AbstractListener() { - public void blendTransitionDidChange(Engine.Deck deck, LXTransition transition) { + lx.engine.getDeck(GLucose.RIGHT_DECK).addListener(new LXDeck.AbstractListener() { + public void faderTransitionDidChange(LXDeck deck, LXTransition transition) { tList.redraw(); } }); @@ -138,7 +138,7 @@ class UICrossfader extends UIWindow { public UICrossfader(float x, float y, float w, float h) { super("CROSSFADER", x, y, w, h); - new UIParameterSlider(4, titleHeight, w-9, 32).setParameter(lx.engine.getDeck(1).getCrossfader()).addToContainer(this); + new UIParameterSlider(4, titleHeight, w-9, 32).setParameter(lx.engine.getDeck(GLucose.RIGHT_DECK).getFader()).addToContainer(this); (displayMode = new UIToggleSet(4, titleHeight + 36, w-9, 20)).setOptions(new String[] { "A", "COMP", "B" }).setValue("COMP").addToContainer(this); } @@ -521,8 +521,8 @@ class UIMidi extends UIWindow { return logMode.isActive(); } - public Engine.Deck getFocusedDeck() { - return lx.engine.getDeck(deckMode.getValue() == "A" ? 0 : 1); + public LXDeck getFocusedDeck() { + return lx.engine.getDeck(deckMode.getValue() == "A" ? GLucose.LEFT_DECK : GLucose.RIGHT_DECK); } } diff --git a/code/GLucose.jar b/code/GLucose.jar index bdaa7e9662989e4fdbfbe0b48b58424cc87d764e..8a71ba7f66197f79aff2c798d25c830c442227a4 100755 GIT binary patch delta 3307 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 Ci;n03 diff --git a/code/HeronLX.jar b/code/HeronLX.jar index de2032bc01b1c95795f10572d7aac34a11f334cd..eea96270693d7843089f9b7b5da80febe56941d0 100755 GIT binary patch delta 19140 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

Bqa$e9nI3US#b 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 B8F>Hz delta 17976 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 z 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