xxxxxxxxxx
57
let song;
let fft;
let button;
let cr = 0;
let cg = 0;
let rate = 0.5;
function preload() {
song = loadSound("final+drum.mp3");
}
function toggleSong() {
if (song.isPlaying()) {
song.pause();
} else {
song.play();
}
}
function setup() {
createCanvas(640, 640);
angleMode(DEGREES);
button = createButton("toggle");
button.mousePressed(toggleSong);
song.play();
fft = new p5.FFT(0.9, 512);
}
function draw() {
background(255);
noStroke();
for (let d = 0; d < width; d += 70) {
fill(cr, cg, d, 10);
circle(width / 2, height / 2, d);
}
cr += rate;
if (cr < 0 || cr > 255) {
rate *= -1;
}
cg += rate;
if (cg < 0 || cg > 255) {
rate *= -1;
}
translate(width / 2, height / 2);
let spectrum = fft.analyze();
for (let i = 0; i < 100; i++) {
let angle = map(i, 0, 100, 0, 360);
let amp = spectrum[i];
let r = map(amp, 0, 256, 280, 150);
let x = r * cos(angle);
let y = r * sin(angle);
stroke(30, 30, 120);
strokeWeight(0.4);
line(0, 0, x, y);
}
}