22. Dezember 2010
![](../../../../files/2010/12/Bildschirmfoto-2010-12-22-um-22.43.31-300x297.png)
import ddf.minim.*; import ddf.minim.analysis.*; Minim minim; AudioPlayer song; BeatDetect beat; int anzahl = 13; int rand = 50; int fade = 0; float xStep; float yStep; float drehen; float zoom; boolean drawflag=false; boolean flagKey=false; boolean flagFade=false; boolean flagDirection=false; int[] permutationsIndexList1 = {0, 1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1, 0, 1, 2, 3, 4, 5, 6, 5, 6, 5, 4, 3, 2, 1, 2, 3, 4, 5, 6, 5, 4, 5, 6, 5, 4, 3, 2, 3, 4, 5, 6, 5, 4, 3, 4, 5, 6, 5, 4, 3, 4, 5, 6, 5, 4, 3, 2, 3, 4, 5, 6, 5, 4, 5, 6, 5, 4, 3, 2, 1, 2, 3, 4, 5, 6, 5, 6, 5, 4, 3, 2, 1, 0, 1, 2, 3, 4, 5, 6, 5, 6, 5, 4, 3, 2, 1, 2, 3, 4, 5, 6, 5, 4, 5, 6, 5, 4, 3, 2, 3, 4, 5, 6, 5, 4, 3, 4, 5, 6, 5, 4, 3, 4, 5, 6, 5, 4, 3, 2, 3, 4, 5, 6, 5, 4, 5, 6, 5, 4, 3, 2, 1, 2, 3, 4, 5, 6, 5, 6, 5, 4, 3, 2, 1, 0, 1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1, 0,}; void setup() { size(700,700); smooth(); xStep = (width - 2 * rand) / (float)(anzahl-1); yStep = (height - 2 * rand) / (float)(anzahl-1); //noLoop(); minim = new Minim(this); song = minim.loadFile("sound.mp3", 1024); song.play(); beat = new BeatDetect(); } void draw() { beat.detect(song.mix); if(beat.isOnset()) { //println("beat!"); //mach was } background(255); int permutationsIndex = 0; pushMatrix(); translate(rand,rand); for(int y=0; y<anzahl;y++) { pushMatrix(); for(int x=0; x<anzahl;x++) { drawPermutationObj1(permutationsIndexList1[permutationsIndex], x, y, fade); drawPermutationObj2(permutationsIndexList1[permutationsIndex], x, y, 255-fade); //print(str(permutationsIndexList1[permutationsIndex]) + "\t"); ++permutationsIndex; translate(xStep,0.0f); } //println(); popMatrix(); translate(0.0f,yStep); } popMatrix(); if(flagFade && flagDirection) { fade = fade - 10; println(fade); if(fade = 255) { flagFade = false; } } } void keyPressed() { switch(key) { case 'A' : case 'a' : flagKey = true; break; case 'C' : case 'c' : flagKey = false; break; case ' ' : flagFade = true; flagDirection = (fade>=255); break; } } void drawPermutationObj1(int type, int x, int y, int fade) { pushMatrix(); drehen = map(mouseX+mouseY, 0, width+height, 0, TWO_PI*2); //zoom = map(mouseX+mouseY, 0, width+height, 0, 1.1); PVector PosObject = new PVector(x, y, 0); PVector PosMouse = new PVector(map(mouseX, 0, width, 0, 6), map(mouseY, 0, height, 0, 6)); float distance = PosObject.dist(PosMouse); float zoom = 1; if(flagKey) { // if((key == 'a') || (key == 'A')); zoom = map(distance, 0, sqrt(72), 0, 1); } else { // if((key == 'c') || (key == 'C')); zoom = map(distance, 0, sqrt(72), 1, 0); } pushStyle(); switch(type) { case 0: if(beat.isOnset()) { scale(zoom +2);} rotate(drehen); scale(zoom); stroke(0,fade); fill(0,fade); ellipse(0,0,75,75); fill(255,fade); ellipse(0,0,72,72); fill(0,fade); ellipse(-3,0,65,65); fill(255,fade); ellipse(-14,0,40,40); fill(0,fade); ellipse(-17,0,32,32); fill(255,fade); stroke(255,fade); ellipse(-11,0,20,20); break; case 1: if(beat.isOnset()) { scale(zoom +2); } rotate(drehen); scale(zoom); stroke(0,fade); fill(0,fade); ellipse(0,0,75,75); fill(255,fade); ellipse(2,0,69,69); fill(0,fade); ellipse(-5,0,58,58); fill(255,fade); ellipse(-11,0,45,45); fill(0,fade); ellipse(-13,0,38,38); fill(255,fade); stroke(255,fade); ellipse(-5,0,26,26); break; case 2: rotate(drehen); scale(zoom); if(beat.isOnset()) { scale(zoom +2); } stroke(0,fade); fill(0,fade); ellipse(0,0,75,75); fill(255,fade); ellipse(4,0,65,65); fill(0,fade); ellipse(-5,0,56,56); fill(255,fade); ellipse(-8,0,50,50); fill(0,fade); ellipse(-11,0,41,41); fill(255,fade); stroke(255,fade); ellipse(-4,0,30,30); break; case 3: rotate(drehen); scale(zoom); if(beat.isOnset()) { scale(zoom +2); } stroke(0); fill(0,fade); ellipse(0,0,75,75); fill(255,fade); ellipse(5,0,62,62); fill(0,fade); ellipse(-4,0,56,56); fill(255,fade); ellipse(-6,0,55,55); fill(0,fade); ellipse(-9,0,46,46); fill(255,fade); stroke(255,fade); ellipse(-3,0,38,38); break; case 4: rotate(drehen); scale(zoom); if(beat.isOnset()) { scale(zoom +2); } stroke(0,fade); fill(0,fade); ellipse(0,0,75,75); fill(255,fade); ellipse(5,0,62,62); fill(255,fade); stroke(255,fade); ellipse(-4,0,57,57); fill(0,fade); ellipse(-7,0,52,52); fill(255,fade); stroke(255,fade); ellipse(-2,0,43,43); break; case 5: rotate(drehen); scale(zoom); if(beat.isOnset()) { scale(zoom +2); } stroke(0,fade); fill(0,fade); ellipse(0,0,75,75); fill(255,fade); ellipse(5,0,62,62); fill(255,fade); stroke(255,fade); ellipse(-4,0,61,61); fill(0,fade); ellipse(-6,0,58,58); fill(255,fade); stroke(255,fade); ellipse(-1,0,51,51); break; case 6: rotate(drehen); scale(zoom); if(beat.isOnset()) { scale(zoom +2); } stroke(0,fade); fill(0,fade); ellipse(0,0,75,75); fill(255,fade); stroke(255,fade); ellipse(0,0,66,66); fill(0,fade); ellipse(-4,0,60,60); fill(255,fade); stroke(255,fade); ellipse(0,0,58,58); break; default: break; } popStyle(); popMatrix(); } void drawPermutationObj2(int type, int x, int y, int fade) { pushMatrix(); drehen = map(mouseX+mouseY, 0, width+height, 0, TWO_PI*2); //zoom = map(mouseX+mouseY, 0, width+height, 0, 1.1); PVector PosObject = new PVector(x, y, 0); PVector PosMouse = new PVector(map(mouseX, 0, width, 0, 6), map(mouseY, 0, height, 0, 6)); float distance = PosObject.dist(PosMouse); float zoom = 1; if(flagKey) { // if((key == 'a') || (key == 'A')); zoom = map(distance, 0, sqrt(72), 0, 1.2); } else { // if((key == 'c') || (key == 'C')); zoom = map(distance, 0, sqrt(72), 1, 0); } pushStyle(); switch(type) { case 0: if(beat.isOnset()) { scale(zoom +2); } rotate(drehen); scale(zoom); stroke(0,fade); fill(0,fade); ellipse(0,0,75,75); fill(255,fade); ellipse(0,0,72,72); fill(0,fade); ellipse(0,0,65,65); fill(255,fade); //ellipse(0,0,40,40); //fill(0); //ellipse(0,0,32,32); //fill(255); //stroke(255); //ellipse(0,0,20,20); break; case 1: if(beat.isOnset()) { scale(zoom +2); } rotate(drehen); scale(zoom); stroke(0,fade); fill(0,fade); ellipse(0,0,75,75); fill(255,fade); ellipse(0,0,72,72); fill(0,fade); ellipse(0,0,65,65); fill(255,fade); ellipse(0,0,5,5); //fill(0); //ellipse(0,0,32,32); //fill(255); //stroke(255); //ellipse(0,0,20,20); break; case 2: if(beat.isOnset()) { scale(zoom +2); } rotate(drehen); scale(zoom); stroke(0,fade); fill(0,fade); ellipse(0,0,75,75); fill(255,fade); ellipse(0,0,72,72); fill(0,fade); ellipse(0,0,65,65); fill(255,fade); ellipse(0,0,20,20); fill(0,fade); ellipse(0,0,10,10); //fill(255); //stroke(255); //ellipse(0,0,20,20); break; case 3: if(beat.isOnset()) { scale(zoom +2); } rotate(drehen); scale(zoom); stroke(0,fade); fill(0,fade); ellipse(0,0,75,75); fill(255,fade); ellipse(0,0,72,72); fill(0,fade); ellipse(0,0,65,65); fill(255,fade); ellipse(0,0,35,35); fill(0,fade); ellipse(0,0,20,20); fill(255,fade); stroke(255,fade); ellipse(0,0,5,5); break; case 4: if(beat.isOnset()) { scale(zoom +2); } rotate(drehen); scale(zoom); stroke(0,fade); fill(0,fade); ellipse(0,0,75,75); fill(255,fade); ellipse(0,0,72,72); fill(0,fade); ellipse(0,0,65,65); fill(255,fade); ellipse(0,0,45,45); fill(0,fade); ellipse(0,0,30,30); fill(255,fade); stroke(255,fade); ellipse(0,0,15,15); break; case 5: if(beat.isOnset()) { scale(zoom +2); } rotate(drehen); scale(zoom); stroke(0,fade); fill(0,fade); ellipse(0,0,75,75); fill(255,fade); ellipse(0,0,72,72); fill(0,fade); ellipse(0,0,65,65); fill(255,fade); ellipse(0,0,55,55); fill(0,fade); ellipse(0,0,40,40); fill(255,fade); stroke(255,fade); ellipse(0,0,25,25); break; case 6: if(beat.isOnset()) { scale(zoom +2); } rotate(drehen); scale(zoom); stroke(0,fade); fill(0,fade); ellipse(0,0,75,75); fill(255,fade); ellipse(0,0,72,72); fill(0,fade); ellipse(0,0,65,65); fill(255,fade); ellipse(0,0,60,60); fill(0,fade); ellipse(0,0,50,50); fill(255,fade); stroke(255,fade); ellipse(0,0,38,38); break; default: break; } popStyle(); popMatrix(); }