xxxxxxxxxx
56
// Array of sounds
let guitars = [];
let pianos = [];
let reverb;
let delay;
let beatSpeed = 1;
let beat = 20;
// Load all the sounds
function preload() {
//load guitars
for (let g = 0; g < 6; g++) {
guitars.push(loadSound("guitar" + g + ".mp3"));
}
//load pianos
for (let p = 0; p < 7; p++) {
pianos.push(loadSound("piano" + p + ".mp3"));
}
}
function setup() {
createCanvas(windowWidth, windowHeight);
reverb = new p5.Reverb();
delay = new p5.Delay();
for (let g = 0; g < guitars.length; g++) {
reverb.process(guitars[g], 3, 2); // Reverb decay time: 3 seconds, damping: 2
delay.process(guitars[g], 0.5, 0.5, 2300); // Delay time: 0.5s, feedback: 0.5
}
}
function draw() {
beat += beatSpeed;
if (beat < 10 || beat > 30) {
beatSpeed *= -1;
}
// Occasionally oscillate effect
let triggerEffect = frameCount % 360 == 0; // Trigger every 360 frames
let panValue = map(sin(frameCount * 0.02), -1, 1, -1, 1); // Oscillates between left (-1) and right (+1)
let pan = map(beat, 10, 60, -1, 1);
for (let g = 0; g < guitars.length; g++) {
// play guitar according to beat by guitar index
if (frameCount % floor(beat * (g + 1)) == 1) {
guitars[g].play();
if (triggerEffect) {
guitars[g].pan(pan);
}
}
}
if (frameCount % 180 == 1) {
pianos[6].play();
}
}