Creative Coder/Multimedia Artist/Performative Programmer : Engineering Thru Creative Means and Providing Experiences
FillingTheFill
For this week's Creative Code Challenge by @sableraph: "Space Filling",FillingtheFill is coded in P5JS, Hydra, LivecodingYoutube and SonicPi.
With extra aid from effects
Filling Process
Treating the canvas as a space and having hydra fill the space of screen via stretching and different layering functions
In the P5JS sketch, the function get() is used to trigger how and what colour gets implement in a particular area
Time is also used to determined the size and location of certain object in the sketch
The SonicPi code uses the space of an array and fills it up with 5535 iterations and then layered postcode, to “fill the sound”
Poem
FillingSpacesTradingPixelsPixels exchanging through paces
LayeringandSproutingCrowdingand catering
To the pixels on the screens
Easing chaotically on this scene
Without any doubting
Pixels trading with pixels
Video
Code
P5js
/*
Treating the canvas as a space
It is being filled by three appraoches
-what pixel is being read by get
-what is the value of the time since the sketch has run
- how the squish function affects the growth
- Since we are playing with space, I decided to have differerent growths
*/functionsetup() {
createCanvas(1200, 800);
//background('black')
}
functiondraw() {
frameRate(15 + second() % 10);
pixel_color = get(200, 200);
print(pixel_color);
x = random(950);
y = random(950);
//to compare arrays you can them to string// base on the comparsion a certain color will fill the screenlet c = get(x, y);
if (c.toString() == pixel_color.toString()) {
fill("blue");
noStroke();
square(x, y, 150);
squishsquish("aqua", 84, 207, 91);
squishsquish("blue", 114, 16, 82);
squishsquish("maroon", 198, 423, 75);
squishsquish("orange", 42, 600, 110);
squishsquish("maroon", 84, 222, 411);
} elseif (c[3] == pixel_color[3]) {
fill("red");
strokeWeight(random(12, 30));
stroke("blue");
square(x, y, random(x - 50, x + 50));
} elseif (c[1] == pixel_color[1]) {
squishsquish("yellow", 198, 123, 275);
squishsquish("orange", 242, 16, 910);
squishsquish("red", 184, 522, 211);
fill("yellow");
ellipse(
x + random(second() % 40, (second() % 40) * -1),
y,
random(x - 50, x + 50)
);
} else {
if (second()%2 == 0)
{
stroke("orange");
strokeWeight(12);
}
else
{
stroke("black")
strokeWeight(19)
}
fill(
Math.hypot(second(), 9) % 255,
second() * 123 - (Math.sqrt(second()) % 255),
random(100, 255)
);
ellipse(x + 75, Math.cbrt((y * second()) % 120), random(x - 50, x + 50));
}
}
//Mouse for WildnessfunctionmouseClicked() {
fill("yellow");
ellipse(mouseX, mouseY, y, random(x - 50, x + 50));
filter(INVERT);
}
functionmouseDragged() {
strokeWeight(14);
stroke("blue");
fill(
Math.hypot(Math.cbrt(second()), 19) % 255,
second() * 123 - (Math.sqrt(second()) % 255),
random(100, 255)
);
ellipse(x + 75, Math.cbrt((y * second()) % 120), random(x - 50, x + 50));
}
// function used to have more irregular curves filling the spacefunctionsquishsquish(hueing, x, y, z) {
//noFill();
noStroke();
fill(hueing);
beginShape();
curveVertex(x - (second() % y) * 100, z);
curveVertex(Math.hypot(x, second() % 10), z);
curveVertex(68, x / 4 - 2);
curveVertex(x / 4, 17 - (second() % y) * 3);
curveVertex(x / 4 + 11 - (second() % y) * 17, z);
curveVertex(x / 4 + 11, Math.cbrt(z * 10));
endShape();
}
HeartBeatCounter = []
#Heartbeat variables
HB = 0
HB_2 = 0
HB_3 = 0
live_loop :heartbeat1do
use_random_seed Time.now.to_i #different random seeds
with_fx :distortion, mix:0.35do
with_fx [:ixi_techno,:vowel,:whammy].choose do
use_bpm 25
play [4,7,12].choose
play [15,12,9].choose
play [7,6,5,4,3].tick
endend
HB = HB + 3#counter
HeartBeatCounter.push(HB,HB,HB) #push the amount of beats in
sleep [0.1,0.2,0.15,0.4,1,2].choose
end
live_loop :heartbeat2do
use_random_seed Math.sqrt(Time.now.to_i)
use_bpm 25
with_fx :ixi_techno, mix: rrand(0.45,0.67) do
with_fx :flanger, mix: rrand(0.05,0.25) do
with_fx :echo, decay: dice(5) do
use_synth :pretty_bell
play 12#noteendendend
HB_2 = HB_2 + 1#counter
HeartBeatCounter.push(HB_2)
sleep [0.2,0.3,0.25,0.5,0.75].choose
end
live_loop :heartbeat3do
use_random_seed Math.cbrt(Time.now.to_i)
use_bpm [25,120,75].choose
with_fx :ping_pongdo
use_synth :pretty_bell
play [3,24,12].choose, sustain: Math.cbrt(dice(12))#note
play 17, decay: dice(4)
play 10end
HB_3 = HB_3 + 3#counter is 3 since there are two beats in this heart beat
HeartBeatCounter.push(HB_3,HB_3,HB_3)
sleep [0.1,0.2,0.3,0.5,0.75].choose
end
HB_4 = 0
live_loop :heartbeatcounterdo
use_random_seed Time.now.to_i
with_fx :echo, mix: [0.5,0.6,0.7].choose do
with_fx :ixi_techno, mix: rrand(0.45,0.67) do#playing based on the amount of heartbeats that previously were created
play HeartBeatCounter.length() % [45,55,65].choose + 1
play HeartBeatCounter.length() % [25,35,45].tick + 1
play HeartBeatCounter.length() % [35,12,13,24].choose + 1endend#will have this counter till it reaches 10 000
HB_4 = HB_4 + 3#counter
HeartBeatCounter.push(HB_4,HB_4,HB_4)
puts HeartBeatCounter.length()
sleep [0.1,0.2,0.15].tick
end
LiveCodingYoutube
// make usage of the timeconst minute = 1000 * 60;const hour = minute * 60; const d = newDate(); minutes = Math.round(d.getTime() / minute);counter = d.getTime();
x = "WyiCJcEZGF4"
y = "m4jrI6lcL1U"//if the minute calculated is greater than 4 when used with modulo, make a 2 x 2 grid but if lower, 3 x 3 grid//minutes % 8 > 4 ? create(2,2, x) : create(3,3, x);
create(1,3,x);
cue(1,y);
play(all)
counter % 16 >= 6 ? speed([0,2],0.5) : speed([0,2],2);
play(all)