Hi, I’m trying to create a keyboard to play some oscillators, but I thought it could managed multitouch (in case I open the URL on a mobile device, for example), but no…
Any suggestion?
Thanks in advance
var song, estado = 0;
var wave;
var playing = false;
var posx = 0, posy = 0, ancho = 30, largo = 200;
var incremento = 30;
//incremento es una variable que hemos declarado, igual
//al ancho de las teclas.
function setup() {
createCanvas(720, 400);
background(127,127,127);
// envolvente
env = new p5.Env();
env.setADSR(0.05, 0.1, 0.5, 1);
env.setRange(1.5, 0);
// oscilador
wave = new p5.Oscillator();
wave.setType('sine');
wave.start();
wave.freq(261);
wave.amp(env);
}
// Dibuja las teclas
function draw() {
// tecla Do
fill(0, 255, 255);
rect(posx, posy, ancho, largo);
// tecla Re
rect(posx + incremento, posy, ancho, largo);
// tecla Do #
rect(posx + incremento / 2, posy, ancho, largo /2);
}
// Ejecuta cuando se presiona el ratón
function mousePressed() {
// Comprueba si el ratón está dentro de la tecla
var d1 = mouseX;
var d2 = mouseY;
/// PRIMERA NOTA DO + cachito de DO #
// si se cumple el area de la primera nota (do)
if (d1 < ancho && d2 < largo) {
//esto es para el área de la mitad izquierda de do#
if (d1 > ancho / 2 && d2 < largo / 2){
wave.freq(261 * pow(2, 1/12));
env.play();
}
// esta es para tocar do.
else {
wave.freq(261);
env.play();
}
}
///// SEGUNDA NOTA RE + cachito de DO #
if (d1 < ancho + incremento && d1 >= ancho && d2 < largo) {
if (d1 < ancho + incremento / 2 && d2 < largo / 2){
wave.freq(261 * pow(2, 1/12));
env.play();
} else {
wave.freq(261 * pow(2, 2/12));// raíz 12 de 2 (temperado)
env.play();
}
}
}