xxxxxxxxxx
109
let song;
var video;
var vScale = 16
var cols = 40;
var rows = 40;
var slider;
var value = 0
function preload() {
song = loadSound('sound.m4a');
}
function setup() {
createCanvas(640, 640);
video = createCapture(VIDEO);
video.size(cols, rows);
slider = createSlider(0, 255, 120);
video.hide();
song.loop();
}
function mouseClicked() {
if (value === 0 && vScale === 16) {
value = 255;
vScale = 40;
} else {
value = 0;
vScale = 16;
}
}
function draw() {
background(0);
rectMode(CENTER);
noStroke();
video.loadPixels();
loadPixels();
for (var x = 0; x < video.width; x++) {
for (var y = 0; y < video.height; y++) {
var index
if (x > y) {
index = (x + y * video.width) * 4
} else {
index = ((video.width - x + 1) + (y * video.width)) * 4
}
var r = video.pixels[index];
var g = video.pixels[index + 1];
var b = video.pixels[index + 2];
var brightness = (r + g + b) / 3
var w = map(brightness, 0, 255, 0, vScale) //or vScale
var threshold = slider.value();
if (brightness > threshold) {
fill(value, 0, 255)
} else {
fill(0, 255, value);
}
rect((x * vScale / 2), y * vScale / 2, w, w);
rect((y * vScale / 2), (x * vScale / 2), w, w);
push();
rotate(PI / 2.0);
rect((x * vScale / 2), (y * vScale / 2) - 640, w, w);
rect((y * vScale / 2), (x * vScale / 2) - 640, w, w);
pop();
push();
rotate(2 * PI / 2.0);
rect((x * vScale / 2) - 640, (y * vScale / 2) - 640, w, w);
rect((y * vScale / 2) - 640, (x * vScale / 2) - 640, w, w);
pop();
push();
rotate(3 * PI / 2.0);
rect((x * vScale / 2) - 320, (y * vScale / 2) + 320, w, w);
rect((y * vScale / 2) - 320, (x * vScale / 2) + 320, w, w);
rect((x * vScale / 2) - 640, (y * vScale / 2), w, w);
rect((y * vScale / 2) - 640, (x * vScale / 2), w, w);
pop();
push();
rotate(PI / 2.0);
rect((x * vScale / 2) + 320, (y * vScale / 2) - 320, w, w);
rect((y * vScale / 2) + 320, (x * vScale / 2) - 320, w, w);
pop();
rect((x * vScale / 2) + 320, y * (vScale / 2) + 320, w, w);
rect((y * vScale / 2) + 320, (x * vScale / 2) + 320, w, w);
push();
rotate(2 * PI / 2.0);
rect((x * vScale / 2) - 320, (y * vScale / 2) - 320, w, w);
rect((y * vScale / 2) - 320, (x * vScale / 2) - 320, w, w);
pop();
}
}
}