Difference between revisions of "Team:NYU Shanghai/Code"
Line 134: | Line 134: | ||
<br><br>frameRate(4); | <br><br>frameRate(4); | ||
− | + | } | |
<br><br>void draw() { | <br><br>void draw() { | ||
Line 164: | Line 164: | ||
<br>} | <br>} | ||
− | n++; | + | <br><br>n++; |
− | if (n>=grid_num) { | + | <br>if (n>=grid_num) { |
− | n=0; | + | <br>n=0; |
− | } | + | <br>} |
− | } | + | <br>} |
− | void keyPressed() { | + | <br><br>void keyPressed() { |
− | //track 1 | + | <br>//track 1 |
− | if (key=='q'||key=='Q') { | + | <br>if (key=='q'||key=='Q') { |
− | if (camera[0]==false &&camera[1]==false &&camera[2]==false) { | + | <br>if (camera[0]==false &&camera[1]==false &&camera[2]==false) { |
camera[0]=true; | camera[0]=true; | ||
− | } | + | <br>} |
− | } else if (key=='w'||key=='W') { | + | <br>} else if (key=='w'||key=='W') { |
− | camera[0]=false; | + | <br>camera[0]=false; |
− | if (music[0]) { | + | <br>if (music[0]) { |
− | sequencer[0].get_sequence(sequencer_video.sequence()); | + | <br>sequencer[0].get_sequence(sequencer_video.sequence()); |
− | sequencer[0].get_color(sequencer_video.grid_color()); | + | <br>sequencer[0].get_color(sequencer_video.grid_color()); |
− | } | + | <br>} |
− | } else if (key=='e'||key=='E') { | + | <br>} else if (key=='e'||key=='E') { |
− | music[0]=true; | + | <br>music[0]=true; |
− | } else if (key=='r'||key=='R') { | + | <br>} else if (key=='r'||key=='R') { |
− | music[0]=false; | + | <br>music[0]=false; |
− | sequencer[0].delete(); | + | <br>sequencer[0].delete(); |
− | } else if (key=='t'||key=='T') { | + | <br>} else if (key=='t'||key=='T') { |
− | if (music[0]) { | + | <br>if (music[0]) { |
− | if (camera[0]) { | + | <br><br>if (camera[0]) { |
− | sequencer_video.set_volume(volume[0]); | + | <br>sequencer_video.set_volume(volume[0]); |
− | } else { | + | <br>} else { |
− | sequencer[0].set_volume(volume[0]); | + | <br>sequencer[0].set_volume(volume[0]); |
− | } | + | <br>} |
− | } | + | <br>} |
− | } else if (key=='y'||key=='Y') { | + | <br>} else if (key=='y'||key=='Y') { |
− | if (music[0]) { | + | <br>if (music[0]) { |
− | volume[0]=constrain(volume[0]+5, 0, 127); | + | <br>volume[0]=constrain(volume[0]+5, 0, 127); |
− | if (camera[0]) { | + | <br>if (camera[0]) { |
− | + | <br>.set_volume(volume[0]); | |
− | } else { | + | <br>} else { |
− | sequencer[0].set_volume(volume[0]); | + | <br>sequencer[0].set_volume(volume[0]); |
− | } | + | <br>} |
− | } | + | <br>} |
− | } | + | <br>} |
− | //track 2 | + | <br>//track 2 |
− | else if (key=='a'||key=='A') { | + | <br>else if (key=='a'||key=='A') { |
− | if (camera[0]==false &&camera[1]==false &&camera[2]==false) { | + | <br>if (camera[0]==false &&camera[1]==false &&camera[2]==false) { |
camera[1]=true; | camera[1]=true; | ||
− | } | + | <br>} |
− | } else if (key=='s'||key=='S') { | + | <br>} else if (key=='s'||key=='S') { |
− | camera[1]=false; | + | <br>camera[1]=false; |
− | if (music[1]) { | + | <br>if (music[1]) { |
− | sequencer[1].get_sequence(sequencer_video.sequence()); | + | <br>sequencer[1].get_sequence(sequencer_video.sequence()); |
− | sequencer[1].get_color(sequencer_video.grid_color()); | + | <br>sequencer[1].get_color(sequencer_video.grid_color()); |
− | } | + | <br>} |
− | } else if (key=='d'||key=='D') { | + | <br>} else if (key=='d'||key=='D') { |
− | music[1]=true; | + | <br>music[1]=true; |
− | } else if (key=='f'||key=='F') { | + | <br>} else if (key=='f'||key=='F') { |
− | music[1]=false; | + | <br>music[1]=false; |
− | sequencer[1].delete(); | + | <br>sequencer[1].delete(); |
− | } else if (key=='g'||key=='G') { | + | <br>} else if (key=='g'||key=='G') { |
− | if (music[1]) { | + | <br>if (music[1]) { |
− | volume[1]=constrain(volume[1]-5, 0, 127); | + | <br>volume[1]=constrain(volume[1]-5, 0, 127); |
− | if (camera[1]) { | + | <br>if (camera[1]) { |
− | sequencer_video.set_volume(volume[1]); | + | <br>sequencer_video.set_volume(volume[1]); |
− | } else { | + | <br>} else { |
− | sequencer[1].set_volume(volume[1]); | + | <br>sequencer[1].set_volume(volume[1]); |
− | } | + | <br>} |
− | } | + | <br>} |
− | } else if (key=='h'||key=='H') { | + | <br>} else if (key=='h'||key=='H') { |
− | if (music[1]) { | + | <br>if (music[1]) { |
− | volume[1]=constrain(volume[1]+5, 0, 127); | + | <br>volume[1]=constrain(volume[1]+5, 0, 127); |
− | if (camera[1]) { | + | <br>if (camera[1]) { |
− | sequencer_video.set_volume(volume[1]); | + | <br>sequencer_video.set_volume(volume[1]); |
− | } else { | + | <br>} else { |
− | sequencer[1].set_volume(volume[1]); | + | <br>sequencer[1].set_volume(volume[1]); |
− | } | + | <br>} |
− | } | + | <br>} |
− | } | + | <br>} |
− | //track 3 | + | <br>//track 3 |
− | else if (key=='z'||key=='Z') { | + | <br>else if (key=='z'||key=='Z') { |
− | if (camera[0]==false &&camera[1]==false &&camera[2]==false) { | + | <br>if (camera[0]==false &&camera[1]==false &&camera[2]==false) { |
− | camera[2]=true; | + | <br>camera[2]=true; |
− | } | + | <br>} |
− | } else if (key=='x'||key=='X') { | + | <br>} else if (key=='x'||key=='X') { |
− | camera[2]=false; | + | <br>camera[2]=false; |
− | if (music[2]) { | + | <br>if (music[2]) { |
− | sequencer[2].get_sequence(sequencer_video.sequence()); | + | <br>sequencer[2].get_sequence(sequencer_video.sequence()); |
− | sequencer[2].get_color(sequencer_video.grid_color()); | + | <br>sequencer[2].get_color(sequencer_video.grid_color()); |
− | } | + | <br>} |
− | } else if (key=='c'||key=='C') { | + | <br>} else if (key=='c'||key=='C') { |
− | music[2]=true; | + | <br>music[2]=true; |
− | } else if (key=='v'||key=='V') { | + | <br>} else if (key=='v'||key=='V') { |
− | music[2]=false; | + | <br>music[2]=false; |
− | + | <br>sequencer[2].delete(); | |
− | } else if (key=='b'||key=='B') { | + | <br>} else if (key=='b'||key=='B') { |
− | if (music[2]) { | + | <br>if (music[2]) { |
− | volume[2]=constrain(volume[2]-5, 0, 127); | + | <br>volume[2]=constrain(volume[2]-5, 0, 127); |
− | if (camera[2]) { | + | <br>if (camera[2]) { |
− | sequencer_video.set_volume(volume[2]); | + | <br>sequencer_video.set_volume(volume[2]); |
− | } else { | + | <br>} else { |
− | sequencer[2].set_volume(volume[2]); | + | <br>sequencer[2].set_volume(volume[2]); |
− | } | + | <br>} |
− | } | + | <br>} |
− | } else if (key=='n'||key=='N') { | + | <br>} else if (key=='n'||key=='N') { |
− | if (music[2]) { | + | <br>if (music[2]) { |
− | volume[2]=constrain(volume[2]+5, 0, 127); | + | <br>volume[2]=constrain(volume[2]+5, 0, 127); |
− | if (camera[2]) { | + | <br>if (camera[2]) { |
− | sequencer_video.set_volume(volume[2]); | + | <br>sequencer_video.set_volume(volume[2]); |
− | } else { | + | <br>} else { |
− | sequencer[2].set_volume(volume[2]); | + | <br>sequencer[2].set_volume(volume[2]); |
− | } | + | <br>} |
− | } | + | <br>} |
− | } else if (key=='o'||key=='O') { | + | <br>} else if (key=='o'||key=='O') { |
− | tube=true; | + | <br>tube=true; |
− | } else if (key=='p'||key=='P') { | + | <br>} else if (key=='p'||key=='P') { |
− | tube=false; | + | <br>tube=false; |
− | } else if (key==CODED) { | + | <br>} else if (key==CODED) { |
− | if (keyCode==LEFT) { | + | <br>if (keyCode==LEFT) { |
− | sequencer_video.threshold_down(); | + | <br>sequencer_video.threshold_down(); |
− | } else if (keyCode==RIGHT) { | + | <br>} else if (keyCode==RIGHT) { |
− | sequencer_video.threshold_up(); | + | <br>sequencer_video.threshold_up(); |
− | } else if (keyCode==UP) { | + | <br>} else if (keyCode==UP) { |
− | rack.volume_up(); | + | <br>rack.volume_up(); |
− | } else if (keyCode==DOWN) { | + | <br>} else if (keyCode==DOWN) { |
− | rack.volume_down(); | + | <br>rack.volume_down(); |
− | } | + | <br>} |
− | } | + | <br>} |
− | } | + | <br>} |
− | void make_empty() { | + | <br><br>void make_empty() { |
− | for (int i=0; i<block_number; i++) { | + | <br>for (int i=0; i<block_number; i++) { |
− | int x= pos_x(i); | + | <br>int x= pos_x(i); |
− | int y=margin; | + | <br>int y=margin; |
− | sequencer[i]=new Sequencer(sc, grid_num, grid_size, interval, x, y); | + | <br>sequencer[i]=new Sequencer(sc, grid_num, grid_size, interval, x, y); |
− | } | + | <br>} |
− | } | + | <br>} |
− | int pos_x(int i) { | + | <br><br>int pos_x(int i) { |
− | int x=margin+(grid_num*(grid_size+interval)+interval+margin)*i; | + | <br>int x=margin+(grid_num*(grid_size+interval)+interval+margin)*i; |
− | return x; | + | <br>return x; |
− | } | + | <br>} |
− | //tube rack | + | <br><br>//tube rack |
− | class Rack { | + | <br>class Rack { |
− | Capture video; | + | <br>Capture video; |
− | int tube_number=8; | + | <br>int tube_number=8; |
− | int space_height; | + | <br>int space_height; |
− | float[][] colors; | + | <br>float[][] colors; |
− | SoundCipher sc; | + | <br>SoundCipher sc; |
− | int white=150; | + | <br>int white=150; |
− | float bright=1.5; | + | <br>float bright=1.5; |
− | int volume=100; | + | <br>int volume=100; |
− | int rack_width; | + | <br>int rack_width; |
− | int rack_height; | + | <br>int rack_height; |
− | int window_size; | + | <br>int window_size; |
− | int window_height; | + | <br>int window_height; |
− | int tube_height; | + | <br>int tube_height; |
− | int tube_width; | + | <br>int tube_width; |
− | int rack_x; | + | <br>int rack_x; |
− | int rack_y; | + | <br>int rack_y; |
− | int margin; | + | <br>int margin; |
− | Rack(Capture _video, SoundCipher _sc, int _window_size, | + | <br><br>Rack(Capture _video, SoundCipher _sc, int _window_size, |
− | int _window_height, int _space_height) { | + | <br>int _window_height, int _space_height) { |
− | video=_video; | + | <br>video=_video; |
− | window_size=_window_size; | + | <br>window_size=_window_size; |
− | window_height=_window_height; | + | <br>window_height=_window_height; |
− | space_height=_space_height; | + | <br>space_height=_space_height; |
− | sc=_sc; | + | <br>sc=_sc; |
− | rack_width=int(window_size*0.75); | + | <br>rack_width=int(window_size*0.75); |
− | rack_height=space_height/2; | + | <br>rack_height=space_height/2; |
− | tube_height=int(space_height*0.6); | + | <br>tube_height=int(space_height*0.6); |
− | tube_width=int(rack_width/(tube_number*3)); | + | <br>tube_width=int(rack_width/(tube_number*3)); |
− | rack_x=(window_size-rack_width)/2; | + | <br>rack_x=(window_size-rack_width)/2; |
− | rack_y=int(space_height*0.3); | + | <br>rack_y=int(space_height*0.3); |
− | margin=(rack_width-tube_number*tube_width)/(tube_number+1); | + | <br>margin=(rack_width-tube_number*tube_width)/(tube_number+1); |
− | } | + | <br>} |
− | void play(int n) { | + | <br><br>void play(int n) { |
− | + | <br>get_color(); | |
− | draw_rack(); | + | <br>draw_rack(); |
− | glow(n); | + | <br>glow(n); |
− | play_sounds(n); | + | <br>play_sounds(n); |
− | } | + | <br>} |
− | void get_color() { | + | <br><br>void get_color() { |
− | if (video.available()) { | + | <br>if (video.available()) { |
− | video.read(); | + | <br>video.read(); |
− | video.loadPixels(); | + | <br>video.loadPixels(); |
− | colors=new float[tube_number][3]; | + | <br>colors=new float[tube_number][3]; |
− | float[] loc_x = {0.1,0.215,0.333,0.45,0.569,0.705,0.823,0.941}; | + | <br>float[] loc_x = {0.1,0.215,0.333,0.45,0.569,0.705,0.823,0.941}; |
− | for (int i = 0; i < tube_number; i++) { | + | <br>for (int i = 0; i < tube_number; i++) { |
− | // Begin loop for rows | + | <br>// Begin loop for rows |
− | // Where are we, pixel-wise? | + | <br><br>// Where are we, pixel-wise? |
− | int x = int(width*loc_x[i]) ; | + | <br>int x = int(width*loc_x[i]) ; |
− | int y = int(video.height*0.7); | + | <br><br>int y = int(video.height*0.7); |
− | int loc = x + y*video.width; | + | <br>int loc = x + y*video.width; |
− | colors[i][0] = red(video.pixels[loc]); | + | <br><br>colors[i][0] = red(video.pixels[loc]); |
− | colors[i][1]= green(video.pixels[loc]); | + | <br>colors[i][1]= green(video.pixels[loc]); |
− | colors[i][2]= blue(video.pixels[loc]); | + | <br>colors[i][2]= blue(video.pixels[loc]); |
− | } | + | <br>} |
− | + | <br>} | |
− | } | + | <br>} |
− | void draw_rack() { | + | <br><br>void draw_rack() { |
− | if (colors!=null) { | + | <br>if (colors!=null) { |
− | pushMatrix(); | + | <br>pushMatrix(); |
− | translate(0, window_height-space_height); | + | <br>translate(0, window_height-space_height); |
− | + | <br>noFill(); | |
− | stroke(255); | + | <br>stroke(255); |
− | strokeWeight(3); | + | <br>strokeWeight(3); |
− | rect(rack_x, rack_y, | + | <br>rect(rack_x, rack_y, |
− | rack_width, rack_height, rack_height/10); | + | <br>rack_width, rack_height, rack_height/10); |
− | pushMatrix(); | + | <br>pushMatrix(); |
− | translate(rack_x, rack_y); | + | <br>translate(rack_x, rack_y); |
− | for (int i = 0; i < tube_number; i++) { | + | <br>for (int i = 0; i < tube_number; i++) { |
− | pushMatrix(); | + | <br>pushMatrix(); |
− | translate(margin*(i+1)+tube_width*i, -rack_y*0.6); | + | <br>translate(margin*(i+1)+tube_width*i, -rack_y*0.6); |
− | if ((colors[i][0]+colors[i][1]+colors[i][2])/3<white) { | + | <br>if ((colors[i][0]+colors[i][1]+colors[i][2])/3<white) { |
− | noStroke(); | + | <br>noStroke(); |
− | fill(constrain(colors[i][0]*1.1,0,255), | + | <br>fill(constrain(colors[i][0]*1.1,0,255), |
− | constrain(colors[i][1]*1.1,0,255), | + | <br>constrain(colors[i][1]*1.1,0,255), |
− | constrain(colors[i][2]*1.1,0,255)); | + | <br>constrain(colors[i][2]*1.1,0,255)); |
− | rect(0, 0, tube_width, tube_height,tube_width/2); | + | <br>rect(0, 0, tube_width, tube_height,tube_width/2); |
− | } else { | + | <br>} else { |
− | noFill(); | + | <br>noFill(); |
− | stroke(255); | + | <br>stroke(255); |
− | strokeWeight(3); | + | <br>strokeWeight(3); |
− | rect(0, 0, tube_width, tube_height,tube_width/2); | + | <br>rect(0, 0, tube_width, tube_height,tube_width/2); |
− | } | + | <br>} |
− | popMatrix(); | + | <br><br>popMatrix(); |
− | } | + | <br>} |
− | popMatrix(); | + | <br>popMatrix(); |
− | popMatrix(); | + | <br>popMatrix(); |
− | } | + | <br>} |
− | } | + | <br>} |
− | void glow(int n) { | + | <br><br>void glow(int n) { |
− | n=n%tube_number; | + | <br>n=n%tube_number; |
− | if (colors!=null) { | + | <br>if (colors!=null) { |
− | pushMatrix(); | + | <br>pushMatrix(); |
− | translate(0, window_height-space_height); | + | <br>translate(0, window_height-space_height); |
− | if ((colors[n][0]+colors[n][1]+colors[n][2])/3<white) { | + | <br>if ((colors[n][0]+colors[n][1]+colors[n][2])/3<white) { |
− | pushMatrix(); | + | <br>pushMatrix(); |
− | translate(rack_x, rack_y); | + | <br>translate(rack_x, rack_y); |
− | pushMatrix(); | + | <br>pushMatrix(); |
− | translate(margin*(n+1)+tube_width*n, -rack_y*0.6); | + | <br>translate(margin*(n+1)+tube_width*n, -rack_y*0.6); |
− | fill(255, 255, 255, 40); | + | <br>fill(255, 255, 255, 40); |
− | noStroke(); | + | <br>noStroke(); |
− | rect(0, 0, tube_width, tube_height,tube_width/2); | + | <br>rect(0, 0, tube_width, tube_height,tube_width/2); |
− | popMatrix(); | + | <br>popMatrix(); |
− | popMatrix(); | + | <br>popMatrix(); |
− | } | + | <br>} |
− | popMatrix(); | + | <br>popMatrix(); |
− | } | + | <br>} |
− | } | + | <br>} |
− | void play_sounds(int n) { | + | <br><br>void play_sounds(int n) { |
− | n=n%tube_number; | + | <br>n=n%tube_number; |
− | if (colors!=null) { | + | <br>if (colors!=null) { |
− | float noteVal; | + | <br>float noteVal; |
− | float[] noteVals=new float[0]; | + | <br>float[] noteVals=new float[0]; |
− | boolean play; | + | <br>boolean play; |
− | if ((colors[n%tube_number][0]+colors[n%tube_number][1] | + | <br>if ((colors[n%tube_number][0]+colors[n%tube_number][1] |
− | +colors[n%tube_number][2])/3<white) { | + | <br>+colors[n%tube_number][2])/3<white) { |
− | play=true; | + | <br>play=true; |
− | } else { | + | <br>} else { |
− | play=false; | + | <br>play=false; |
− | } | + | <br>} |
− | if (play) { | + | <br>if (play) { |
− | noteVal = noteVal(n); | + | <br>noteVal = noteVal(n); |
− | noteVals=append(noteVals, noteVal); | + | <br>noteVals=append(noteVals, noteVal); |
− | } | + | <br>} |
− | sc.instrument(instrument(n)); | + | <br>sc.instrument(instrument(n)); |
− | println(instrument(n)); | + | <br>println(instrument(n)); |
− | sc.playChord(noteVals, volume, 0.25); | + | <br>sc.playChord(noteVals, volume, 0.25); |
− | } | + | <br>} |
− | } | + | <br>} |
int instrument(int n){ | int instrument(int n){ | ||
Line 1,025: | Line 1,025: | ||
<br><br>soundcipher | <br><br>soundcipher | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
http://explodingart.com/soundcipher/ | http://explodingart.com/soundcipher/ | ||
Revision as of 06:17, 10 September 2015