Mapping modified kind of right
[SugarCubes.git] / _Internals.pde
index a18c95a21ea48d57a05dd3bba15c1e254e9785ae..e2291fba576a9a3aeaf0070709fc9a9d9526bc76 100644 (file)
@@ -120,29 +120,60 @@ void setup() {
       mouseWheel(mwe.getWheelRotation());
   }}); 
   
-  
   println("Total setup: " + (millis() - startMillis) + "ms");
   println("Hit the 'p' key to toggle Panda Board output");
 }
 
+boolean[] noteState = new boolean[16];
+
 void controllerChangeReceived(rwmidi.Controller cc) {
   if (debugMode) {
     println("CC: " + cc.toString());
   }
+  //println(cc.getInput().getName());
+  int c = cc.getCC();
+  if(c==1){
+    for(int i=0; i<16; i++){
+      if(noteState[i] && i<8)  { LXParameter p = glucose.patternKnobs.get(i); p.setValue(cc.getValue()/127.0); }
+      else if(noteState[i] && i<16) { try { LXParameter p = gparams.get(i-8); p.setValue(cc.getValue()/127.0); } catch(Exception e) {} }
+    }
+  }
+  if(c==2){
+    for(int i=0; i<16; i++){
+      //sif(noteState[i] && i<8)  { println( gplay.Sliders ); }
+      //else if(noteState[i] && i<16) { try { LXParameter p = gparams.get(i-8); p.setValue(cc.getValue()/127.0); } catch(Exception e) {} }
+    }
+  }
+  
+    
+  //if(c>=16 || c<16+8){
+  //    LXParameter p = gparams.get(c-16);
+  //    p.setValue(c/127.0);     
+  //}
 }
 
+
 void noteOnReceived(Note note) {
   if (debugMode) {
     println("Note On: " + note.toString());
   }
+  int pitch = note.getPitch();  
+  if(pitch>=36 && pitch <36+16){
+    noteState[pitch-36]=true;
+  }
 }
 
 void noteOffReceived(Note note) {
   if (debugMode) {
     println("Note Off: " + note.toString());
   }
+  int pitch = note.getPitch();
+  if(pitch>=36 && pitch <36+16){
+    noteState[pitch-36]=false;
+  }
 }
 
+
 void logTime(String evt) {
   int now = millis();
   println(evt + ": " + (now - lastMillis) + "ms");
@@ -205,13 +236,25 @@ void draw() {
     debugUI.draw();
   }
   
+  // Gamma correction here. Apply a cubic to the brightness
+  // for better representation of dynamic range
+  for (int i = 0; i < colors.length; ++i) {
+    float b = brightness(colors[i]) / 100.f;
+    colors[i] = color(
+      hue(colors[i]),
+      saturation(colors[i]),
+      (b*b*b) * 100.
+    );
+  }
+  
   // TODO(mcslee): move into GLucose engine
   for (PandaDriver p : pandaBoards) {
-    p.send(colors);
+    p.sendNow(colors);
   }
 }
 
 void drawBassBox(BassBox b) {
+  /*
   float in = .15;
 
   noStroke();
@@ -225,6 +268,16 @@ void drawBassBox(BassBox b) {
   fill(#393939);
   drawBox(b.x+in, b.y+in, b.z+in, 0, 0, 0, BassBox.EDGE_WIDTH-in*2, BassBox.EDGE_HEIGHT-in*2, BassBox.EDGE_DEPTH-in*2, Cube.CHANNEL_WIDTH-in);
 
+  pushMatrix();
+  translate(b.x+(Cube.CHANNEL_WIDTH-in)/2., b.y + BassBox.EDGE_HEIGHT-in, b.z + BassBox.EDGE_DEPTH/2.);
+  float lastOffset = 0;
+  for (float offset : BoothFloor.STRIP_OFFSETS) {
+    translate(offset - lastOffset, 0, 0);
+    box(Cube.CHANNEL_WIDTH-in, 0, BassBox.EDGE_DEPTH - 2*in);
+    lastOffset = offset;
+  }
+  popMatrix();
+
   pushMatrix();
   translate(b.x + (Cube.CHANNEL_WIDTH-in)/2., b.y + BassBox.EDGE_HEIGHT/2., b.z + in);
   for (int j = 0; j < 2; ++j) {
@@ -243,7 +296,7 @@ void drawBassBox(BassBox b) {
   box(0, BassBox.EDGE_HEIGHT - in*2, Cube.CHANNEL_WIDTH-in);
   translate(BassBox.EDGE_WIDTH-2*in, 0, 0);
   box(0, BassBox.EDGE_HEIGHT - in*2, Cube.CHANNEL_WIDTH-in);
-  popMatrix();
+  popMatrix();*/
   
 }
 
@@ -315,16 +368,21 @@ void drawUI() {
     ui.drawHelpTip();
   }
   ui.drawFPS();
+  ui.drawDanText();
 }
 
 boolean uiOn = true;
 int restoreToIndex = -1;
 
+boolean doDual = false;
 void keyPressed() {
   if (mappingMode) {
     mappingTool.keyPressed();
   }
   switch (key) {
+    case 'w':
+       doDual = !doDual;
+       break;
     case '-':
     case '_':
       frameRate(--targetFramerate);
@@ -406,4 +464,3 @@ void mouseWheel(int delta) {
     eyeZ = midZ + eyeR*cos(eyeA);
   }
 }
-