xxxxxxxxxx
203
class buble {
constructor(x_,y_,r_){
this.x=x_;
this.y=y_;
this.r=r_;
}
contains(mx, my) {
return dist(mx, my, this.x, this.y) < this.r - radio / 2;
}
display(mx, my) {
if (this.contains(mx, my)) {
fill(255,0,0);
} else {
fill(255);
}
stroke(0);
strokeWeight(1);
ellipse(this.x, this.y, this.r, this.r);
}
}
let pista1;
let pista2;
let pista3;
let pista4;
let pista5;
let pista6;
let song1;
let song2;
let song3;
let song4;
let song5;
let song6;
let radio =25;
var mic;
var canvas;
var w = window.innerWidth;
var h = window.innerHeight;
var analyzer;
var delay;
var reverb;
var sliderVolume;
var sliderRate;
var sliderDelay;
var sliderDelayF;
var sliderRT;
var sliderRDR;
var reverb;
var analyzer;
var vol;
function preload() {
song1 =loadSound ('assets/alboka A.mp3');
song2 =loadSound ('assets/alboka B.mp3');
song3 =loadSound ('assets/alboka C.mp3');
song4 =loadSound ('assets/alboka D-C.mp3');
song5 =loadSound ('assets/alboka E-C.mp3');
song6 =loadSound ('assets/alboka F-C.mp3');
song1.disconnect();
song2.disconnect();
song3.disconnect();
song4.disconnect();
song5.disconnect();
song6.disconnect();
}
function setup (){
canvas = createCanvas(window.innerWidth, window.innerHeight);
mic = new p5.AudioIn();
mic.start();
background(204);
img = loadImage('assets/alboka.png');
delay = new p5.Delay();
reverb = new p5.Reverb();
sliderVolume=createSlider (0,1,0.5,0.01);
sliderVolume.position(windowWidth/4,windowHeight/7);
sliderRate=createSlider (0, 2, 1, 0.01);
sliderRate.position(windowWidth/4,windowHeight/5.5);
sliderDelay = createSlider(0, 99, 50);
sliderDelay.position(windowWidth/4,windowHeight/4.6);
sliderDelayF = createSlider(0, 99, 50);
sliderDelayF.position(windowWidth/4,windowHeight/4);
sliderRT = createSlider(0, 100, 0,1);
sliderRT.position(windowWidth/4,windowHeight/3.5);
sliderRDR = createSlider(0, 99, 0,0.01);
sliderRDR.position(windowWidth/4,windowHeight/3.1);
delay = new p5.Delay();
delay.process(song1, sliderDelay.value()/100, sliderDelayF.value()/100, 800);
delay.process(song2, sliderDelay.value()/100, sliderDelayF.value()/100, 800);
delay.process(song3, sliderDelay.value()/100, sliderDelayF.value()/100, 800);
delay.process(song4, sliderDelay.value()/100, sliderDelayF.value()/100, 800);
delay.process(song5, sliderDelay.value()/100, sliderDelayF.value()/100, 800);
delay.process(song6, sliderDelay.value()/100, sliderDelayF.value()/100, 800);
reverb = new p5.Reverb();
reverb.process(song1, sliderRT.value(), sliderRDR.value());
reverb.process(song2, sliderRT.value(), sliderRDR.value());
reverb.process(song3, sliderRT.value(), sliderRDR.value());
reverb.process(song4, sliderRT.value(), sliderRDR.value());
reverb.process(song5, sliderRT.value(), sliderRDR.value());
reverb.process(song6, sliderRT.value(), sliderRDR.value());
}
function draw(){
background(250);
for (var i = 0; i < touches.length; i++) {
ellipse(touches[i].x, touches[i].y,100,100)};
micLevel = mic.getLevel();
image(img,windowWidth/8,windowHeight/4, windowWidth/1.2,windowHeight/1.2);
pista1 =new buble(w/1.95,h/1.28, radio);
pista2 =new buble(w/2.12,h/1.33, radio);
pista3 =new buble(w/2.38,h/1.4, radio);
pista4 =new buble(w/2.65,h/1.47, radio);
pista5 =new buble(w/3,h/1.54, radio);
pista6 =new buble(w/3.4,h/1.63, radio);
fill(0);
text("1",w/1.95,h/1.35);
text("2",w/2.12,h/1.4);
text("3",w/2.38,h/1.48);
text("4",w/2.65,h/1.55);
text("5",w/3,h/1.62);
text("6",w/3.2,h/1.7);
textSize(32);
textAlign(CENTER)
fill(0);
text('ALBOKA', windowWidth/2,windowHeight/14);
textSize(20);
fill(0);
text('Instrumento tradicional Vasco', windowWidth/2,windowHeight/8);
textSize(12);
textAlign(RIGHT);
text("Posiciones:",w/1.5,h/5);
text("1:La (A)",w/1.5,h/4.5);
text("2:Si (B)",w/1.5,h/4.);
text("3:Do (C)",w/1.5,h/3.6);
text("4:Re (D)",w/1.5,h/3.3);
text("5:Mi-Do (E)",w/1.5,h/3.05);
text("6:Fa-Do (D)",w/1.5,h/2.8);
textSize(12);
textAlign(LEFT);
text("Volumen: "+sliderVolume.value()*100, windowWidth/30,windowHeight/6);
text("Rate: "+sliderRate.value(), windowWidth/30,windowHeight/4.8);
text("Delay: "+sliderDelay.value(), windowWidth/30,windowHeight/4.12);
text("Delay Feedback: "+sliderDelayF.value()/100, windowWidth/30,windowHeight/3.6);
text("Reverb Time (seg): "+sliderRT.value(), windowWidth/30,windowHeight/3.2);
text("Reverb Decay Rate: "+sliderRDR.value()/100, windowWidth/30,windowHeight/2.85);
textSize(10);
textAlign(RIGHT);
text("Hecho por Ivan Martí Vallès",w/1.01,h/1.01);
pista1.display(mouseX,mouseY);
pista2.display(mouseX,mouseY);
pista3.display(mouseX,mouseY);
pista4.display(mouseX,mouseY);
pista5.display(mouseX,mouseY);
pista6.display(mouseX,mouseY);
song1.rate(sliderRate.value());
song1.setVolume(sliderVolume.value());
song2.rate(sliderRate.value());
song2.setVolume(sliderVolume.value());
song3.rate(sliderRate.value());
song3.setVolume(sliderVolume.value());
song4.rate(sliderRate.value());
song4.setVolume(sliderVolume.value());
song5.rate(sliderRate.value());
song5.setVolume(sliderVolume.value());
song6.rate(sliderRate.value());
song6.setVolume(sliderVolume.value());
}
window.onresize = function() {
canvas.size(w,h);
width = w;
height = h;
};
function mousePressed(){
if ((pista1.contains(mouseX, mouseY))&& (micLevel > 0.1)) {song1.setVolume(micLevel);song1.play();} else {song1.stop();}
if ((pista2.contains(mouseX, mouseY))&& (micLevel > 0.1)) {song2.setVolume(micLevel);song2.play();} else {song2.stop();}
if ((pista3.contains(mouseX, mouseY))&& (micLevel > 0.1)) {song3.setVolume(micLevel);song3.play();} else {song3.stop();}
if ((pista4.contains(mouseX, mouseY))&& (micLevel > 0.1)) {song4.setVolume(micLevel);song4.play();} else {song4.stop();}
if ((pista5.contains(mouseX, mouseY))&& (micLevel > 0.1)) {song5.setVolume(micLevel);song5.play();} else {song5.stop();}
if ((pista6.contains(mouseX, mouseY))&& (micLevel > 0.1)) {song6.setVolume(micLevel);song6.play();} else {song6.stop();}
}
function mouseReleased() {
song1.stop(); song2.stop(); song3.stop(); song4.stop(); song5.stop(); song6.stop();
}