final int VIEWPORT_WIDTH = 900;
final int VIEWPORT_HEIGHT = 700;
-final int TARGET_FRAMERATE = 45;
+
+int targetFramerate = 30;
int startMillis, lastMillis;
GLucose glucose;
boolean pandaBoardsEnabled = false;
+boolean debugMode = false;
+
void setup() {
startMillis = lastMillis = millis();
// Initialize the Processing graphics environment
size(VIEWPORT_WIDTH, VIEWPORT_HEIGHT, OPENGL);
- frameRate(TARGET_FRAMERATE);
+ frameRate(targetFramerate);
noSmooth();
// hint(ENABLE_OPENGL_4X_SMOOTH); // no discernable improvement?
logTime("Created viewport");
// Create the GLucose engine to run the cubes
glucose = new GLucose(this, new SCMapping());
lx = glucose.lx;
+ lx.enableKeyboardTempo();
logTime("Built GLucose engine");
// Set the patterns
glucose.lx.setPatterns(patterns = patterns(glucose));
- mappingTool = new MappingTool(glucose);
logTime("Built patterns");
glucose.lx.addEffects(effects = effects(glucose));
logTime("Built effects");
- transitions = transitions(glucose);
+ glucose.setTransitions(transitions = transitions(glucose));
logTime("Built transitions");
// Build output driver
int[][] frontChannels = glucose.mapping.buildFrontChannelList();
int[][] rearChannels = glucose.mapping.buildRearChannelList();
int[][] flippedRGB = glucose.mapping.buildFlippedRGBList();
+ mappingTool = new MappingTool(glucose, frontChannels, rearChannels);
pandaFront = new PandaDriver(new NetAddress("192.168.1.28", 9001), glucose.model, frontChannels, flippedRGB);
pandaRear = new PandaDriver(new NetAddress("192.168.1.29", 9001), glucose.model, rearChannels, flippedRGB);
logTime("Build PandaDriver");
logTime("Built overlay UI");
// MIDI devices
- SCMidiDevices.initializeStandardDevices(glucose, controlUI.patternKnobs, controlUI.transitionKnobs, controlUI.effectKnobs);
+ for (MidiInputDevice d : RWMidi.getInputDevices()) {
+ d.createInput(this);
+ }
+ SCMidiDevices.initializeStandardDevices(glucose);
logTime("Setup MIDI devices");
println("Total setup: " + (millis() - startMillis) + "ms");
println("Hit the 'p' key to toggle Panda Board output");
}
+void controllerChangeReceived(rwmidi.Controller cc) {
+ if (debugMode) {
+ println("CC: " + cc.toString());
+ }
+}
+
+void noteOnReceived(Note note) {
+ if (debugMode) {
+ println("Note On: " + note.toString());
+ }
+}
+
+void noteOffReceived(Note note) {
+ if (debugMode) {
+ println("Note Off: " + note.toString());
+ }
+}
+
void logTime(String evt) {
int now = millis();
println(evt + ": " + (now - lastMillis) + "ms");
mappingTool.keyPressed();
}
switch (key) {
+ case '-':
+ case '_':
+ frameRate(--targetFramerate);
+ break;
+ case '=':
+ case '+':
+ frameRate(++targetFramerate);
+ break;
+ case 'd':
+ debugMode = !debugMode;
+ println("Debug output: " + (debugMode ? "ON" : "OFF"));
case 'm':
mappingMode = !mappingMode;
if (mappingMode) {