xxxxxxxxxx
79
let video, stronger, fft, sliderCol, toggle;
let vScale = 21;
function preload() {
stronger = loadSound('kelly-clarkson-stronger-what-doesnt-kill-you.mp3');
}
function setup() {
createCanvas(640, 480);
toggle = createButton('Pause');
toggle.style('display', 'block');
toggle.style('margin-right', 'auto');
toggle.style('margin-left', 'auto');
toggle.mousePressed(musicToggle);
colorChange = createP('Change Color ');
sliderCol = createSlider(0, 255, 128);
sliderCol.parent(colorChange);
pixelDensity(1);
video = createCapture(VIDEO);
video.size(width / vScale, height / vScale);
video.hide();
fft = new p5.FFT();
stronger.amp(0.8);
stronger.play();
}
function draw() {
background(26, 26, 26);
video.loadPixels();
loadPixels();
fft.analyze();
let strongerTreble = fft.getEnergy("treble");
let strongerHighMid = fft.getEnergy("highMid");
let strongerBass = fft.getEnergy("bass");
let heartSize = map(strongerBass, 0, 255, 0, 26)
// console.log(strongerHighMid);
noStroke();
fill(strongerHighMid, strongerHighMid, 200, 80);
textSize(strongerHighMid * 4);
push();
translate(width / 2, 9 * height / 10);
textAlign(CENTER);
text('❤', 0, 0);
pop();
for (let x = 0; x < video.width; x++) {
for (let y = 0; y < video.height; y++) {
let i = (video.width - x - 1 + (y * video.width)) * 4;
let r = video.pixels[i + 0];
let g = video.pixels[i + 1];
let b = video.pixels[i + 2];
let bright = (r + g + b) / 3;
let threshold = 90;
if (strongerTreble < threshold) {
fill(r + sliderCol.value(), g, b, random(100, 200));
textSize(heartSize);
text('❤', x * vScale, y * vScale);
} else {
fill(r, g + 75, b + sliderCol.value(), random(100, 200));
textSize(heartSize);
text('❤', x * vScale, y * vScale);
}
}
}
}
function musicToggle() {
if (!stronger.isPlaying()) {
stronger.play();
toggle.html('Pause');
} else {
stronger.pause();
toggle.html('Play');
}
}