xxxxxxxxxx
77
let mic;
let micLevel;
let maxOut = 0;
let peakDetect;
//let averageSound = 0;
let grfx;
let count = 0;
let pallete;
let url = "https://coolors.co/d9ce73-000000-a4b8c4-6e8387-43b64a";
function setup() {
createCanvas(500, 2000);
ellipseMode(CENTER);
grfx = createGraphics(500, 2000);
pallete = createPallete(url);
let cnv = createCanvas(500, 2000);
cnv.mousePressed(userStartAudio);
mic = new p5.AudioIn();
mic.start();
// create fft object to analyze mic input
fft = new p5.FFT();
fft.setInput(mic);
// peak detector
peakDetect = new p5.PeakDetect(3000, 4000);
}
function draw() {
background(20);
count++;
//noLoop();
micLevel = mic.getLevel();
if (micLevel > maxOut) maxOut = micLevel;
//console.log(maxOut);
background(255);
let spectrum = fft.analyze();
peakDetect.update(fft);
let c = random(pallete);
grfx.background(20);
grfx.strokeWeight(3);
grfx.stroke(c);
grfx.noFill();
grfx.push();
//grfx.translate(width / 2, 120);
for (let i = 1; i < 50; i++) {
let n = map(i, 1, 10, 0, 1);
let mx = map(int(fft.getEnergy("bass")), 0, width, -3, 30);
let my = map(int(fft.getEnergy("bass")) * 5, 0, width, -60, 60);
let size = sin(n);
grfx.push();
grfx.translate(my, i * sin(count * 0.1 * (i * 0.01)) * mx);
grfx.rect(0, 0, size * 185, size * 300);
grfx.pop();
}
grfx.pop();
translate(0, -60);
for (let x = 0; x < 4; x++) {
for (let y = 0; y < 64; y++) {
image(grfx, x * 175, y * 175, 175, 175, x * 100, y * 30, 175, 175);
}
}
}
function createPallete(_url) {
let slash_index = _url.lastIndexOf("/");
let pallate_str = _url.slice(slash_index + 1);
let arr = pallate_str.split("-");
for (let i = 0; i < arr.length; i++) {
arr[i] = "#" + arr[i];
}
return arr;
}