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

 
(6 intermediate revisions by 2 users not shown)
Line 543: Line 543:
 
<br><span></span><span></span>
 
<br><span></span><span></span>
 
<br><br><span></span><span></span>//black background
 
<br><br><span></span><span></span>//black background
<br><span></span><span></span><br>noStroke();
+
<br><span></span><span></span>noStroke();
<br><span></span><span></span><br>fill(0);
+
<br><span></span><span></span>fill(0);
<br><span></span><span></span><br>rect(-interval, -interval, (grid_size+interval)*grid_num+interval*2,  
+
<br><span></span><span></span>rect(-interval, -interval, (grid_size+interval)*grid_num+interval*2,  
<br><span></span><span></span><br>(grid_size+interval)*grid_num+interval*2);
+
<br><span></span><span></span>(grid_size+interval)*grid_num+interval*2);
 
<br><span></span><span></span>
 
<br><span></span><span></span>
<br><span></span><span></span><br><br>for (int i=0; i < sequence.length; i++) {
+
<br><span></span><span></span>for (int i=0; i < sequence.length; i++) {
<br><span></span><span></span><span></span><br>x=(grid_size+interval)*(i%grid_num);
+
<br><span></span><span></span><span></span>x=(grid_size+interval)*(i%grid_num);
<br><span></span><span></span><span></span><br>y=(grid_size+interval)*(i/grid_num);
+
<br><span></span><span></span><span></span>y=(grid_size+interval)*(i/grid_num);
<br><span></span><span></span><span></span><br>if (sequence[i]) {
+
<br><span></span><span></span><span></span>if (sequence[i]) {
<br><span></span><span></span><span></span><span></span><br>fill(red, green, blue);
+
<br><span></span><span></span><span></span><span></span>fill(red, green, blue);
<br><span></span><span></span><span></span><br>} else {
+
<br><span></span><span></span><span></span>} else {
<br><span></span><span></span><span></span><span></span><br>if (select){fill(100);}
+
<br><span></span><span></span><span></span><span></span>if (select){fill(100);}
<br><span></span><span></span><span></span><span></span><br>else {fill(70);}
+
<br><span></span><span></span><span></span><span></span>else {fill(70);}
<br><span></span><span></span><span></span><br>}
+
<br><span></span><span></span><span></span>}
<br><span></span><span></span><span></span><br>rect(x, y, grid_size, grid_size);
+
<br><span></span><span></span><span></span>rect(x, y, grid_size, grid_size);
<br><span></span><span></span><br>}
+
<br><span></span><span></span>}
  
  
 
<br><br><span></span><span></span>popMatrix();
 
<br><br><span></span><span></span>popMatrix();
<span></span><br>}
+
<br><span></span>}
  
<span></span><br><br>void glow(int n) {
+
<br><br><span></span>void glow(int n) {
<span></span><span></span><br>pushMatrix();
+
<br><span></span><span></span>pushMatrix();
<span></span><span></span><br>translate(a, b);
+
<br><span></span><span></span>translate(a, b);
<span></span><span></span><br><br>rectMode(CORNER);
+
<br><br><span></span><span></span>rectMode(CORNER);
<span></span><span></span><br>for (int m=0; m<grid_num; m++) {
+
<br><span></span><span></span>for (int m=0; m < grid_num; m++) {
<span> </span><span></span><span></span><br>if (sequence[m*grid_num+n]) {
+
<br><span></span><span></span><span></span>if (sequence[m*grid_num+n]) {
<span></span><span></span><span></span><span></span><br>for (int p=-1; p<2; p++) {
+
<br><span></span><span></span><span></span><span></span>for (int p=-1; p < 2; p++) {
<span></span><span></span><span></span><span></span><span></span><br>for (int q=-1; q<2; q++) {
+
<br><span></span><span></span><span></span><span></span><span></span>for (int q=-1; q < 2; q++) {
<span></span><span></span><span></span><span></span><span></span><span></span><br>if (n+p>=0&&n+p<grid_num&&m+q>=0&&
+
<br><span></span><span></span><span></span><span></span><span></span><span></span>if (n+p>=0&&n+p < grid_num&&m+q>=0&&
<span></span><span></span><span></span><span></span><span></span><span></span><span></span><br>m+q<grid_num) {
+
<br><span></span><span></span><span></span><span></span><span></span><span></span><span></span>m+q < grid_num) {
<span></span><span></span><span></span><span></span><span></span><span></span><span></span><br>noStroke();
+
<br><span></span><span></span><span></span><span></span><span></span><span></span><span></span>noStroke();
<span></span><span></span><span></span><span></span><span></span><span></span><span></span><br>fill(255, 255, 255, 20);
+
<br><span></span><span></span><span></span><span></span><span></span><span></span><span></span>fill(255, 255, 255, 20);
<span></span><span></span><span></span><span></span><span></span><span></span> <br>rect((n+p)*(interval+grid_size), (m+q)*(interval+grid_size),  
+
<br><span></span><span></span><span></span><span></span><span></span><span></span><span></span>rect((n+p)*(interval+grid_size), (m+q)*(interval+grid_size),  
<span></span><span></span><span></span><span></span><span></span><span></span><span></span><br>grid_size, grid_size);
+
<br><span></span><span></span><span></span><span></span><span></span><span></span><span></span>grid_size, grid_size);
<span></span><span></span><span></span><span></span><span></span><span></span><br>}
+
<br><span></span><span></span><span></span><span></span><span></span><span></span>}
<span></span><span></span><span></span><span></span><span></span><span></span><br>if (p==0&&q==0){
+
<br><span></span><span></span><span></span><span></span><span></span><span></span>if (p==0&&q==0){
<span></span><span></span><span></span><span></span><span></span><span></span><span></span><br>fill(red, green, blue);
+
<br><span></span><span></span><span></span><span></span><span></span><span></span><span></span>fill(red, green, blue);
<span></span><span></span><span></span><span></span><span></span><span></span><span></span><br>rect(n*(interval+grid_size)-interval/2, m*(interval+grid_size)-interval/2,  
+
<br><span></span><span></span><span></span><span></span><span></span><span></span><span></span>rect(n*(interval+grid_size)-interval/2, m*(interval+grid_size)-interval/2,  
<span></span><span></span><span></span><span></span><span></span><span></span><span></span><br>grid_size+interval, grid_size+interval);
+
<br><span></span><span></span><span></span><span></span><span></span><span></span><span></span>grid_size+interval, grid_size+interval);
<span></span><span></span><span></span><span></span><span></span><span></span><span></span><br>fill(255, 255, 255, 30);
+
<br><span></span><span></span><span></span><span></span><span></span><span></span><span></span>fill(255, 255, 255, 30);
<span></span><span></span><span></span><span></span><span></span><span></span><span></span><br>rect(n*(interval+grid_size)-interval/2, m*(interval+grid_size)-interval/2,  
+
<br><span></span><span></span><span></span><span></span><span></span><span></span><span></span>rect(n*(interval+grid_size)-interval/2, m*(interval+grid_size)-interval/2,  
<span></span><span></span><span></span><span></span><span></span><span></span><span></span><br>grid_size+interval, grid_size+interval);
+
<br><span></span><span></span><span></span><span></span><span></span><span></span><span></span>grid_size+interval, grid_size+interval);
<span></span><span></span><span></span><span></span><span></span><span></span><br>}
+
<br><span></span><span></span><span></span><span></span><span></span><span></span>}
<span></span><span></span><span></span><span></span><span></span><br>}
+
<br><span></span><span></span><span></span><span></span><span></span>}
<span></span><span></span><span></span><span></span><br>}
+
<br><span></span><span></span><span></span><span></span>}
<span></span><span></span><span></span><br>}
+
<br><span></span><span></span><span></span>}
<span></span><span></span><br>}
+
<br><span></span><span></span>}
<span></span><span></span><br>popMatrix();
+
<br><span></span><span></span>popMatrix();
<span></span><br>}
+
<br><span></span>}
  
  
<span></span><br><br>void play_sounds(int n) {
+
<br><br><span></span>void play_sounds(int n) {
<span></span><span></span><br>float noteVal;
+
<br><span></span><span></span>float noteVal;
<span></span><span></span><br>float[] noteVals=new float[0];
+
<br><span></span><span></span>float[] noteVals=new float[0];
  
<span></span><span></span><br><br>for (int i=0; i<grid_num; i++) {
+
<br><br><span></span><span></span>for (int i=0; i < grid_num; i++) {
  
<span></span><span></span><span></span><br><br>// if the data text file has a "1" play note
+
<br><br><span></span><span></span><span></span>// if the data text file has a "1" play note
<span></span><span></span><span></span><br>if (sequence[i*grid_num+n]) {
+
<br><span></span><span></span><span></span>if (sequence[i*grid_num+n]) {
<span></span><span></span><span></span><span></span><br>noteVal = float(notes[i]);
+
<br><span></span><span></span><span></span><span></span>noteVal = float(notes[i]);
<span></span><span></span><span></span><span></span><br>noteVals=append(noteVals, noteVal);
+
<br><span></span><span></span><span></span><span></span>noteVals=append(noteVals, noteVal);
<span></span><span></span><span></span><br>}
+
<br><span></span><span></span><span></span>}
<span></span><span></span><span></span>
+
<span></span><span></span><br><br>}
+
<span></span><span></span><br>sc.instrument(instrument());
+
<span></span><span></span><br>sc.playChord(noteVals, volume, 0.25);
+
<span></span><br>}
+
<span></span>
+
<span></span><br><br>int instrument(){
+
<span></span><span></span><br>int h=int(hue(color(red,green,blue))%8);
+
<span></span><span></span><br>if (h==0){return 2;}
+
<span></span><span></span><br>else if (h==1){return 3;}
+
<span></span><span></span><br>else if (h==2){return 38;}
+
<span></span><span></span><br>else if (h==3){return 46;}
+
<span></span><span></span><br>else if (h==4){return 47;}
+
<span></span><span></span><br>else if (h==5){return 55;}
+
<span></span><span></span><br>else if (h==6){return 116;}
+
<span></span><span></span><br>else {return 120;}
+
<span></span><br>}
+
  
<span></span><br><br>void select(boolean _select) {
+
<br><br><span></span><span></span>}
<span></span><span></span><br>select=_select;
+
<br><span></span><span></span>sc.instrument(instrument());
<span></span><br>}
+
<br><span></span><span></span>sc.playChord(noteVals, volume, 0.25);
 +
<br><span></span>}
  
