xxxxxxxxxx
198
var c;
var grid = 300;
var diam = 300;
var actRandomSeed = 0;
var soundFile;
var amplitude;
var beatHoldFrames = 5;
var beatThreshold = 0.31;
var beatCutoff = 0;
var beatDecayRate = 0.98;
var framesSinceLastBeat = 0;
function preload() {
soundFile = loadSound('/holdyoutight20sec.mp3');
}
function setup() {
c = createCanvas(900, 900);
ellipseMode(CORNER);
amplitude = new p5.Amplitude();
soundFile.play();
amplitude.setInput(soundFile);
amplitude.smooth(0.9);
}
function draw() {
background(0);
var level = amplitude.getLevel();
detectBeat(level);
randomSeed(actRandomSeed);
for (var i = 0; i < 3; i++) {
for (var j = 0; j < 3; j++) {
x = i * grid;
y = j * grid;
//d = diam;
var r = int(random(10));
if (r == 0) {
// arc 0
noStroke(0);
fill(255);
ellipse(x, y, grid, grid);
}
if (r == 1) {
// arc 2
noStroke(0);
fill(255);
rect(x, y, grid, grid);
}
if (r == 2) {
// arc 2
noStroke(0);
fill(255);
push();
translate(x, y);
beginShape();
vertex(0, 0);
vertex(0, grid);
vertex(grid / 2, grid / 2);
vertex(grid, grid);
vertex(grid, 0);
endShape(CLOSE);
pop();
//triangle(x1, y2, x2, y2, x3, y3);
//triangle(x, grid, grid/2, y, grid, grid);
//rect(x, y, grid, grid);
}
if (r == 3) {
// arc 2
noStroke(0);
fill(255);
ellipse(x, y, grid, grid);
fill(0);
ellipseMode(CENTER);
ellipse(x + (grid / 2), y + (grid / 2), grid / 3, grid / 3);
ellipseMode(CORNER);
}
if (r == 4) {
// arc 2
noStroke(0);
fill(255);
push();
translate(x, y);
triangle(0, grid, grid/2, 0, grid, grid);
pop();
}
if (r == 5) {
for (var k = 0; k < 3; k++) {
for (var l = 0; l < 3; l++) {
miniX = x + (k * grid / 3);
miniY = y + (l * grid / 3);
// noStroke(0);
// fill(0, 255, 0);
// ellipse(miniX, miniY, grid / 3, grid / 3);
var miniR = int(random(5));
if (miniR == 0) {
// arc 0
noStroke(0);
fill(255);
ellipse(miniX, miniY, grid / 3, grid / 3);
}
if (miniR == 1) {
// arc 2
noStroke(0);
fill(255);
rect(miniX, miniY, grid / 3, grid / 3);
}
}
}
}
if (r == 6) {
for (var m = 0; m < 2; m++) {
for (var n = 0; n < 2; n++) {
quadX = x + (m * grid / 2);
quadY = y + (n * grid / 2);
// noStroke(0);
// fill(0, 255, 0);
// ellipse(miniX, miniY, grid / 3, grid / 3);
var quadR = int(random(5));
if (quadR == 0) {
// arc 0
noStroke(0);
fill(255);
ellipse(quadX, quadY, grid / 2, grid / 2);
}
if (quadR == 1) {
// arc 2
noStroke(0);
fill(255);
rect(quadX, quadY, grid / 2, grid / 2);
}
}
}
}
}
}
}
function detectBeat(level) {
if (level > beatCutoff && level > beatThreshold){
onBeat();
beatCutoff = level *1.2;
framesSinceLastBeat = 0;
} else{
if (framesSinceLastBeat <= beatHoldFrames){
framesSinceLastBeat ++;
}
else{
beatCutoff *= beatDecayRate;
beatCutoff = Math.max(beatCutoff, beatThreshold);
}
}
}
function onBeat() {
actRandomSeed = random(100000);
}
function keyReleased() {
if (key == 's' || key == 'S') {
saveCanvas(c, 'myCanvas' + frameCount + '.jpg', 'jpg');
}
}
function mousePressed() {
actRandomSeed = random(100000);
}