xxxxxxxxxx
70
let mic;
let micLevel;
let maxOut = 0;
//let peakDetect;
//let ellipseWidth = 10;
let c1, c2;
function preload() {
itc = loadFont("ITCAvantGardeStdBk.otf");
}
function setup() {
textAlign(CENTER);
textFont(itc);
fill(255);
let cnv = createCanvas(580, 500);
cnv.mousePressed(userStartAudio);
mic = new p5.AudioIn();
mic.start();
fft = new p5.FFT();
fft.setInput(mic);
}
function draw() {
background(255);
noStroke();
micLevel = mic.getLevel();
if (micLevel > maxOut) maxOut = micLevel;
c1 = color(128, 245, 236);
c2 = color(0, 0, 255);
// let cc = setGradient(c1, c2);
let hey = map(fft.getEnergy("mid"), 100, 190, 500, 0);
// background
setGradient2(c1, c2, 0, height + hey, width, 0);
fill(0, 0, 255);
let spectrum = fft.analyze();
//rect(width / 2 - 180, 340, 50, -fft.getEnergy("bass"));
//rect(width / 2 - 90, 340, 50, -fft.getEnergy("lowMid"));
//rect(width / 2, 340, 50, -fft.getEnergy("mid"));
rect(width / 2 + 90, 340, 50, -fft.getEnergy("highMid"));
rect(width / 2 + 180, 340, 50, -fft.getEnergy(1000, 1024));
console.log(fft.getEnergy("bass"));
//bar 1
let mid = map(fft.getEnergy("mid"), 10, 50, 320, 120);
setGradient2(c1, c2, mid, 340, 50, 50);
//bar 2
let bass = map(fft.getEnergy("bass"), 130, 180, 100, 40);
setGradient2(c1, c2, bass, 340, 100, 150);
}
function setGradient2(c1, c2, start, end, w, x) {
noFill();
for (let y = start; y < end; y++) {
var inter = map(y, start, end, 0, 1);
var c = lerpColor(c1, c2, inter);
stroke(c);
line(x, y, w + x, y);
}
}
function keyReleased() {
if (key == "s" || key == "S") saveCanvas("bandcamp_logo_v1", "png");
}