xxxxxxxxxx
86
let state = 0;
let soundPlayed = false; // a flag to control sound trigger
function preload() {
// Load the sound file
track1 = new Tone.Player({
url: "tracks/drum1.wav",
autostart: false // trigger it manually
}).toDestination();
track2 = new Tone.Player({
url: "tracks/drum2.wav",
autostart: false // trigger it manually
}).toDestination();
track3 = new Tone.Player({
url: "tracks/drum3.wav",
autostart: false // trigger it manually
}).toDestination();
}
function setup() {
createCanvas(400, 400);
frameRate(10);
console.log("press A, D or G to trigger different sounds")
}
let i = 150;
function draw() {
background(12, 55, 100);
translate(width / 2, height / 2); // to center the color wheel in the middle of the canvas
for (let z = 0; z < 1000; z++) {
let tr = color(184,222,255);
let cw = color(163,213,255);
//drawing the revolving color wheel
stroke(cw);
line(random(i - 20, i), 0, 0, 0);
rotate(random(60));
strokeWeight(1.5);
if (state == 1) { // Track 1
fill(tr);
circle(0, 0, 120);
i = 100;
if (!soundPlayed) { // Trigger sound only once
track1.start();
soundPlayed = true; // Set flag to prevent retriggering
}
} else if (state == 2) { // Track 2
fill(tr);
circle(0, 0, 150);
i = 170;
if (!soundPlayed) {
track2.start();
soundPlayed = true;
}
} else if (state == 3) { // Track 3
fill(tr);
circle(0, 0, 80);
i = 70;
if (!soundPlayed) {
track3.start();
soundPlayed = true;
}
}
}
}
function keyPressed() {
if (keyCode == 65) { // 'A' key
state = 1;
soundPlayed = false; // Reset the sound trigger flag
} else if (keyCode == 68) { // 'D' key
state = 2;
soundPlayed = false;
} else if (keyCode == 71) { // 'G' key
state = 3;
soundPlayed = false;
}
}
function keyReleased() {
// Reset the state when the key is released to stop drawing the circle
state = 0;
i = 150;
}