xxxxxxxxxx
157
var face = function(p){
p. MeterAnalyser;
p. mic;
p. fftAnalyser;
p. mouthRange;
p. eyebrowRange;
p. eyeOpenRange;
p.facemoveX;
p.facemoveY;
p.setup= function(){
p.rectMode(p.CENTER);
p.createCanvas(300, 300);
p.fftAnalyser= new Tone.Analyser({
"type" : "fft",
"size" : 32,
"smoothingg":0.9
});
p.MeterAnalyser= new Tone.Meter(0.8);
p.mic = new Tone.UserMedia();
p.mic.open();
p.mic.connect(p.MeterAnalyser);
p.mic.connect(p.fftAnalyser);
}
p.draw = function(){
p.background(10,200,200);
//console.log(round(MeterAnalyser.getValue()));
//p.noStroke();
//for(p.i=0; p.i<p.fftAnalyser.getValue().length;p.i++){
//p. amp=p.fftAnalyser.getValue();
//p. y = p.map(p.amp[p.i],-200,0,p.height,0);
//p.fill(0,p.y);
//p.rect(p.i*p.width/16,p.height,p.width/64, p.y-p.height);
// }
p.drawface();
//p.Xmas_hat(); // have face wear a hat for Christmas holiday Stream !
}
p.drawface= function(){
p.eggWhite ("#D4D4D4",5,5);
p.eggWhite ("#FFFDED",0,0);
p.facemoveX=p.map(p.mouseX,-500,300,-5,5);
p.facemoveY=p.map(p.mouseY,-500,300,-5,5);
p.noStroke();
p.fill(255,200,50,150);
p.ellipse(p.width/2+5,p.height/2+5,150,150);
p.fill(255,153,48);
p.ellipse(p.width/2,p.height/2,150,150);
//mouth
p.push();
p.mouthRange= p.map(p.round(p.MeterAnalyser.getValue()+18),-30,-10,0,20,true);
p.translate(p.facemoveX,p.facemoveY);
p.fill(0,0,0);
p.arc(p.width/2,p.height/2-p.mouthRange*0.5, 40,10+p.mouthRange*4.5,p.QUARTER_PI*0.5,-p.QUARTER_PI*4.5, p.PIE);
p.pop();
//eyes blink
p.push();
p.eyeOpenRange=p.map(p.round(p.fftAnalyser.getValue()[28]),-100,-80,30,0,true);
p.noStroke();
p.fill(255);
p.translate(p.facemoveX,p.facemoveY);
p.ellipse(p.width/2-20,p.height/2-30,20,p.eyeOpenRange);
p.ellipse(p.width/2+20,p.height/2-30,20,p.eyeOpenRange);
p.pop();
// eyebrow raise
p.push();
p.eyebrowRange=p.pow(p.map(p.round(p.fftAnalyser.getValue()[5]),-200,-10,0,8),2);
p.fill(0);
p.translate(p.facemoveX,p.facemoveY);
p.rect(p.width/2-20,p.height/2-90+p.eyebrowRange,20,5);
p.rect(p.width/2+20,p.height/2-90+p.eyebrowRange,20,5);
p.pop();
}
//below are bonus code which are not in tutorial, ignore below if you just want standard code
p.eggWhite= function(coloregg,positionX,positionY){
p.push();
p.translate(width/10*0.5+positionX,height/10*0.4+positionY);
p.scale(0.9);
p.beginShape();
p.fill(coloregg);
p.noStroke();
p.vertex(263.9,162.3);
p.bezierVertex(299.59999999999997,231,271.2,314.4,205.89999999999998,314.3);
p.bezierVertex(117.29999999999998,314.2,156.7,257.90000000000003,77.29999999999998,249.9);
p.bezierVertex(-28.500000000000014,239.3,-0.8000000000000114,158.3,19.899999999999984,127.60000000000001);
p.bezierVertex(33.7,107.2,7.2,71,20.5,38.2);
p.bezierVertex(35.7,0.8,87.1,-9.2,126.4,10.1);
p.bezierVertex(159.5,26.4,178.8,-6.9,232.9,24);
p.bezierVertex(305.6,65.6,244.5,125.1,263.9,162.3);
p.endShape();
p.pop();
}
p.Xmas_hat= function(){ //bonus function for Christmas
p.push();
p.fill(255,10,10);
p.triangle(p.width/2-35, 80, p.width/2-20, 20, p.width/2+20, 80);
p.triangle(p.width/2-20, 20, p.width/2-60,50,p.width/2-15,50);
p.pop();
p.push();
p.fill(255);
p.stroke(200);
p.ellipse( p.width/2-60,50, 15,15);
p.pop();
}
}
var myface = new p5(face,'newface');