Chance Operation
(for George Brecht)
The following code is a performance score presented at the Gallerie Stadt Sindelfingen on April 21, 2024.
It is a set of instructions for generating a piece of visual music via computer.
For best results, you can run the code by pasting the following at P5js.
let generateButton, dreamButton; let pixelColor; let currentX = 0; let currentY = 0; let isDreaming = false; const canvasWidth = 640; const canvasHeight = 480; function setup() { createCanvas(canvasWidth, canvasHeight); background(255); // Create the 'Generate Pixel' button generateButton = createButton('Generate Pixel'); generateButton.position(10, canvasHeight + 10); generateButton.mousePressed(generatePixel); // Create the 'Dream' button dreamButton = createButton('Dream'); dreamButton.position(130, canvasHeight + 10); dreamButton.mousePressed(startDreaming); // Default pixel color pixelColor = color(0, 0, 0); } function generatePixel() { if (currentY < canvasHeight) { addPixel(); } else { console.log("Canvas is full"); } } function startDreaming() { isDreaming = true; } function addPixel() { // Generate a random number between 0 and 7 let randomNumber = floor(random(8)); // Map number to color if (randomNumber === 0 || randomNumber === 1) { pixelColor = color(0, 0, 255); // Blue } else if (randomNumber >= 2 && randomNumber <= 4) { pixelColor = color(0, 255, 0); // Green } else { // 5, 6, 7 pixelColor = color(255, 0, 0); // Red } // Draw the pixel at the current position stroke(pixelColor); point(currentX, currentY); // Move to the next position currentX++; if (currentX >= canvasWidth) { currentX = 0; currentY++; } } function draw() { if (isDreaming && currentY < canvasHeight) { addPixel(); } else if (isDreaming) { isDreaming = false; console.log("Dream completed. Canvas is full."); } }