p5.js és una biblioteca de JavaScript que facilita la creació de gràfics i interaccions creatives. Amb p5.js podem dibuixar formes, treballar amb colors, sons i interactivitat amb el ratolí, teclat o micròfon.
Primer creem el nostre llenç amb createCanvas
i triem la mida que vulguem:
function setup() {
createCanvas(400, 400);
}
Dibuixarem una cara elíptica amb dos ulls rodons i una boca en forma d'arc.
function draw() {
background(220);
// Cara
fill(255, 220, 185);
ellipse(width / 2, height / 2, 200, 250);
// Ull esquerre
fill(0);
ellipse(width / 2 - 50, height / 2 - 50, 30, 30);
// Ull dret
ellipse(width / 2 + 50, height / 2 - 50, 30, 30);
// Boca - per ara està fixa
noFill();
stroke(0);
arc(width / 2, height / 2 + 50, 80, 40, 0, PI);
}
Necessitem p5.sound
per captar el so. Activem el micròfon i usem getLevel()
per obtenir el volum:
let mic;
function setup() {
createCanvas(400, 400);
mic = new p5.AudioIn();
mic.start();
}
function draw() {
background(220);
let vol = mic.getLevel();
// Cara
fill(255, 220, 185);
ellipse(width / 2, height / 2, 200, 250);
// Ulls
fill(0);
ellipse(width / 2 - 50, height / 2 - 50, 30, 30);
ellipse(width / 2 + 50, height / 2 - 50, 30, 30);
// Boca amb volum
noFill();
stroke(0);
arc(width / 2, height / 2 + 50, 80, 40 + vol * 300, 0, PI);
}
fill(map(vol, 0, 1, 0, 255), 100, 150)
.sin()
i cos()
: Prova de fer que els ulls es moguin lleugerament amb el temps: ellipse(width / 2 - 50 + sin(frameCount * 0.1) * 5, height / 2 - 50, 30, 30);
random()
per fer que el tamany canviï aleatòriament.noise()
: ellipse(width / 2, height / 2, 200 + noise(frameCount * 0.01) * 50, 250);
Prova-ho directament aquí: