xxxxxxxxxx
87
let kick;
let snare;
let part;
let isPlaying = false;
let loop1;
let kickPattern;
let snarePattern;
function preload() {
kick = loadSound("kick.wav");
snare = loadSound("snare.wav");
bell = loadSound("bell.wav");
}
function setup() {
createCanvas(400, 400);
masterVolume(0.7);
// technically, you want 1m to be the same, and division
// to be different
// kickPattern = [1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0];
kickPattern = [1, 0, 0, 0];
let kickIndex = 0;
loop1 = new p5.SoundLoop(function(timeFromNow) {
if (kickPattern[kickIndex] === 1) {
kick.play(timeFromNow);
}
kickIndex = (kickIndex + 1) % kickPattern.length;
}, "8n");
loop1.bpm = 120;
kickPattern2 = [1, 0, 0];
let kickIndex2 = 0;
loop3 = new p5.SoundLoop(function(timeFromNow) {
if (kickPattern2[kickIndex2] === 1) {
kick.play(timeFromNow);
}
kickIndex2 = (kickIndex2 + 1) % kickPattern2.length;
}, "8n");
loop3.bpm = 120;
snarePattern = [1, 0, 0, 0, 0, 0];
let snareIndex = 0;
loop2 = new p5.SoundLoop(function(timeFromNow) {
if (snarePattern[snareIndex] === 1) {
snare.play(timeFromNow);
}
snareIndex = (snareIndex + 1) % snarePattern.length;
}, "8n");
loop2.bpm = 120;
let button = createButton("Toggle Loop");
button.mousePressed(function() {
if (!isPlaying) {
loop1.start();
loop2.start();
isPlaying = true;
} else {
loop1.stop();
loop2.stop();
isPlaying = false;
}
});
}
function randomPattern(length) {
// try changing the volume here!!!
let pattern = [];
for (let i = 0; i < length; i +=1) {
let value = int(random(0, 2));
pattern.push(value);
}
return pattern;
}
function mousePressed() {
// kickPattern = randomPattern(8);
// snarePattern = randomPattern(8);
}
function draw() {
background(220);
text("Click to Randomize Loop", width/2-70, height/2);
}