xxxxxxxxxx
77
let mic;
let fft;
let fr = 60;
function setup() {
createCanvas(1000, 1000);
layer = createGraphics(width, height);
background('black');
mic = new p5.AudioIn();
mic.start();
fft = new p5.FFT(0, 256);
fft.setInput(mic);
a = 0;
b = 360 / (120 * fr);
frameRate(fr);
}
function draw() {
background(0);
layer.noFill();
layer.colorMode(RGB);
// Analyze live audio spectrum
var spectrumA = fft.analyze();
var spectrumB = spectrumA.reverse();
spectrumB.splice(0, 40);
// Drawing waveform in center
push();
translate(width/2, height/2);
noFill();
stroke('rgb(218,26,59)');
beginShape();
for (let i = 0; i < spectrumB.length; i++) {
var amp = spectrumB[i];
var x = map(amp, 0, 256, -2, 2);
var y = map(i, 0, spectrumB.length, 30, 215);
vertex(x, y);
}
endShape();
pop();
// Rotating visuals
push();
translate(width/2, height/2);
rotate(radians(a));
layer.push();
layer.translate(width/2, height/2);
layer.rotate(radians(-a));
for (let i = 0; i < spectrumB.length; i++) {
layer.strokeWeight(0.018 * spectrumB[i]);
layer.stroke(245, 132, 255 - spectrumB[i], spectrumB[i] / 40);
layer.line(0, i, 0, i);
}
layer.pop();
image(layer, -width/2, -height/2);
pop();
// Update rotation angle
a += b;
}