let notePattern = [60, 62, 63, 67, 63, 62,60, 62, 63, 67, 63, 62, 60, 62, 63, 68, 63, 62, 60, 62, 63, 68, 63, 62, 60, 62, 63, 55, 56, 58, 60, 63, 67, 68, 65, 62, 59, 60, 62, 59, 55, 50, 51, 55, 60, 65, 63, 62];
createCanvas(windowWidth, windowHeight);
for (let i = 0; i <= 25; i++) {
for (let j = 0; j <= 120; j++) {
let intervalInSeconds = 0.3;
soundLoop = new p5.SoundLoop(onSoundLoop, intervalInSeconds);
synth = new p5.MonoSynth();
let color = ["#db3a34", "#363537", "#82DDF0", "#2FBF71", "#f9e900", "#fc440f", "#1f01b9", "#0e131f", "#ffcae9", "#56e39f"]
translate(width / 2, height / 2)
for (let i = 0; i <= 10; i++) {
ringPlaceNew[i] = lerp(ringPlaceNew[i], ringPlace[i], 5)
for (let i = 0; i <= 25; i++) {
rotate(frameCount / (20 / i))
for (let j = 0; j <= 120; j++) {
if (frameCount % 100 == 1) {
circle(ringPlaceNew[i] / second() * sin(j * 16 + second() * 5 / 50), ringPlaceNew[i] * cos(j * 30 + minute() * 10 + 50 * second() * sin(frameCount / 150)) , ddd[j])
translate(-width / 2, -height / 2)
line(0, 0, 40 * sin(180 - hour() * 6), 40 * cos(180 - hour() * 6))
line(0, 0, 50 * sin(180 - minute() * 6), 50 * cos(180 - minute() * 6))
line(0, 0, 60 * sin(180 - second() * 6), 60 * cos(180 - second() * 6))
function mousePressed() {
let a = [int(random(2)), int(random(2)), int(random(2)), int(random(2))]
for (let i = 0; i < width; i += grider) {
for (let j = 0; j < height; j += grider) {
if ((i / grider % 2 == a[0]) && (j / grider % 2 == a[1])) {
} else if ((i / grider % 2 == a[2]) && (j / grider % 2 == a[3])) {
function mouseReleased() {
for (let i = 0; i <= 10; i++) {
for (let j = 0; j <= 120; j++) {
newddd[j] = random(2, 5);
for (let j = 0; j <= 120; j++) {
ddd[j] = lerp(ddd[j], newddd[j], 0.1)
function onSoundLoop(timeFromNow) {
let noteIndex = (soundLoop.iterations - 1) % notePattern.length;
let note = midiToFreq(notePattern[noteIndex]);
synth.play(note, 0.5, timeFromNow);