<span></span><br><br>void set_volume(int _volume) {
+
<br><br><span></span>int instrument(){
<span></span><span></span><br>volume=constrain(_volume, 0, 127);
+
<br><span></span><span></span>int h=int(hue(color(red,green,blue))%8);
<span></span><br>}
+
<br><span></span><span></span>if (h==0){return 2;}
 +
<br><span></span><span></span>else if (h==1){return 3;}
 +
<br><span></span><span></span>else if (h==2){return 38;}
 +
<br><span></span><span></span>else if (h==3){return 46;}
 +
<br><span></span><span></span>else if (h==4){return 47;}
 +
<br><span></span><span></span>else if (h==5){return 55;}
 +
<br><span></span><span></span>else if (h==6){return 116;}
 +
<br><span></span><span></span>else {return 120;}
 +
<br><span></span>}
  
<span></span><br><br>void delete() {
+
<br><br><span></span>void select(boolean _select) {
<span></span><span></span><br>sequence=empty;
+
<br><span></span><span></span>select=_select;
<span></span><br>}
+
<br><span></span>}
 +
 
 +
<br><br><span></span>void set_volume(int _volume) {
 +
<br><span></span><span></span>volume=constrain(_volume, 0, 127);
 +
<br><span></span>}
 +
 
 +
<br><br><span></span>void delete() {
 +
<br><span></span><span></span>sequence=empty;
 +
<br><span></span>}
 
<br>}
 
<br>}
 
<br>//step sequencer video
 
<br>//step sequencer video
 
