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;
LXPattern[] patterns;
MappingTool mappingTool;
PandaDriver[] pandaBoards;
+PresetManager presetManager;
MidiEngine midiEngine;
-color[] threadColors;
// Display configuration mode
boolean mappingMode = false;
boolean uiOn = true;
LXPattern restoreToPattern = null;
PImage logo;
+float[] hsb = new float[3];
// Handles to UI objects
UIContext[] overlays;
glucose = new GLucose(this, buildModel());
lx = glucose.lx;
lx.enableKeyboardTempo();
- threadColors = new color[lx.total];
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.lx.addEffects(effects(glucose));
logTime("Built effects");
+ // Preset manager
+ presetManager = new PresetManager();
+ logTime("Loaded presets");
+
// MIDI devices
midiEngine = new MidiEngine();
+ presetManager.setMidiEngine(midiEngine);
logTime("Setup MIDI devices");
// Build output driver
// 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),
// Gamma correction here. Apply a cubic to the brightness
// for better representation of dynamic range
for (int i = 0; i < sendColors.length; ++i) {
- float b = brightness(sendColors[i]) / 100.f;
- sendColors[i] = color(
- hue(sendColors[i]),
- saturation(sendColors[i]),
- (b*b*b) * 100.
- );
+ lx.RGBtoHSB(sendColors[i], hsb);
+ float b = hsb[2];
+ sendColors[i] = lx.hsb(360.*hsb[0], 100.*hsb[1], 100.*(b*b*b));
}
// TODO(mcslee): move into GLucose engine