Difference between revisions of "Team:NYU Shanghai/Code"

Line 74: Line 74:
 
<div id="BMG code">
 
<div id="BMG code">
 
   <h5 id="BMG" class="collapsed" onclick="collapse();expandBMG()"><span class="noselect">Bacterial Music Generator</span></h5>
 
   <h5 id="BMG" class="collapsed" onclick="collapse();expandBMG()"><span class="noselect">Bacterial Music Generator</span></h5>
<p id="BMGText">//main
+
<p id="BMGText">
import processing.video.*;
+
//main
import arb.soundcipher.*;
+
<br>import processing.video.*;
import blobDetection.*;
+
<br>import arb.soundcipher.*;
 +
<br>import blobDetection.*;
  
Capture video_sequencer, video_rack;
+
<br><br>Capture video_sequencer, video_rack;
SoundCipher sc = new SoundCipher(this);
+
<br>SoundCipher sc = new SoundCipher(this);
  
int grid_size=20;
+
<br><br>int grid_size=20;
int grid_num=16;
+
<br>int grid_num=16;
int window_size;
+
<br>int window_size;
int window_height;
+
<br>int window_height;
int block_number=3;
+
<br>int block_number=3;
  
int interval=4;
+
<br><br>int interval=4;
int margin;
+
<br>int margin;
int n=0;//iterator for play()
+
<br>int n=0;//iterator for play()
  
boolean[] camera= new boolean[block_number];
+
<br><br>boolean[] camera= new boolean[block_number];
boolean[] music=new boolean[block_number];
+
<br>boolean[] music=new boolean[block_number];
boolean tube=false;
+
<br>boolean tube=false;
int[] volume=new int[block_number];
+
<br>int[] volume=new int[block_number];
  
Sequencer[] sequencer= new Sequencer[block_number];
+
<br><br>Sequencer[] sequencer= new Sequencer[block_number];
Sequencer_video sequencer_video;
+
<br>Sequencer_video sequencer_video;
Rack rack;
+
<br>Rack rack;
  
void setup() {
+
<br><br>void setup() {
   volume[0]=0;
+
   <br>volume[0]=0;
   volume[1]=0;
+
   <br>volume[1]=0;
   volume[2]=0;
+
   <br>volume[2]=0;
   window_size=displayWidth;
+
   <br>window_size=displayWidth;
   window_height=displayHeight;
+
   <br>window_height=displayHeight;
  
   margin=(window_size-(grid_num*(grid_size+interval)+interval)
+
   <br><br>margin=(window_size-(grid_num*(grid_size+interval)+interval)
    *block_number)/(block_number+1);
+
  <br>*block_number)/(block_number+1);
  
   size(window_size, window_height);
+
   <br>size(window_size, window_height);
  
   //empty tracks
+
   <br><br>//empty tracks
   for (int i=0; i<block_number; i++) {
+
   <br>for (int i=0; i<block_number; i++) {
     camera[i]=false;
+
     <br>camera[i]=false;
     music[i]=false;
+
     <br>music[i]=false;
 
   }
 
   }
  
   make_empty();
+
   <br><br>make_empty();
  
   String[] cameras = Capture.list();
+
   <br><br>String[] cameras = Capture.list();
 
    
 
    
   video_sequencer = new Capture(this, cameras[0]);  
+
   <br><br>video_sequencer = new Capture(this, cameras[0]);  
   video_sequencer.start();  
+
   <br>video_sequencer.start();  
   sequencer_video=new Sequencer_video(video_sequencer, sc, grid_num, grid_size, interval);  
+
   <br>sequencer_video=new Sequencer_video(video_sequencer, sc, grid_num, grid_size, interval);  
  
   video_rack = new Capture(this, cameras[15]);
+
   <br><br>video_rack = new Capture(this, cameras[15]);
   video_rack.start();
+
   <br>video_rack.start();
   rack=new Rack(video_rack, sc, window_size, window_height,  
+
   <br>rack=new Rack(video_rack, sc, window_size, window_height,  
   window_height-margin-grid_num*(grid_size+interval));
+
   <br>window_height-margin-grid_num*(grid_size+interval));
  
   frameRate(4);
+
   <br><br>frameRate(4);
}
+
<br>}
  