<br>class Sequencer_video {
 
<br>class Sequencer_video {
<span></span><br>Capture video;
+
<br><span></span>Capture video;
<span></span><br>SoundCipher sc;
+
<br><span></span>SoundCipher sc;
<span></span><br>BlobDetection theBlobDetection;
+
<br><span></span>BlobDetection theBlobDetection;
<span></span><br>boolean newFrame=false;
+
<br><span></span>boolean newFrame=false;
<span></span><br>PImage img;
+
<br><span></span>PImage img;
<span></span><br>int a, b;
+
<br><span></span>int a, b;
<span></span><br>int grid_size;
+
<br><span></span>int grid_size;
<span></span><br>int grid_num;
+
<br><span></span>int grid_num;
<span></span><br>int interval;
+
<br><span></span>int interval;
<span></span><br>int block_size;
+
<br><span></span>int block_size;
<span></span><br>int volume=0;
+
<br><span></span>int volume=0;
<span></span><br>float[][] blob_color;
+
<br><span></span>float[][] blob_color;
<span></span><br>float[] avg_color=new float[3];
+
<br><span></span>float[] avg_color=new float[3];
<span></span><br>float[][] blobs;
+
<br><span></span>float[][] blobs;
<span></span><br>float[][][] raw_color;  
+
<br><span></span>float[][][] raw_color;  
<span></span><br>float threshold=0.5;
+
<br><span></span>float threshold=0.5;
<span></span><br>boolean draw_grid=false;
+
<br><span></span>boolean draw_grid=false;
<span></span><br>boolean[] sequence;
+
<br><span></span>boolean[] sequence;
<span></span><br>int[] notes = {
+
<br><span></span>int[] notes = {
<span></span><span></span><br>, 93, 91, 89, 86, 84, 81, 79, 77, 74, 72, 69, 67, 65, 62, 60
+
<br><span></span><span></span>, 93, 91, 89, 86, 84, 81, 79, 77, 74, 72, 69, 67, 65, 62, 60
<span></span><br>};
+
<br><span></span>};
<span></span><br>int radius=180;
+
<br><span></span>int radius=180;
  
<span></span><br><br>Sequencer_video(Capture _video, SoundCipher _sc, int _grid_num,  
+
<br><br><span></span>Sequencer_video(Capture _video, SoundCipher _sc, int _grid_num,  
<span></span><br>int _grid_size,int _interval) {
+
<br><span></span>int _grid_size,int _interval) {
<span></span><span></span><br>colorMode(RGB, 255, 255, 255, 100);
+
<br><span></span><span></span>colorMode(RGB, 255, 255, 255, 100);
<span></span><span></span><br>video=_video;
+
<br><span></span><span></span>video=_video;
<span></span><span></span><br>sc=_sc;
+
<br><span></span><span></span>sc=_sc;
<span></span><span></span><br>grid_num=_grid_num;
+
<br><span></span><span></span>grid_num=_grid_num;
<span></span><span></span><br>grid_size=_grid_size;
+
<br><span></span><span></span>grid_size=_grid_size;
<span></span><span></span><br>interval=_interval;
+
<br><span></span><span></span>interval=_interval;
<span></span><span></span><br>block_size=(interval+grid_size)*grid_num;
+
<br><span></span><span></span>block_size=(interval+grid_size)*grid_num;
<span></span><span></span>
+
<span></span><span></span><br>sequence=new boolean[grid_num*grid_num];
+
<span></span><span></span><br>img = new PImage(grid_num*(grid_size+interval)-interval,
+
<span></span><span></span><br>grid_num*(grid_size+interval)-interval);
+
<span></span><span></span><br>theBlobDetection = new BlobDetection(img.width, img.height);
+
<span></span><span></span><br>theBlobDetection.setPosDiscrimination(true);
+
<span></span><br>}
+
  
<span></span><br><br>void threshold_up() {
+
<br><span></span><span></span>sequence=new boolean[grid_num*grid_num];
<span></span><span></span><br>threshold=constrain(threshold+0.02, 0, 1);
+
<br><span></span><span></span>img = new PImage(grid_num*(grid_size+interval)-interval,
<span></span><span></span><br>println(threshold);
+
<br><span></span><span></span>grid_num*(grid_size+interval)-interval);
<span></span><br>}
+
<br><span></span><span></span>theBlobDetection = new BlobDetection(img.width, img.height);
 +
<br><span></span><span></span>theBlobDetection.setPosDiscrimination(true);
 +
<br><span></span>}
  
<span></span><br><br>void threshold_down() {
+
<br><br><span></span>void threshold_up() {
<span></span><span></span><br>threshold=constrain(threshold-0.02, 0, 1);
+
<br><span></span><span></span>threshold=constrain(threshold+0.02, 0, 1);
<span></span><span></span><br>println(threshold);
+
<br><span></span><span></span>println(threshold);
<span></span><br>}
+
<br><span></span>}
  
<span></span><br><br>void position(int _a, int _b) {
+
<br><br><span></span>void threshold_down() {
<span></span><span></span><br>a=_a;
+
<br><span></span><span></span>threshold=constrain(threshold-0.02, 0, 1);
<span></span><span></span><br>b=_b;
+
<br><span></span><span></span>println(threshold);
<span></span><br>}
+
<br><span></span>}
  
<span></span><br><br>void grid_on() {
+
<br><br><span></span>void position(int _a, int _b) {
<span></span><span></span><br>draw_grid=true;
+
<br><span></span><span></span>a=_a;
<span></span><br>}
+
<br><span></span><span></span>b=_b;
<span></span>
+
<br><span></span>}
<span></span><br><br>void grid_off(){
+
<span></span><span></span><br>draw_grid=false;
+
<span></span><br>}
+
  
<span></span><br><br>void bd() {
+
<br><br><span></span>void grid_on() {
<span></span><span></span><br>if (video.available()) {
+
<br><span></span><span></span>draw_grid=true;
<span></span><span></span><span></span><br>theBlobDetection.setThreshold(threshold);
+
<br><span></span>}
<span></span><span></span><span></span><br>video.read();
+
<span></span><span></span><span></span><br>img.copy(video, (video.width-video.height)/2, 0, video.height,
+
<span></span><span></span> <br>video.height, 0, 0, img.width, img.height);
+
<span></span><span></span><span></span><br>image(img, a, b, img.width+interval, img.height+interval);
+
<span></span><span></span><span></span><br>fastblur(img, 2);
+
<span></span><span></span><span></span><br>theBlobDetection.computeBlobs(img.pixels);
+
<span></span><span></span><span></span><br>save_blob();
+
<span></span><span></span><span></span><br>blob_color();
+
<span></span><span></span><span></span><br>convert();
+
<span></span><span></span><br>}
+
<span></span><br>}
+
  
<span></span><br>void bd_draw(int n) {
+
<br><br><span></span>void grid_off(){
<span></span><span></span><br>if (draw_grid) {
+
<br><span></span><span></span>draw_grid=false;
<span></span><span></span><span></span>
+
<br><span></span>}
<span></span><span></span><span></span><br>draw_grid();
+
<span></span><span></span><span></span><br>glow(n);
+
<span></span><span></span><span></span><br>play_sounds(n);
+
<span></span><span></span><br>} else {
+
<span></span><span></span><span></span><br>drawBlobsAndEdges(true, false);
+
<span></span><span></span><br>}
+
<span></span><br>}
+
  
<span></span><br><br>void blob_color() {
+
<br><br><span></span>void bd() {
<span></span><span></span><br>float red=0;
+
<br><span></span><span></span>if (video.available()) {
<span></span><span></span><br>float blue=0;
+
<br><span></span><span></span><span></span>theBlobDetection.setThreshold(threshold);
<span></span><span></span><br>float green=0;
+
<br><span></span><span></span><span></span>video.read();
<span></span><span></span><br>int total=theBlobDetection.getBlobNb ();
+
<br><span></span><span></span><span></span>img.copy(video, (video.width-video.height)/2, 0, video.height,
<span></span><span></span><br>for (int n=0; n<total; n++) {
+
<br><span></span><span></span><span></span>video.height, 0, 0, img.width, img.height);
 +
<br><span></span><span></span><span></span>image(img, a, b, img.width+interval, img.height+interval);
 +
<br><span></span><span></span><span></span>fastblur(img, 2);
 +
<br><span></span><span></span><span></span>theBlobDetection.computeBlobs(img.pixels);
 +
<br><span></span><span></span><span></span>save_blob();
 +
<br><span></span><span></span><span></span>blob_color();
 +
<br><span></span><span></span><span></span>convert();
 +
<br><span></span><span></span>}
 +
<br><span></span>}
  
<span></span><span></span><span></span><br><br>//get the color
+
<br><span></span>void bd_draw(int n) {
<span></span><span></span><span></span><br><br><br>blob_color=new float[total][3];
+
<br><span></span><span></span>if (draw_grid) {
<span></span><span></span><span></span><br><br><br><br>int centerX = int(blobs[n][0]+0.5*blobs[n][2]);
+
<br><span></span><span></span><span></span>
<span></span><span></span><span></span><br>int centerY = int(blobs[n][1]+0.5*blobs[n][3]);
+
<br><span></span><span></span><span></span>draw_grid();
 +
<br><span></span><span></span><span></span>glow(n);
 +
<br><span></span><span></span><span></span>play_sounds(n);
 +
<br><span></span><span></span>} else {
 +
<br><span></span><span></span><span></span>drawBlobsAndEdges(true, false);
 +
<br><span></span><span></span>}
 +
<br><span></span>}
  
<span></span><span></span><span></span><br><br>color c = get(centerX+a, centerY+b);
+
<br><br><span></span>void blob_color() {
<span></span><span></span><span></span><br>blob_color[n][0] = red(c);
+
<br><span></span><span></span>float red=0;
<span></span><span></span><span></span><br><br>blob_color[n][1] = green(c);
+
<br><span></span><span></span>float blue=0;
<span></span><span></span><span></span><br>blob_color[n][2] = blue(c);
+
<br><span></span><span></span>float green=0;
<span></span>
+
<br><span></span><span></span>int total=theBlobDetection.getBlobNb ();
<span></span><span></span><span></span><br><br>red+=blob_color[n][0];
+
<br><span></span><span></span>for (int n=0; n < total; n++) {
<span></span><span></span><span></span><br>green+=blob_color[n][1];
+
<span></span><span></span><span></span><br>blue+=blob_color[n][2];
+
<span></span><span></span><span></span><span></span><span></span>
+
  
<span></span><span></span><br>}
+
<br><br><span></span><span></span><span></span>//get the color
<span></span><span></span><br>avg_color[0]=constrain(red/total*1.2,0,255);
+
<br><br><br><span></span><span></span><span></span>blob_color=new float[total][3];
<span></span><span></span><br>avg_color[1]=constrain(green/total*1.2,0,255);
+
<br><br><br><br><span></span><span></span><span></span>int centerX = int(blobs[n][0]+0.5*blobs[n][2]);
<span></span><span></span><br>avg_color[2]=constrain(blue/total*1.2,0,255);
+
<br><span></span><span></span><span></span>int centerY = int(blobs[n][1]+0.5*blobs[n][3]);
  
<span></span><br>}
+
<br><br><span></span><span></span><span></span>color c = get(centerX+a, centerY+b);
 +
<br><span></span><span></span><span></span>blob_color[n][0] = red(c);
 +
<br><br><span></span><span></span><span></span>blob_color[n][1] = green(c);
 +
<br><span></span><span></span><span></span>blob_color[n][2] = blue(c);
  
<span></span><br><br>void drawBlobsAndEdges(boolean drawBlobs, boolean drawEdges) {
+
<br><br><span></span><span></span><span></span>red+=blob_color[n][0];
<span></span><span></span><br>pushMatrix();
+
<br><span></span><span></span><span></span>green+=blob_color[n][1];
<span></span><span></span><br><br>translate(a, b);
+
<br><span></span><span></span><span></span>blue+=blob_color[n][2];
<span></span><span></span><br><br><br>noFill();
+
<span></span><span></span><br><br><br><br>rectMode(CORNER);
+
<span></span><span></span><br>Blob b;
+
<span></span><span></span><br>EdgeVertex eA, eB;
+
<span></span><span></span>
+
<span></span><span></span><br><br>for (int n=0; n<theBlobDetection.getBlobNb (); n++)
+
<span></span><span></span><br>{
+
<span></span><span></span><span></span><br>b=theBlobDetection.getBlob(n);
+
<span></span><span></span><span></span><br>if (b!=null)
+
<span></span><span></span><span></span><br>{
+
<span></span><span></span><span></span><span></span><br>// Edges
+
<span></span><span></span><span></span><span></span><br>if (drawEdges)
+
<span></span><span></span><span></span><span></span><br>{
+
<span></span><span></span><span></span><span></span><span></span><br>strokeWeight(3);
+
<span></span><span></span><span></span><span></span><span></span><br><br>stroke(0, 255, 0);
+
<span></span><span></span><span></span><span></span><span></span><br>for (int m=0; m<b.getEdgeNb (); m++)
+
<span></span><span></span><span></span><span></span><span></span><br>{
+
<span></span><span></span><span></span><span></span><span></span><span></span><br>eA = b.getEdgeVertexA(m);
+
<span></span><span></span><span></span><span></span><span></span><span></span><br>eB = b.getEdgeVertexB(m);
+
<span></span><span></span><span></span><span></span><span></span><span></span><br>if (eA !=null && eB !=null)
+
<span></span><span></span><span></span><span></span><span></span><span></span><span></span><br>line(
+
<span></span><span></span><span></span><span></span><span></span><span></span><span></span><br><br>eA.x*block_size, eA.y*block_size,
+
<span></span><span></span><span></span><span></span><span></span><span></span><span></span><br><br><br>eB.x*block_size, eB.y*block_size
+
<span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><br>);
+
<span></span><span></span><span></span><span></span><span></span><br>}
+
<span></span><span></span><span></span><span></span><br>}
+
  
<span></span><span></span><span></span><span></span><br><br>// Blobs
+
<br><span></span><span></span>}
<span></span><span></span><span></span><span></span><br>if (dist(block_size/2,block_size/2,b.xMin*block_size,
+
<br><span></span><span></span>avg_color[0]=constrain(red/total*1.2,0,255);
<span></span><span></span><span></span><span></span><br>b.yMin*block_size)<radius
+
<br><span></span><span></span>avg_color[1]=constrain(green/total*1.2,0,255);
<span></span><span></span><span></span><span></span><br>&&drawBlobs&&b.w*block_size>5&&b.w*block_size<25&&
+
<br><span></span><span></span>avg_color[2]=constrain(blue/total*1.2,0,255);
<span></span><span></span><span></span><span></span><br>b.h*block_size>5&&b.h*block_size<25)
+
<span></span><span></span><span></span><span></span><br>{
+
<span></span><span></span><span></span><span></span><span></span><br>strokeWeight(3);
+
<span></span><span></span><span></span><span></span><span></span><br>stroke(255, 0, 0);
+
<span></span><span></span><span></span><span></span>
+
<span></span><span></span><span></span><span></span><span></span><br><br>rect(
+
<span></span><span></span><span></span><span></span><span></span><br><br><br>b.xMin*block_size, b.yMin*block_size,  
+
<span></span><span></span><span></span><span></span><span></span><br><br><br><br>b.w*block_size, b.h*block_size
+
<span></span><span></span><span></span><span></span><span></span><span></span><br>);
+
<span></span><span></span><span></span><span></span><br>}
+
<span></span><span></span><span></span><br>}
+
<span></span><span></span><br>}
+
<span></span><br><span></span>popMatrix();
+
<span></span><br><br>}
+
  
<span></span><br><br>void fastblur(PImage img, int radius)
+
<br><span></span>}
<span></span><br>{
+
<span></span><span></span><br>if (radius<1) {
+
<span></span><span></span><span></span><br>return;
+
<span></span><span></span><br>}
+
<span></span><span></span><br>int w=img.width;
+
<span></span><span></span><br>int h=img.height;
+
<span></span><span></span><br>int wm=w-1;
+
<span></span><span></span><br>int hm=h-1;
+
<span></span><span></span><br>int wh=w*h;
+
<span></span><span></span><br>int div=radius+radius+1;
+
<span></span><span></span><br>int r[]=new int[wh];
+
<span></span><span></span><br>int g[]=new int[wh];
+
<span></span><span></span><br>int b[]=new int[wh];
+
<span></span><span></span><br>int rsum, gsum, bsum, x, y, i, p, p1, p2, yp, yi, yw;
+
<span></span><span></span><br>int vmin[] = new int[max(w, h)];
+
<span></span><span></span><br>int vmax[] = new int[max(w, h)];
+
<span></span><span></span><br>int[] pix=img.pixels;
+
<span></span><span></span><br>int dv[]=new int[256*div];
+
<span></span><span></span><br>for (i=0; i<256*div; i++) {
+
<span></span><span></span><span></span><br>dv[i]=(i/div);
+
<span></span><span></span><br>}
+
  
<span></span><span></span><br><br>yw=yi=0;
+
<br><br><span></span>void drawBlobsAndEdges(boolean drawBlobs, boolean drawEdges) {
 +
<br><span></span><span></span>pushMatrix();
 +
<br><span></span><span></span>translate(a, b);
 +
<br><span></span><span></span>noFill();
 +
<br><span></span><span></span>rectMode(CORNER);
 +
<br><span></span><span></span>Blob b;
 +
<br><span></span><span></span>EdgeVertex eA, eB;
  
<span></span><span></span><br><br>for (y=0; y<h; y++) {
+
<br><br><span></span><span></span>for (int n=0; n < theBlobDetection.getBlobNb (); n++)
<span></span><span></span><span></span><br>rsum=gsum=bsum=0;
+
<br><span></span><span></span>{
<span></span><span></span><span></span><br>for (i=-radius; i<=radius; i++) {
+
<br><span></span><span></span><span></span>b=theBlobDetection.getBlob(n);
<span></span><span></span><span></span><span></span><br>p=pix[yi+min(wm, max(i, 0))];
+
<br><span></span><span></span><span></span>if (b!=null)
<span></span><span></span><span></span><span></span><br>rsum+=(p & 0xff0000)>>16;
+
<br><span></span><span></span><span></span>{
<span></span><span></span><span></span><span></span><br>gsum+=(p & 0x00ff00)>>8;
+
<br><span></span><span></span><span></span><span></span>// Edges
<span></span><span></span><span></span><span></span><br>bsum+= p & 0x0000ff;
+
<br><span></span><span></span><span></span><span></span>if (drawEdges)
<span></span><span></span><span></span><br>}
+
<br><span></span><span></span><span></span><span></span>{
<span></span><span></span><span></span><br>for (x=0; x<w; x++) {
+
<br><span></span><span></span><span></span><span></span><span></span>strokeWeight(3);
 +
<br><br><span></span><span></span><span></span><span></span><span></span>stroke(0, 255, 0);
 +
<br><span></span><span></span><span></span><span></span><span></span>for (int m=0; m < b.getEdgeNb (); m++)
 +
<br><span></span><span></span><span></span><span></span><span></span>{
 +
<br><span></span><span></span><span></span><span></span><span></span><span></span>eA = b.getEdgeVertexA(m);
 +
<br><span></span><span></span><span></span><span></span><span></span><span></span>eB = b.getEdgeVertexB(m);
 +
<br><span></span><span></span><span></span><span></span><span></span><span></span>if (eA !=null && eB !=null)
 +
<br><span></span><span></span><span></span><span></span><span></span><span></span><span></span>line(
 +
<br><br><span></span><span></span><span></span><span></span><span></span><span></span><span></span>eA.x*block_size, eA.y*block_size,
 +
<br><br><br><span></span><span></span><span></span><span></span><span></span><span></span><span></span>eB.x*block_size, eB.y*block_size
 +
<br><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span>);
 +
<br><span></span><span></span><span></span><span></span><span></span>}
 +
<br><span></span><span></span><span></span><span></span>}
  
<span></span><span></span><span></span><span></span><br><br>r[yi]=dv[rsum];
+
<br><br><span></span><span></span><span></span><span></span>// Blobs
<span></span><span></span><span></span><span></span><br>g[yi]=dv[gsum];
+
<br><span></span><span></span><span></span><span></span>if (dist(block_size/2,block_size/2,b.xMin*block_size,
<span></span><span></span><span></span><span></span><br>b[yi]=dv[bsum];
+
<br><span></span><span></span><span></span><span></span>b.yMin*block_size) < radius
 +
<br><span></span><span></span><span></span><span></span>&&drawBlobs&&b.w*block_size>5&&b.w*block_size < 25&&
 +
<br><span></span><span></span><span></span><span></span>b.h*block_size>5&&b.h*block_size < 25)
 +
<br><span></span><span></span><span></span><span></span>{
 +
<br><span></span><span></span><span></span><span></span><span></span>strokeWeight(3);
 +
<br><span></span><span></span><span></span><span></span><span></span>stroke(255, 0, 0);
  
<span></span><span></span><span></span> <br><br>if (y==0) {
+
<br><br><span></span><span></span><span></span><span></span><span></span>rect(
<span></span><span></span><span></span><span></span><span></span><br>vmin[x]=min(x+radius+1, wm);
+
<br><span></span><span></span><span></span><span></span><span></span>b.xMin*block_size, b.yMin*block_size,
<span></span><span></span><span></span><span></span> <br>vmax[x]=max(x-radius, 0);
+
<br><span></span><span></span><span></span><span></span><span></span>b.w*block_size, b.h*block_size
<span></span><span></span><span></span><span></span><br>}
+
<br><span></span><span></span><span></span><span></span><span></span><span></span>);
<span></span><span></span><span></span><span></span><br>p1=pix[yw+vmin[x]];
+
<br><span></span><span></span><span></span><span></span>}
<span></span><span></span><span></span><span></span><br><br>p2=pix[yw+vmax[x]];
+
<br><span></span><span></span><span></span>}
 +
<br><span></span><span></span>}
 +
<br><span></span><span></span>popMatrix();
 +
<br><br><span></span>}
  
<span></span><span></span><span></span><span></span><br><br>rsum+=((p1 & 0xff0000)-(p2 & 0xff0000))>>16;
+
<br><br><span></span>void fastblur(PImage img, int radius)
<span></span><span></span><span></span><span></span><br>gsum+=((p1 & 0x00ff00)-(p2 & 0x00ff00))>>8;
+
<br><span></span>{
<span></span><span></span><span></span><span></span><br><br><br>bsum+= (p1 & 0x0000ff)-(p2 & 0x0000ff);
+
<br><span></span><span></span>if (radius < 1) {
<span></span><span></span><span></span><span></span><br>yi++;
+
<br><span></span><span></span><span></span>return;
<span></span><span></span><span></span><br>}
+
<br><span></span><span></span>}
<span></span><span></span><span></span><br>yw+=w;
+
<br><span></span><span></span>int w=img.width;
<span></span> <br> }
+
<br><span></span><span></span>int h=img.height;
 +
<br><span></span><span></span>int wm=w-1;
 +
<br><span></span><span></span>int hm=h-1;
 +
<br><span></span><span></span>int wh=w*h;
 +
<br><span></span><span></span>int div=radius+radius+1;
 +
<br><span></span><span></span>int r[]=new int[wh];
 +
<br><span></span><span></span>int g[]=new int[wh];
 +
<br><span></span><span></span>int b[]=new int[wh];
 +
<br><span></span><span></span>int rsum, gsum, bsum, x, y, i, p, p1, p2, yp, yi, yw;
 +
<br><span></span><span></span>int vmin[] = new int[max(w, h)];
 +
<br><span></span><span></span>int vmax[] = new int[max(w, h)];
 +
<br><span></span><span></span>int[] pix=img.pixels;
 +
<br><span></span><span></span>int dv[]=new int[256*div];
 +
<br><span></span><span></span>for (i=0; i < 256*div; i++) {
 +
<br><span></span><span></span><span></span>dv[i]=(i/div);
 +
<br><span></span><span></span>}
  
<span></span><span></span><br><br>for (x=0; x<w; x++) {
+
<br><br><span></span><span></span>yw=yi=0;
<span></span><span></span><span></span><br>rsum=gsum=bsum=0;
+
<span></span><span></span><span></span><br>yp=-radius*w;
+
<span></span><span></span><span></span><br>for (i=-radius; i<=radius; i++) {
+
<span></span><span></span><span></span><span></span><br>yi=max(0, yp)+x;
+
<span></span><span></span><span></span><span></span><br>rsum+=r[yi];
+
<span></span><span></span><span></span><span></span><br>gsum+=g[yi];
+
<span></span><span></span><span></span><span></span><br>bsum+=b[yi];
+
<span></span><span></span><span></span><span></span><br>yp+=w;
+
<span></span><span></span><span></span><br>}
+
<span></span><span></span><span></span><br>yi=x;
+
<span></span><span></span><span></span><br>for (y=0; y<h; y++) {
+
<span></span><span></span><span></span><span></span><br>pix[yi]=0xff000000 | (dv[rsum]<<16) | (dv[gsum]<<8) | dv[bsum];
+
<span></span><span></span><span></span><span></span><br>if (x==0) {
+
<span></span><span></span><span></span><span></span><span></span><br>vmin[y]=min(y+radius+1, hm)*w;
+
<span></span><span></span><span></span><span></span><span></span><br>vmax[y]=max(y-radius, 0)*w;
+
<span></span><span></span><span></span><span></span><br>}
+
<span></span><span></span><span></span><span></span><br>p1=x+vmin[y];
+
<span></span><span></span><span></span><span></span><br>p2=x+vmax[y];
+
  
<span></span><span></span><span></span><span></span><br><br>rsum+=r[p1]-r[p2];
+
<br><br><span></span><span></span>for (y=0; y < h; y++) {
<span></span><span></span><span></span><span></span><br>gsum+=g[p1]-g[p2];
+
<br><span></span><span></span><span></span>rsum=gsum=bsum=0;
<span></span><span></span><span></span><span></span><br>bsum+=b[p1]-b[p2];
+
<br><span></span><span></span><span></span>for (i=-radius; i<=radius; i++) {
 +
<br><span></span><span></span><span></span><span></span>p=pix[yi+min(wm, max(i, 0))];
 +
<br><span></span><span></span><span></span><span></span>rsum+=(p & 0xff0000)>>16;
 +
<br><span></span><span></span><span></span><span></span>gsum+=(p & 0x00ff00)>>8;
 +
<br><span></span><span></span><span></span><span></span>bsum+= p & 0x0000ff;
 +
<br><span></span><span></span><span></span>}
 +
<br><span></span><span></span><span></span>for (x=0; x < w; x++) {
  
<span></span><span></span><span></span><span></span><br><br>yi+=w;
+
<br><br><span></span><span></span><span></span><span></span>r[yi]=dv[rsum];
<span></span><span></span><span></span><br>}
+
<br><span></span><span></span><span></span><span></span>g[yi]=dv[gsum];
<span></span><span></span><br>}
+
<br><span></span><span></span><span></span><span></span>b[yi]=dv[bsum];
<span></span><br>}
+
  
<span></span><br><br>void save_blob() {
+
<br><br><span></span><span></span><span></span><span></span>if (y==0) {
 +
<br><span></span><span></span><span></span><span></span><span></span>vmin[x]=min(x+radius+1, wm);
 +
<br><span></span><span></span><span></span><span></span><span></span>vmax[x]=max(x-radius, 0);
 +
<br><span></span><span></span><span></span><span></span>}
 +
<br><span></span><span></span><span></span><span></span>p1=pix[yw+vmin[x]];
 +
<br><br><span></span><span></span><span></span><span></span>p2=pix[yw+vmax[x]];
  
<span></span><span></span><br><br>Blob b;
+
<br><br><span></span><span></span><span></span><span></span>rsum+=((p1 & 0xff0000)-(p2 & 0xff0000))>>16;
<span></span><span></span><br>blobs=new float[theBlobDetection.getBlobNb ()][4];
+
<br><span></span><span></span><span></span><span></span>gsum+=((p1 & 0x00ff00)-(p2 & 0x00ff00))>>8;
<span></span><span></span><br>for (int n=0; n<theBlobDetection.getBlobNb (); n++)
+
<br><span></span><span></span><span></span><span></span>bsum+= (p1 & 0x0000ff)-(p2 & 0x0000ff);
<span></span><span></span><br>{
+
<br><span></span><span></span><span></span><span></span>yi++;
<span></span><span></span><span></span><br>b=theBlobDetection.getBlob(n);
+
<br><span></span><span></span><span></span>}
<span></span><span></span><span></span><br>if (dist(block_size/2,block_size/2,b.xMin*block_size,
+
<br><span></span><span></span><span></span>yw+=w;
<span></span><span></span><span></span><span></span><br>b.yMin*block_size)<radius
+
<br><span></span> }
<span></span><span></span><span></span><br>&&b.w*block_size>5&&b.w*block_size<25&&
+
<span></span><span></span><span></span><br>b.h*block_size>5&&b.h*block_size<25){
+
<span></span><span></span><span></span><br>blobs[n][0]=b.xMin*block_size;
+
<span></span><span></span><span></span><br>blobs[n][1]=b.yMin*block_size;
+
<span></span><span></span><span></span><br>blobs[n][2]=b.w*block_size;
+
<span></span><span></span><span></span><br>blobs[n][3]=b.h*block_size;
+
<span></span><span></span><br>}
+
<span></span><span></span><br>}
+
<span></span><br>}
+
  
<span></span><br><br>void convert() {
+
<br><br><span></span><span></span>for (x=0; x<w; x++) {
<span></span><span></span><br>int row, col, i;
+
<br><span></span><span></span><span></span>rsum=gsum=bsum=0;
<span></span><span></span><br>for (int n=0; n<sequence.length; n++) {
+
<br><br><span></span><span></span><span></span>yp=-radius*w;
<span></span><span></span><span></span><br>sequence[n]=false;
+
<br><span></span><span></span><span></span>for (i=-radius; i<=radius; i++) {
<span></span><span></span><br>}
+
<br><span></span><span></span><span></span><span></span>yi=max(0, yp)+x;
<span></span><span></span><br>for (int n=0; n<blobs.length; n++) {
+
<br><span></span><span></span><span></span><span></span>rsum+=r[yi];
<span></span><span></span><span></span><br>row=int(blobs[n][0]+blobs[n][2]*0.5)/grid_size;
+
<br><span></span><span></span><span></span><span></span>gsum+=g[yi];
<span></span><span></span><span></span><br>col=int(blobs[n][1]+blobs[n][3]*0.5)/grid_size;
+
<br><span></span><span></span><span></span><span></span>bsum+=b[yi];
<span></span><span></span><span></span><br>i=row+col*grid_num;
+
<br><span></span><span></span><span></span><span></span>yp+=w;
<span></span><span></span> <br>if (i>0&&i<grid_num*grid_num) {
+
<br><span></span><span></span><span></span>}
<span></span><span></span><span></span><span></span><br>sequence[i]=true;
+
<br><span></span><span></span><span></span>yi=x;
<span></span><span></span><span></span><br>}
+
<br><span></span><span></span><span></span>for (y=0; y < h; y++) {
<span></span><span></span><br>}
+
<br><span></span><span></span><span></span><span></span>pix[yi]=0xff000000 | (dv[rsum]<< 16) | (dv[gsum]<< 8) | dv[bsum];
<span></span><br>}
+
<br><span></span><span></span><span></span><span></span>if (x==0) {
 +
<br><span></span><span></span><span></span><span></span><span></span>vmin[y]=min(y+radius+1, hm)*w;
 +
<br><span></span><span></span><span></span><span></span><span></span>vmax[y]=max(y-radius, 0)*w;
 +
<br><span></span><span></span><span></span><span></span>}
 +
<br><span></span><span></span><span></span><span></span>p1=x+vmin[y];
 +
<br><span></span><span></span><span></span><span></span>p2=x+vmax[y];
  
<span></span><br><br>void draw_grid() {
+
<br><br><span></span><span></span><span></span><span></span>\rsum+=r[p1]-r[p2];
<span></span><span></span><br>pushMatrix();
+
<br><span></span><span></span><span></span><span></span>gsum+=g[p1]-g[p2];
<span></span><span></span><br>translate(a, b);
+
<br><span></span><span></span><span></span><span></span>bsum+=b[p1]-b[p2];
<span></span><span></span><br>rectMode(CORNER);
+
<span></span><span></span><br>int x=0;
+
<span></span><span></span><br>int y=0;
+
<span></span><span></span><br>noStroke();
+
<span></span><span></span><br>fill(0);
+
<span></span><span></span><br>rect(-interval,-interval,(grid_size+interval)*grid_num+interval*2,
+
<span></span><span></span><br>(grid_size+interval)*grid_num+interval*2);
+
<span></span><span></span><br>for (int i=0; i<sequence.length; i++) {
+
<span></span><span></span><span></span><br>x=(grid_size+interval)*(i%grid_num);
+
<span></span><span></span><span></span><br>y=(grid_size+interval)*(i/grid_num);
+
  
<span></span><span></span><span></span><span></span><br><br>noStroke();
+
<br><br><span></span><span></span><span></span><span></span>yi+=w;
 +
<br><span></span><span></span><span></span>}
 +
<br><span></span><span></span>}
 +
<br><span></span>}
 +
 
 +
<br><br><span></span>void save_blob() {
 +
 
 +
<br><br><span></span><span></span>Blob b;
 +
<br><span></span><span></span>blobs=new float[theBlobDetection.getBlobNb ()][4];
 +
<br><span></span><span></span>for (int n=0; n < theBlobDetection.getBlobNb (); n++)
 +
<br><span></span><span></span>{
 +
<br><span></span><span></span><span></span>b=theBlobDetection.getBlob(n);
 +
<br><span></span><span></span><span></span>if (dist(block_size/2,block_size/2,b.xMin*block_size,
 +
<br><span></span><span></span><span></span><span></span>b.yMin*block_size)< radius
 +
<br><span></span><span></span><span></span>&&b.w*block_size>5&&b.w*block_size< 25&&
 +
<br><span></span><span></span><span></span>b.h*block_size>5&&b.h*block_size< 25){
 +
<br><span></span><span></span><span></span>blobs[n][0]=b.xMin*block_size;
 +
<br><span></span><span></span><span></span>blobs[n][1]=b.yMin*block_size;
 +
<br><span></span><span></span><span></span>blobs[n][2]=b.w*block_size;
 +
<br><span></span><span></span><span></span>blobs[n][3]=b.h*block_size;
 +
<br><span></span><span></span>}
 +
<br><span></span><span></span>}
 +
<br><span></span>}
 +
 
 +
<br><br><span></span>void convert() {
 +
<br><span></span><span></span>int row, col, i;
 +
<br><span></span><span></span>for (int n=0; n< sequence.length; n++) {
 +
<br><span></span><span></span><span></span>sequence[n]=false;
 +
<br><span></span><span></span>}
 +
<br><span></span><span></span>for (int n=0; n< blobs.length; n++) {
 +
<br><span></span><span></span><span></span>row=int(blobs[n][0]+blobs[n][2]*0.5)/grid_size;
 +
<br><span></span><span></span><span></span>col=int(blobs[n][1]+blobs[n][3]*0.5)/grid_size;
 +
<br><span></span><span></span><span></span>i=row+col*grid_num;
 +
<br><span></span><span></span>if (i>0&&i< grid_num*grid_num) {
 +
<br><span></span><span></span><span></span><span></span>sequence[i]=true;
 +
<br><span></span><span></span><span></span>}
 +
<br><span></span><span></span>}
 +
<br><span></span>}
 +
 
 +
<br><br><span></span>void draw_grid() {
 +
<br><span></span><span></span>pushMatrix();
 +
<br><span></span><span></span>translate(a, b);
 +
<br><span></span><span></span>rectMode(CORNER);
 +
<br><span></span><span></span>int x=0;
 +
<br><span></span><span></span>int y=0;
 +
<br><span></span><span></span>noStroke();
 +
<br><span></span><span></span>fill(0);
 +
<br><span></span><span></span>rect(-interval,-interval,(grid_size+interval)*grid_num+interval*2,
 +
<br><span></span><span></span>(grid_size+interval)*grid_num+interval*2);
 +
<br><span></span><span></span>for (int i=0; i< sequence.length; i++) {
 +
<br><span></span><span></span><span></span>x=(grid_size+interval)*(i%grid_num);
 +
<br><span></span><span></span><span></span>y=(grid_size+interval)*(i/grid_num);
 +
 
 +
<br><br><span></span><span></span><span></span><span></span>noStroke();
 
<span></span><span></span><span></span>
 
<span></span><span></span><span></span>
<span></span><span></span><span></span><br><br>if (sequence[i]) {
+
<br><br><span></span><span></span><span></span>if (sequence[i]) {
<span></span><span></span><span></span><span></span><br>fill(avg_color[0], avg_color[1], avg_color[2]);
+
<br><span></span><span></span><span></span><span></span><br>fill(avg_color[0], avg_color[1], avg_color[2]);
<span></span><span></span><span></span><br>} else {
+
<br><span></span><span></span><span></span>} else {
<span></span><span></span><span></span> <br>fill(70);
+
<br><span></span><span></span><span></span> fill(70);
<span></span><span></span><span></span><br>}
+
<br><span></span><span></span><span></span>}
<span></span><span></span><span></span><br>rect(x, y, grid_size, grid_size);
+
<br><span></span><span></span><span></span>rect(x, y, grid_size, grid_size);
<span></span><span></span><br>}
+
<br><span></span><span></span>}
<span></span><span></span><br>popMatrix();
+
<br><span></span><span></span>popMatrix();
<span></span><br>}
+
<br><span></span><br>}
  
<span></span><br><br>void glow(int n) {
+
<br><br><span></span><br><br>void glow(int n) {
<span></span><span></span><br>pushMatrix();
+
<br><span></span><span></span>pushMatrix();
<span></span><span></span><br>translate(a, b);
+
<br><span></span><span></span>translate(a, b);
<span></span><span></span><br>rectMode(CORNER);
+
<br><span></span><span></span>rectMode(CORNER);
<span></span><span></span><br>for (int m=0; m<grid_num; m++) {
+
<br><span></span><span></span>for (int m=0; m< grid_num; m++) {
<span></span><span></span><span></span><br>if (sequence[m*grid_num+n]) {
+
<br><span></span><span></span><span></span>if (sequence[m*grid_num+n]) {
<span></span><span></span><span></span><span></span><br>for (int p=-1; p<2; p++) {
+
<br><span></span><span></span><span></span><span></span>for (int p=-1; p< 2; p++) {
<span></span><span></span><span></span><span></span><span></span><br>for (int q=-1; q<2; q++) {
+
<br><span></span><span></span><span></span><span></span><span></span>for (int q=-1; q< 2; q++) {
<span></span><span></span><span></span><span></span><span></span><span></span><br>if (n+p>=0&&n+p<grid_num&&m+q>=0&&
+
<br><span></span><span></span><span></span><span></span><span></span><span></span>if (n+p>=0&&n+p< grid_num&&m+q>=0&&
<span></span><span></span><span></span><span></span><span></span><span></span><span></span><br>m+q<grid_num) {
+
<br><span></span><span></span><span></span><span></span><span></span><span></span><span></span>m+q< grid_num) {
<span></span><span></span><span></span><span></span><span></span><span></span><span></span><br>noStroke();
+
<br><span></span><span></span><span></span><span></span><span></span><span></span><span></span>noStroke();
<span></span><span></span><span></span><span></span><span></span><span></span><span></span><br><br>fill(255, 255, 255, 20);
+
<br><br><span></span><span></span><span></span><span></span><span></span><span></span><span></span>fill(255, 255, 255, 20);
<span></span><span></span><span></span><span></span><span></span><span></span><span></span><br>rect((n+p)*(interval+grid_size), (m+q)*(interval+grid_size),  
+
<br><span></span><span></span><span></span><span></span><span></span><span></span><span></span>rect((n+p)*(interval+grid_size), (m+q)*(interval+grid_size),  
 
<br><br><span></span><span></span><span></span><span></span><span></span><span></span><span></span>grid_size, grid_size);
 
<br><br><span></span><span></span><span></span><span></span><span></span><span></span><span></span>grid_size, grid_size);
 
<br><span></span><span></span><span></span><span></span><span></span><span></span>}
 
<br><span></span><span></span><span></span><span></span><span></span><span></span>}
Line 978: Line 977:
 
<br><span></span><span></span>float noteVal;
 
<br><span></span><span></span>float noteVal;
 
<br><span></span><span></span>float[] noteVals=new float[0];
 
<br><span></span><span></span>float[] noteVals=new float[0];
<br><span></span><span></span>for (int i=0; i<grid_num; i++) {
+
<br><span></span><span></span>for (int i=0; i< grid_num; i++) {
 
<br> <span></span><span></span><span></span>if (sequence[i*grid_num+n]) {
 
<br> <span></span><span></span><span></span>if (sequence[i*grid_num+n]) {
 
<br><span></span><span></span><span></span><span></span>noteVal = float(notes[i]);
 
<br><span></span><span></span><span></span><span></span>noteVal = float(notes[i]);
Line 1,019: Line 1,018:
 
<br><br>Source: blob detection  
 
<br><br>Source: blob detection  
 
http://www.v3ga.net/processing/BlobDetection/
 
http://www.v3ga.net/processing/BlobDetection/
 +
 
<br><br>soundcipher
 
<br><br>soundcipher
 
<br>http://explodingart.com/soundcipher/
 
<br>http://explodingart.com/soundcipher/

Latest revision as of 15:16, 18 September 2015

Code