xxxxxxxxxx
210
var bpm = 20;
let sel;
let video;
let poseNet;
let pose;
let noseX = 0;
let noseY = 0;
let root = [82, 110, 147, 197, 247, 330];
let cChord = [82, 131, 165, 197, 262, 330];
let dChord = [82, 110, 147, 220, 294, 370];
let eChord = [82, 123, 165, 208, 294, 370];
var col = 'white';
let synth = new Tone.Synth().toMaster();
let octave = 3 *24;
let midiNote = 60 + octave *12;
function setup() {
createCanvas(450, 400);
// let n = root
// let c = cChord
// n = 'Base'
// c = 'C Chord'
sel = createSelect();
//sel.position(width/2, 450);
sel.option('Open');
sel.option('C Chord');
sel.option('D Chord');
sel.option('E Chord');
sel.changed(musicStart);
video = createCapture(VIDEO);
video.hide();
poseNet = ml5.poseNet(video, modelLoaded);
poseNet.on('pose', gotPoses);
}
function gotPoses(poses) {
//console.log(poses);
if (poses.length > 0) {
pose = poses[0].pose;
//skeleton = poses[0].skeleton;
}
}
function modelLoaded() {
console.log('poseNet ready');
}
function draw() {
background(0);
image(video,0,0);
filter(GRAY);
tint(255, 127);
//video.hide();
var i;
stroke(col);
noFill();
line(50,150,400,150);
line(50,250,400,250);
var pos;
pos = 110;
for (i = 100; i <=350; i += 50 ){
line(i,50,i,pos);
line(i,pos,i,350);
ellipse(i, 50, 4, 4);
ellipse(i, 350, 4, 4);
}
if (pose) {
let noseX = pose.nose.x;
let noseY = pose.nose.y;
console.log(pose.nose);
ellipse(noseX,noseY,5,5);
if (noseY <= 350 && noseY >= 50){
//console.log(noseY);
if (noseX >= 95 && noseX <=105){
//background(255,0,255);
//stroke(0);
line(100,50,noseX,noseY);
line(noseX,noseY,100,350);
musicStart(0);
// pos = noseX;
// i = noseY;
} else if (noseX >= 145 && noseX <=155){
//background(0,255,0);
//stroke(0);
line(150,50,noseX,noseY);
line(noseX,noseY,150,350);
musicStart(1);
} else if (noseX >= 195 && noseX <=205){
// background(0,0,255);
// stroke(0);
line(200,50,noseX,noseY);
line(noseX,noseY,200,350);
musicStart(2);
} else if (noseX >= 245 && noseX <=255){
// background(255,255,0);
// stroke(0);
line(250,50,noseX,noseY);
line(noseX,noseY,250,350);
musicStart(3);
} else if (noseX >= 295 && noseX <=305){
// background(0,255,255);
// stroke(0);
line(300,50,noseX,noseY);
line(noseX,noseY,300,350);
musicStart(4);
} else if (noseX >= 345 && noseX <=355){
// background(255,0,0);
// stroke(0);
line(350,50,noseX,noseY);
line(noseX,noseY,350,350);
musicStart(5);
}
}
}
}
function musicStart(freQ){
let change = sel.value();
synth.toMaster();
Tone.Transport.bpm.value = 60;
if (change == 'C Chord') {
synth.triggerAttackRelease(cChord[freQ], 0.4);
col = 'cyan';
ellipse(150, 300, 40, 40);
ellipse(200, 200, 40, 40);
ellipse(300, 100, 40, 40);
} else if (change == 'D Chord') {
synth.triggerAttackRelease(dChord[freQ], 0.4);
col = 'yellow';
ellipse(250, 200, 40, 40);
ellipse(300, 300, 40, 40);
ellipse(350, 200, 40, 40);
} else if (change == 'E Chord') {
synth.triggerAttackRelease(eChord[freQ], 0.4);
col = 'magenta';
ellipse(150, 200, 40, 40);
ellipse(200, 200, 40, 40);
ellipse(250, 100, 40, 40);
} else {
synth.triggerAttackRelease(root[freQ], 0.4);
col = 'white';
}
}