void draw() {
+
<br><br>void draw() {
  background(0);
+
<br>background(0);
   if (tube) {
+
   <br>if (tube) {
     rack.get_color();
+
     <br>rack.get_color();
     rack.draw_rack();
+
     <br>rack.draw_rack();
     rack.glow(n);
+
     <br>rack.glow(n);
     rack.play_sounds(n);
+
     <br>rack.play_sounds(n);
 
   }
 
   }
  
   for (int i=0; i<block_number; i++) {
+
   <br><br>for (int i=0; i<block_number; i++) {
     sequencer[i].draw_grid();
+
     <br>sequencer[i].draw_grid();
     if (camera[i]&&!music[i]) {
+
     <br>if (camera[i]&&!music[i]) {
       sequencer_video.position(pos_x(i), margin);
+
       <br>sequencer_video.position(pos_x(i), margin);
       sequencer_video.grid_off();
+
       <br>sequencer_video.grid_off();
       sequencer_video.bd();
+
       <br>sequencer_video.bd();
       sequencer_video.bd_draw(n);
+
       <br>sequencer_video.bd_draw(n);
     } else if (camera[i]&&music[i]) {
+
     <br>} else if (camera[i]&&music[i]) {
       sequencer_video.position(pos_x(i), margin);
+
       <br>sequencer_video.position(pos_x(i), margin);
       sequencer_video.grid_on();
+
       <br>sequencer_video.grid_on();
       sequencer_video.bd();
+
       <br>sequencer_video.bd();
       sequencer_video.bd_draw(n);
+
       <br>sequencer_video.bd_draw(n);
     } else if (!camera[i]&&music[i]) {
+
     <br>} else if (!camera[i]&&music[i]) {
       sequencer[i].set_volume(volume[i]);
+
       <br>sequencer[i].set_volume(volume[i]);
       sequencer[i].play_sounds(n);
+
       <br>sequencer[i].play_sounds(n);
       sequencer[i].glow(n);
+
       <br>sequencer[i].glow(n);
     }
+
     <br>}
   }
+
   <br>}
  
 
   n++;
 
   n++;
Line 1,014: Line 1,015:
 
   }
 
   }
 
}
 
}
 +
 +
 +
 +
 +
 +
 +
<br><br>Source: blob detection
 +
http://www.v3ga.net/processing/BlobDetection/
 +
 +
<br><br>soundcipher
 +
http://explodingart.com/soundcipher/
 +
 +
  
  

Revision as of 06:09, 10 September 2015

Code

//main
import processing.video.*;
import arb.soundcipher.*;
import blobDetection.*;

Capture video_sequencer, video_rack;
SoundCipher sc = new SoundCipher(this);

int grid_size=20;
int grid_num=16;
int window_size;
int window_height;
int block_number=3;

int interval=4;
int margin;
int n=0;//iterator for play()

boolean[] camera= new boolean[block_number];
boolean[] music=new boolean[block_number];
boolean tube=false;
int[] volume=new int[block_number];

Sequencer[] sequencer= new Sequencer[block_number];
Sequencer_video sequencer_video;
Rack rack;

void setup() {
volume[0]=0;
volume[1]=0;
volume[2]=0;
window_size=displayWidth;
window_height=displayHeight;

margin=(window_size-(grid_num*(grid_size+interval)+interval)
*block_number)/(block_number+1);
size(window_size, window_height);

//empty tracks
for (int i=0; icamera[i]=false;
music[i]=false; }

make_empty();

String[] cameras = Capture.list();

video_sequencer = new Capture(this, cameras[0]);
video_sequencer.start();
sequencer_video=new Sequencer_video(video_sequencer, sc, grid_num, grid_size, interval);

video_rack = new Capture(this, cameras[15]);
video_rack.start();
rack=new Rack(video_rack, sc, window_size, window_height,
window_height-margin-grid_num*(grid_size+interval));

frameRate(4);
}

