import ddf.minim.*;
Minim minim; AudioPlayer groove; float distance = 0.0; float speed = 4; float objStep = 40;
color c2; boolean useRect;
void setup(){ fullScreen( P3D); minim = new Minim(this); groove = minim.loadFile("noise.mp3", 2048); groove.loop(); rectMode(CENTER); mousePressed();
}
void mousePressed(){
c2 = color(167); useRect = random(1) < 0.5 ? true: false; }
void draw(){ background(0); stroke(255);
//white waves for(int i = 0; i < groove.bufferSize() - 1; i++) { line(i, 50 + groove.left.get(i)50, i+1, 50 + groove.left.get(i+1)50); line(i, 150 + groove.right.get(i)50, i+1, 150 + groove.right.get(i+1)50); line(i, 300 + groove.left.get(i)50, i+1, 50 + groove.left.get(i+1)50); line(i, 600+ groove.right.get(i)50, i+1, 150 + groove.right.get(i+1)50); } //tunnel
lights(); translate(width / 2, height / 2); stroke(c2); strokeWeight(2); noFill(); for(float depth = 0; depth < 1500; depth += objStep){ pushMatrix(); translate(0, 0, depth - distance % objStep); float objSize = map(noise((distance + depth - distance % objStep) * 0.004), 0, 1, 50, 200); if(useRect){ rect(0, 0, objSize, objSize); } else { ellipse(0, 0, objSize, objSize); } popMatrix(); } distance += speed;
//red sphere noStroke(); fill(255,0,0); sphere(19);
}
void keyPressed() { if ( key == 'f' ) { // skip forward 1 second (1000 milliseconds) groove.skip(1000); } if ( key == 'r' ) { // skip backward 1 second (1000 milliseconds) groove.skip(-1000); } }