X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=_Internals.pde;h=f809e9389bc9159b838c128e51a7fb960393e98a;hb=5c3620000613b6d6e40e80f93cde2e8fd688cf5d;hp=e568c4ea8eadea0cde0ae11615cfb86dc3813a23;hpb=a41f334c045811daef7e319214da557b5e48143a;p=SugarCubes.git diff --git a/_Internals.pde b/_Internals.pde index e568c4e..f809e93 100644 --- a/_Internals.pde +++ b/_Internals.pde @@ -30,6 +30,7 @@ import ddf.minim.*; import ddf.minim.analysis.*; import processing.opengl.*; import rwmidi.*; +import java.lang.reflect.*; final int VIEWPORT_WIDTH = 900; final int VIEWPORT_HEIGHT = 700; @@ -39,8 +40,8 @@ final float TRAILER_WIDTH = 240; final float TRAILER_DEPTH = 97; final float TRAILER_HEIGHT = 33; -final int MaxCubeHeight = 7; -final int NumBackTowers = 9; +final int MaxCubeHeight = 5; +final int NumBackTowers = 11; int targetFramerate = 60; int startMillis, lastMillis; @@ -49,8 +50,10 @@ int startMillis, lastMillis; GLucose glucose; HeronLX lx; LXPattern[] patterns; +Effects effects; MappingTool mappingTool; PandaDriver[] pandaBoards; +PresetManager presetManager; MidiEngine midiEngine; // Display configuration mode @@ -99,7 +102,19 @@ LXPattern[] _rightPatterns(GLucose glucose) { } return rightPatterns; } - + +LXEffect[] _effectsArray(Effects effects) { + List effectList = new ArrayList(); + for (Field f : effects.getClass().getDeclaredFields()) { + try { + Object val = f.get(effects); + if (val instanceof LXEffect) { + effectList.add((LXEffect)val); + } + } catch (IllegalAccessException iax) {} + } + return effectList.toArray(new LXEffect[]{}); +} void logTime(String evt) { int now = millis(); @@ -124,15 +139,19 @@ 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"); glucose.setTransitions(transitions(glucose)); logTime("Built transitions"); - glucose.lx.addEffects(effects(glucose)); + glucose.lx.addEffects(_effectsArray(effects = new Effects())); logTime("Built effects"); + // Preset manager + presetManager = new PresetManager(); + logTime("Loaded presets"); + // MIDI devices midiEngine = new MidiEngine(); logTime("Setup MIDI devices"); @@ -150,13 +169,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), @@ -203,9 +222,9 @@ void draw() { simulationColors = sendColors = glucose.getColors(); String displayMode = uiCrossfader.getDisplayMode(); if (displayMode == "A") { - simulationColors = lx.engine.getDeck(0).getColors(); + simulationColors = lx.engine.getDeck(GLucose.LEFT_DECK).getColors(); } else if (displayMode == "B") { - simulationColors = lx.engine.getDeck(1).getColors(); + simulationColors = lx.engine.getDeck(GLucose.RIGHT_DECK).getColors(); } if (debugMode) { debugUI.maskColors(simulationColors); @@ -419,6 +438,44 @@ void keyPressed() { mappingTool.keyPressed(uiMapping); } switch (key) { + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + if (!midiEngine.isQwertyEnabled()) { + presetManager.select(midiEngine.getFocusedDeck(), key - '1'); + } + break; + + case '!': + if (!midiEngine.isQwertyEnabled()) presetManager.store(midiEngine.getFocusedDeck(), 0); + break; + case '@': + if (!midiEngine.isQwertyEnabled()) presetManager.store(midiEngine.getFocusedDeck(), 1); + break; + case '#': + if (!midiEngine.isQwertyEnabled()) presetManager.store(midiEngine.getFocusedDeck(), 2); + break; + case '$': + if (!midiEngine.isQwertyEnabled()) presetManager.store(midiEngine.getFocusedDeck(), 3); + break; + case '%': + if (!midiEngine.isQwertyEnabled()) presetManager.store(midiEngine.getFocusedDeck(), 4); + break; + case '^': + if (!midiEngine.isQwertyEnabled()) presetManager.store(midiEngine.getFocusedDeck(), 5); + break; + case '&': + if (!midiEngine.isQwertyEnabled()) presetManager.store(midiEngine.getFocusedDeck(), 6); + break; + case '*': + if (!midiEngine.isQwertyEnabled()) presetManager.store(midiEngine.getFocusedDeck(), 7); + break; + case '-': case '_': frameRate(--targetFramerate); @@ -428,7 +485,7 @@ void keyPressed() { frameRate(++targetFramerate); break; case 'b': - EFF_boom.trigger(); + effects.boom.trigger(); break; case 'd': if (!midiEngine.isQwertyEnabled()) {