BlueSkiesYellowGrounds
For this week's Creative Code Challenge by @sableraph : Why is the Sky Blue, I decided to make BlueSkiesYellowGrounds, "Why Isn't The Ground Yellow".
This week the languages used are Locomotion for the Visuals, Hydra for the visual effects and SonicPi for the sound.
Inversion Process
The name comes from the inversion of the sentence: Why is the sky Blue
Why then becomes Why Isn't
The Inverse of the sky(ceiling) is the ground(floor)
Blue in RGB is (0,0,1)*. When Inverted it becomes **Yellow (1,1,0)*
Therefore the inversion of the sentence becomes: Why isn't the Ground Yellow?
In the LiveCodeLab background, this will be shown by having the upper gradient as Skyblue and the lower gradient as Yellow
With the Inversion methodology, I decided to inverse the gravitational principles of the world, to take into account that we may have no gravity in this world-building.This will be represented by floating blocks in LiveCodeLab as they mimic the flight of pollination
There will be an inversion of flora as well. Plants are commonly associated with the color Green (0,1,0). In this inverted world**, they** will now be Magenta/Fuschia (1,0,1). Hydra Will be used to alter the green into magenta by remixing last week's submission for succulents: https://blog.illestpreacha.com/wccchallengesucculent
The sounds are coded in SonicPi using a concept of shadow maths and colour shuffling, where in this case the sounds are made through the values of different yellows. As well as their shadow/shuffle counterparts to add variance to the soundscape. So when watching, you are experiencing the yellows as colors and sounds.
Poem
Why is the Sky blue?
Can the clouds be any shade
and not monochromatic?
Why isn't the ground a Yellowish Hue?
How are the Clouds, not the texture, we choose?
As the pollinators decide which path should be made
It could be sometimes, the decision is automatic
But still, why is the Sky Blue?
Video
Code
Hydra
s0.initScreen()
//Recording 1
src(s0).invert(2).rotate(180).repeat(2,2).out()
//Recording 2
src(s0).invert(2).rotate(180).out()
LiveCodeLab
simpleGradient skyblue,green,yellow
turns = 17 - wave()
detail = time % 7
speed = 0.4 - sin(wave(0.013))
scale 0.4 - sin(time) * 0.5
rotate Math.sqrt(time % 14),Math.cbrt(sin(time %7)),1
detail times with i
rotate 0, 0, (2 * pi) / detail
move cos(time), Math.cbrt(time % 14), Math.hypot((time % 2), (time % 2))
rotate (turns * i * pi) / detail + (time * speed), 0, 0
rect 0.5
fill green
ambientLight 10,30,30
noStroke
box 0.3
Locomotion
--front row cacti
dancer { url="cactus.glb",animation = 7, size = 4.5, x = range 5 -5 (osc 0.5), y = -11 };
dancer { url="cactus.glb",animation = 5, size = 4.5, x = range 5 -5 (osc 0.25), y = -11 };
dancer { url="cactus.glb",animation = 4, size = 4.5, x = range 5 -5 (osc 0.45), y = -11 };
--back row enlarged
dancer { url="cactus.glb",animation = 3, size = 1.5, x = 3 };
dancer { url="cactus.glb",animation = 5, size = 1.5, x = -3 };
dancer { url="cactus.glb",animation = 7, size = 1.5, x = -6 };
--left size oves
dancer { url="cactus.glb",animation = 4, size = 3.5, x = -2, ly = range -3 3 (osc 2), size= 0.5, lz = range -3 3 (osc 2), size= 0.5};
dancer { url="cactus.glb",animation = 3, x = -2, z = -2,rz = range -5 5 (osc 0.2), ry = range -5 5 (osc 0.5), ly = range -3 3 (osc 2), size= 0.5 };
-- right side moves
dancer { url="cactus.glb",animation = 7, size = 3.5, x = 5, ly = range -3 3 (osc 2), size= 0.5, lz = range -3 3 (osc 2), size= 0.5};
dancer { url="cactus.glb",animation = 6, x = -2, z = 5,rz = range -5 5 (osc 0.2), ry = range -5 5 (osc 0.5), ly = range -3 3 (osc 2), size= 0.5 }
SonicPi
#Color +Shadows
#RGB Values + XYZ
#ShadesofYellow [R,G,B, X, Y, Z]
# Gold : 255, 215, 0,65.541, 69.864, 10.033
# Mustard : 255, 219, 88, 68.334, 72.63, 19.652
# Lemonchiffon : 255, 250, 205,86.443, 94.04, 71.352
#shadow length equation is Length = height / tan(angle)
#Creating Arrays
Gold = [255, 215, 0,65.541, 69.864, 10.033]
Mustard = [255, 219, 88, 68.334, 72.63, 19.652]
Lemonchiffon = [255, 250, 205,86.443, 94.04, 71.352]
with_fx :ixi_techno do
live_loop :yellow do
i = 0
with_fx :whammy, mix: rrand(0.1,0.3) do
use_synth :pretty_bell
play (Gold[i] + Mustard[i])/5 ,release: 3
play Gold[i] + 2 ,release: 3
end
with_fx :ping_pong, mix: rrand(0.3,0.75) do
use_synth :chiplead
play (Lemonchiffon[i] + Mustard[i])/5 ,release: 3, decay: dice(4)
end
sleep [0.5,1,2].choose
if i < 7
i+= 1
end
end
end
live_loop :yellowshuffle do
GoldShuffle = Gold.shuffle()
MustardShuffle = Mustard.shuffle()
LemonchiffonShuffle = Lemonchiffon.shuffle()
i = 0
with_fx [:ixi_techno,:whammy,:flanger].choose , mix: rrand(0.2,0.3) do
use_synth [:pretty_bell,:piano].choose
play (GoldShuffle[i] + MustardShuffle[i])/4 ,release: 3
play Math.lgamma(GoldShuffle[i]/5 + 2),release: 3
end
with_fx :gverb, amp: dice(2), mix: rrand(0.2,0.6) do
with_fx :ping_pong, mix: rrand(0.3,0.75) do
use_synth [:piano,:chiplead].choose
play (LemonchiffonShuffle[i] + MustardShuffle[i])/5 ,release: 3, decay: dice(4)
end
end
sleep [0.5,1,2,Math.cbrt(GoldShuffle[i] + 2)].choose
if i < 7
i+= 1
end
end
#shadow length component
with_fx :ixi_techno do
live_loop :yellowshadow do
i = 0
with_fx :ping_pong, mix: rrand(0.2,0.9) do
with_fx :pitch_shift, mix: rrand(0.2,0.3) do
use_synth :piano
play (Gold[i] + 1/Math.cbrt(70)).abs + (Mustard[i]/Math.hypot(70,10)).abs/30 - 50,release: 3, sustain: 8
sleep [0.25,0.5,1,2,4].choose
end
end
if i < 7
i+= 1
end
end
end