void draw() {
background(0);
if (tube) {
rack.get_color();
rack.draw_rack();
rack.glow(n);
rack.play_sounds(n); }

for (int i=0; isequencer[i].draw_grid();
if (camera[i]&&!music[i]) {
sequencer_video.position(pos_x(i), margin);
sequencer_video.grid_off();
sequencer_video.bd();
sequencer_video.bd_draw(n);
} else if (camera[i]&&music[i]) {
sequencer_video.position(pos_x(i), margin);
sequencer_video.grid_on();
sequencer_video.bd();
sequencer_video.bd_draw(n);
} else if (!camera[i]&&music[i]) {
sequencer[i].set_volume(volume[i]);
sequencer[i].play_sounds(n);
sequencer[i].glow(n);
}
} n++; if (n>=grid_num) { n=0; } } void keyPressed() { //track 1 if (key=='q'||key=='Q') { if (camera[0]==false &&camera[1]==false &&camera[2]==false) { camera[0]=true; } } else if (key=='w'||key=='W') { camera[0]=false; if (music[0]) { sequencer[0].get_sequence(sequencer_video.sequence()); sequencer[0].get_color(sequencer_video.grid_color()); } } else if (key=='e'||key=='E') { music[0]=true; } else if (key=='r'||key=='R') { music[0]=false; sequencer[0].delete(); } else if (key=='t'||key=='T') { if (music[0]) { if (camera[0]) { sequencer_video.set_volume(volume[0]); } else { sequencer[0].set_volume(volume[0]); } } } else if (key=='y'||key=='Y') { if (music[0]) { volume[0]=constrain(volume[0]+5, 0, 127); if (camera[0]) { sequencer_video.set_volume(volume[0]); } else { sequencer[0].set_volume(volume[0]); } } } //track 2 else if (key=='a'||key=='A') { if (camera[0]==false &&camera[1]==false &&camera[2]==false) { camera[1]=true; } } else if (key=='s'||key=='S') { camera[1]=false; if (music[1]) { sequencer[1].get_sequence(sequencer_video.sequence()); sequencer[1].get_color(sequencer_video.grid_color()); } } else if (key=='d'||key=='D') { music[1]=true; } else if (key=='f'||key=='F') { music[1]=false; sequencer[1].delete(); } else if (key=='g'||key=='G') { if (music[1]) { volume[1]=constrain(volume[1]-5, 0, 127); if (camera[1]) { sequencer_video.set_volume(volume[1]); } else { sequencer[1].set_volume(volume[1]); } } } else if (key=='h'||key=='H') { if (music[1]) { volume[1]=constrain(volume[1]+5, 0, 127); if (camera[1]) { sequencer_video.set_volume(volume[1]); } else { sequencer[1].set_volume(volume[1]); } } } //track 3 else if (key=='z'||key=='Z') { if (camera[0]==false &&camera[1]==false &&camera[2]==false) { camera[2]=true; } } else if (key=='x'||key=='X') { camera[2]=false; if (music[2]) { sequencer[2].get_sequence(sequencer_video.sequence()); sequencer[2].get_color(sequencer_video.grid_color()); } } else if (key=='c'||key=='C') { music[2]=true; } else if (key=='v'||key=='V') { music[2]=false; sequencer[2].delete(); } else if (key=='b'||key=='B') { if (music[2]) { volume[2]=constrain(volume[2]-5, 0, 127); if (camera[2]) { sequencer_video.set_volume(volume[2]); } else { sequencer[2].set_volume(volume[2]); } } } else if (key=='n'||key=='N') { if (music[2]) { volume[2]=constrain(volume[2]+5, 0, 127); if (camera[2]) { sequencer_video.set_volume(volume[2]); } else { sequencer[2].set_volume(volume[2]); } } } else if (key=='o'||key=='O') { tube=true; } else if (key=='p'||key=='P') { tube=false; } else if (key==CODED) { if (keyCode==LEFT) { sequencer_video.threshold_down(); } else if (keyCode==RIGHT) { sequencer_video.threshold_up(); } else if (keyCode==UP) { rack.volume_up(); } else if (keyCode==DOWN) { rack.volume_down(); } } } void make_empty() { for (int i=0; i=0&&n+p=0&& m+q5&&b.w*block_size<25&& b.h*block_size>5&&b.h*block_size<25) { strokeWeight(3); stroke(255, 0, 0); rect( b.xMin*block_size, b.yMin*block_size, b.w*block_size, b.h*block_size ); } } } popMatrix(); } void fastblur(PImage img, int radius) { if (radius<1) { return; } int w=img.width; int h=img.height; int wm=w-1; int hm=h-1; int wh=w*h; int div=radius+radius+1; int r[]=new int[wh]; int g[]=new int[wh]; int b[]=new int[wh]; int rsum, gsum, bsum, x, y, i, p, p1, p2, yp, yi, yw; int vmin[] = new int[max(w, h)]; int vmax[] = new int[max(w, h)]; int[] pix=img.pixels; int dv[]=new int[256*div]; for (i=0; i<256*div; i++) { dv[i]=(i/div); } yw=yi=0; for (y=0; y>16; gsum+=(p & 0x00ff00)>>8; bsum+= p & 0x0000ff; } for (x=0; x>16; gsum+=((p1 & 0x00ff00)-(p2 & 0x00ff00))>>8; bsum+= (p1 & 0x0000ff)-(p2 & 0x0000ff); yi++; } yw+=w; } for (x=0; x5&&b.w*block_size<25&& b.h*block_size>5&&b.h*block_size<25){ blobs[n][0]=b.xMin*block_size; blobs[n][1]=b.yMin*block_size; blobs[n][2]=b.w*block_size; blobs[n][3]=b.h*block_size; } } } void convert() { int row, col, i; for (int n=0; n0&&i=0&&n+p=0&& m+q
Source: blob detection http://www.v3ga.net/processing/BlobDetection/

soundcipher http://explodingart.com/soundcipher/ Source: blob detection http://www.v3ga.net/processing/BlobDetection/ soundcipher http://explodingart.com/soundcipher/