WildCh0reo
For the 29th day of MinaCoding2024: " Dancing", WildCh0reo is coded in various Locomotion choreographies.
Extra Effects are coded with Hydra and sound is made in SonicPi.
Poem
Strong Bonds
Weak Choreo
Which way Shall they Go
as they Continue Their Rounds
Video
Code
Locomotion
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 };
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 };
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 };
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 }
dancer { url = "OrDroid", animation = [15,1,17,1,21,1],size = range 0.25 2.15 (osc 0.17), ry = range - 90 90(osc 0.25), z = -3, ly = range -180 180 (osc 2)};
r2 = step [3,4,5,6] (phase 4 0);
r = step [0.5,2,1,4] (phase 16 0);
for [0..10] (\n -> dancer {url = "OrDroid", dur = n*0.5, x = (n)+(-20), y = -4 + osc(1) * sin(n), z = -10, rx = r2 * r2 * r2, ry = 0, rz = 0, size= r});
clear { color= 0x51414F, alpha= 2.5 };
point {x = range 0 17 (osc 0.15), z = range 0 6 (osc 0.35) , intensity = range 8 35 (osc 0.35), color = 0xFFA230};
point {y = range 0 17 (osc 0.15), z = range 0 6 (osc 0.35) , intensity = range 15 35 (osc 0.25), color = 0xFFA500 };
point {z = range 0 17 (osc 0.15), x = range 0 6 (osc 0.35) , intensity = range 20 45 (osc 0.35), color = 0x008080 };
dancer { url = "DataGhost", animation = 12,size = 3, y = -2, Z = -5, dur = 3, ry = 90 };
dancer { url = "DataGhost", animation = 22,size = 3, y = -2, Z = -5, dur = 3, ry = 270 };
dancer { url = "DataGhost", animation = 3,size = 3, y = -2, Z = -5, dur = 1, ry = 0};
dancer { url = "DataGhost", animation = 3,size = 2, y = -2, Z = -12, ry = 270,x = -1 };
dancer { url = "DataGhost", animation = 3,size = 2, y = -2, Z = -12,ry = 90, x = 1};
b n = dancer {url = "raccoon", animation = [13,1,n,1,n+3,1,25,1],
size = ((n +1)/10), y = range 0 20 (phase 16 (n/10) * 2 + (-1)),
x = -8 + (n/5), z = range -3 3 (phase 1 (n/50) * 2 + (-1)), rz = n * 23.7 };
for [0..15] b;
b n = dancer {url = "mushy",dur = 3.5, rx = range n n*45,lz = n * 5, ry = n + range 10 260 (osc n * 0.215 / 10), x = n - (3) * 3,animation = [n,0.25, n + (-2),0.5,n*3,07.5,n*2.1]};
for [0..15] b;
Hydra
s0.initScreen()
src(s0).modulateScale(src(s0).blend(osc([0.2,0.3,1.4].smooth())),0.1).blend(src(s0).scale(1.25)).out()
SonicPi (Sped Up)
use_random_seed Time.now.to_i
shipyard1 = [[ 7, 2, 8, 6, 4, 11, 6, 7, 11, 7, 10, 10, 10, 5, 11, 7],
[ 5, 5, 10, 8, 1, 4, 10, 11, 10, 11, 6, 10, 11, 10, 2, 4],
[11, 1, 8, 9, 10, 7, 10, 10, 5, 10, 9, 6, 6, 1, 9, 11],
[10, 8, 10, 6, 11, 1, 5, 9, 6, 1, 10, 4, 10, 7, 10, 7],
[10, 8, 10, 10, 7, 4, 1, 9, 11, 9, 10, 2, 7, 10, 8, 5],
[10, 8, 10, 9, 10, 8, 8, 9, 10, 11, 8, 3, 10, 5, 10, 8],
[ 2, 3, 5, 10, 7, 9, 11, 6, 6, 6, 3, 10, 7, 6, 10, 3],
[ 9, 11, 9, 9, 10, 11, 11, 10, 11, 7, 10, 10, 7, 6, 8, 6],
[11, 4, 6, 7, 11, 10, 5, 6, 6, 11, 0, 9, 8, 10, 11, 9],
[ 4, 7, 11, 6, 7, 9, 11, 9, 1, 9, 8, 11, 3, 9, 6, 8],
[ 3, 11, 3, 10, 7, 9, 10, 4, 0, 7, 6, 11, 2, 8, 10, 11],
[ 7, 6, 10, 1, 11, 2, 3, 10, 6, 8, 4, 11, 3, 8, 8, 6],
[ 4, 2, 1, 11, 1, 11, 11, 8, 6, 10, 8, 10, 1, 10, 4, 10],
[ 8, 6, 8, 3, 5, 10, 9, 2, 10, 11, 7, 6, 10, 11, 11, 9],
[ 8, 7, 11, 10, 1, 10, 8, 10, 4, 9, 10, 3, 7, 11, 7, 4],
[ 8, 8, 10, 5, 9, 0, 2, 10, 9, 5, 0, 10, 6, 0, 10, 11]]
shipyard2 = [[ 8, 10, 7, 6, 4, 7, 10, 1, 5, 8, 10, 9, 6, 9, 10, 5],
[11, 3, 8, 10, 8, 10, 4, 7, 10, 7, 10, 7, 10, 10, 10, 10],
[ 7, 5, 7, 10, 7, 7, 8, 10, 10, 3, 6, 10, 11, 6, 6, 9],
[10, 11, 6, 10, 9, 11, 11, 2, 4, 9, 9, 2, 8, 1, 11, 1],
[11, 9, 10, 11, 9, 9, 7, 2, 6, 9, 10, 11, 9, 9, 0, 11],
[ 8, 6, 9, 9, 10, 4, 6, 10, 7, 4, 9, 11, 4, 8, 6, 7],
[11, 6, 6, 4, 10, 2, 6, 4, 7, 2, 7, 9, 10, 10, 10, 9],
[ 8, 0, 11, 8, 1, 11, 5, 7, 10, 7, 7, 5, 11, 0, 10, 1],
[10, 8, 1, 5, 10, 7, 8, 7, 11, 4, 2, 4, 2, 10, 8, 10],
[ 1, 11, 2, 5, 7, 11, 11, 2, 7, 3, 6, 10, 8, 8, 10, 4],
[ 6, 10, 6, 6, 10, 2, 9, 5, 8, 6, 8, 10, 1, 11, 10, 6],
[ 9, 7, 9, 4, 1, 6, 6, 7, 8, 9, 10, 11, 6, 6, 10, 8],
[ 9, 3, 10, 7, 0, 11, 10, 5, 11, 11, 9, 7, 8, 10, 10, 0],
[ 2, 11, 6, 10, 9, 7, 1, 10, 7, 0, 0, 9, 7, 8, 3, 8],
[ 3, 9, 5, 10, 2, 7, 4, 6, 2, 1, 4, 5, 6, 3, 10, 7],
[ 4, 10, 6, 9, 7, 10, 6, 4, 11, 5, 4, 3, 8, 10, 9, 6]]
shipyard3 = [[10, 11, 6, 7, 8, 6, 6, 4, 10, 11, 2, 2, 2, 10, 6, 10],
[ 2, 10, 7, 10, 8, 7, 10, 1, 8, 3, 11, 7, 8, 5, 10, 7],
[ 9, 10, 6, 9, 8, 0, 8, 11, 3, 6, 4, 10, 5, 11, 8, 2],
[ 7, 7, 3, 6, 11, 6, 3, 10, 7, 7, 8, 7, 6, 8, 11, 3],
[ 9, 10, 10, 9, 10, 10, 10, 6, 8, 5, 10, 8, 11, 6, 2, 11],
[10, 10, 2, 10, 7, 5, 5, 6, 7, 9, 5, 10, 11, 7, 9, 10],
[ 7, 10, 10, 10, 9, 10, 6, 10, 2, 11, 8, 8, 7, 10, 1, 8],
[11, 10, 11, 10, 8, 10, 8, 9, 10, 10, 10, 10, 10, 2, 0, 3],
[10, 11, 7, 8, 10, 11, 7, 4, 11, 8, 2, 2, 10, 1, 1, 4],
[ 5, 6, 11, 10, 2, 1, 6, 5, 7, 2, 8, 8, 8, 6, 5, 4],
[10, 8, 4, 3, 10, 7, 11, 6, 8, 5, 5, 8, 9, 7, 7, 10],
[ 7, 11, 11, 2, 9, 3, 9, 8, 9, 11, 7, 6, 11, 11, 4, 2],
[ 6, 10, 9, 11, 4, 11, 8, 3, 4, 8, 11, 7, 11, 6, 3, 8],
[ 9, 8, 4, 4, 11, 8, 8, 10, 11, 9, 3, 10, 11, 10, 7, 6],
[ 4, 5, 9, 4, 1, 7, 10, 5, 10, 6, 11, 11, 0, 0, 8, 7],
[ 6, 10, 10, 11, 10, 0, 10, 2, 6, 0, 0, 6, 10, 9, 9, 8]]
shipyard4 = [[10, 10, 6, 8, 9, 7, 6, 9, 11, 4, 6, 3, 3, 2, 6, 10],
[ 1, 11, 11, 9, 5, 6, 8, 1, 10, 7, 3, 3, 10, 11, 10, 5],
[ 3, 10, 4, 10, 10, 7, 6, 8, 7, 1, 11, 2, 7, 10, 4, 10],
[ 3, 10, 6, 7, 8, 6, 1, 7, 8, 7, 6, 8, 4, 7, 6, 11],
[ 9, 10, 9, 11, 10, 8, 7, 4, 5, 11, 11, 3, 9, 7, 10, 7],
[ 3, 8, 7, 8, 10, 10, 3, 5, 9, 8, 8, 6, 7, 7, 10, 10],
[ 3, 8, 1, 2, 7, 4, 9, 7, 2, 10, 3, 6, 0, 1, 10, 7],
[10, 5, 11, 3, 5, 6, 10, 6, 8, 8, 6, 8, 7, 3, 4, 7],
[ 7, 8, 2, 9, 6, 11, 7, 8, 1, 7, 11, 11, 10, 7, 11, 11],
[ 5, 11, 0, 11, 6, 10, 5, 9, 9, 6, 10, 10, 8, 1, 9, 11],
[ 6, 0, 10, 10, 11, 3, 5, 7, 6, 9, 11, 6, 6, 11, 10, 10],
[ 2, 6, 10, 5, 10, 8, 1, 8, 11, 8, 4, 8, 11, 9, 10, 10],
[ 6, 11, 11, 6, 7, 8, 2, 8, 8, 6, 10, 8, 10, 7, 2, 3],
[10, 2, 10, 7, 6, 6, 11, 10, 1, 6, 10, 10, 11, 7, 11, 10],
[ 8, 11, 9, 8, 10, 9, 10, 10, 3, 11, 5, 11, 10, 7, 11, 3],
[10, 6, 10, 9, 10, 2, 1, 7, 9, 7, 7, 6, 5, 7, 8, 10]]
shipyard5 = [[11, 7, 6, 9, 10, 2, 10, 5, 8, 3, 6, 10, 6, 0, 9, 3],
[ 9, 11, 2, 10, 8, 2, 9, 4, 11, 10, 3, 0, 9, 10, 2, 7],
[10, 6, 11, 6, 11, 9, 0, 7, 9, 11, 11, 5, 7, 11, 8, 11],
[ 9, 3, 1, 9, 11, 9, 6, 2, 10, 2, 10, 6, 5, 6, 9, 9],
[10, 5, 6, 3, 9, 5, 5, 11, 6, 3, 6, 10, 3, 4, 10, 3],
[ 4, 10, 5, 2, 10, 6, 4, 11, 7, 3, 9, 7, 10, 6, 7, 11],
[11, 10, 9, 10, 10, 11, 10, 0, 11, 11, 7, 9, 2, 11, 6, 8],
[10, 10, 3, 2, 10, 4, 8, 4, 10, 9, 8, 4, 9, 9, 1, 4],
[ 7, 7, 11, 11, 4, 11, 6, 10, 6, 9, 9, 11, 6, 0, 4, 7],
[ 8, 7, 7, 9, 8, 8, 11, 9, 4, 11, 7, 8, 1, 11, 7, 9],
[10, 4, 2, 4, 6, 6, 11, 7, 5, 6, 7, 7, 6, 11, 10, 7],
[ 9, 10, 6, 1, 10, 9, 8, 10, 11, 9, 3, 9, 10, 10, 2, 10],
[ 7, 10, 9, 10, 2, 10, 9, 10, 4, 10, 11, 9, 10, 10, 6, 4],
[ 6, 10, 3, 7, 2, 10, 6, 9, 6, 9, 8, 10, 11, 11, 9, 3],
[10, 6, 11, 10, 5, 3, 11, 9, 9, 6, 5, 6, 7, 8, 4, 2],
[ 1, 2, 10, 10, 4, 9, 4, 1, 9, 10, 11, 8, 4, 9, 7, 2]]
def sonification(shipyard,looping,sampling)
live_loop looping do
for i in (0...shipyard.size)
for j in (0...shipyard[i].length)
x = shipyard[i][j]
y = Math.sqrt(shipyard[i][j])
case x
when 1..3
with_fx :ping_pong, mix: 0.65 do
with_fx :ixi_techno, mix: 0.75 do
with_fx [:echo,:whammy].choose, mix: rrand(0.4,0.8) do
sample [:loop_safari,:tabla_ghe4].choose, amp: 6, rate: x * rrand_i(-2,2) + 0.01, beat_stretch: y
end
end
end
when 4..6
with_fx [:ping_pong,:vowel].choose, mix: rrand(0.4,0.8) do
sample [:elec_blip,:elec_blip2,:elec_bong].choose, beat_stretch: y + 1, amp: x - 1, decay: x + 1
end
when 7..9
if x % 2 == 0
use_synth :piano
n = ring(:b3,:c4,:c5,:d6,:e7,x*9,x*12)
else
use_synth [:prophet,:chipbass,:chiplead].choose
n = ring(:c5,:a4,:b1,x*7)
end
with_fx :wobble do
play n.tick, on: spread(x+6,24).look, release: (x/24), pan: -0.5
end
else
with_fx [:ping_pong,:flanger,:whammy].choose, amp: 1, mix: rrand(0.4,0.8) do
sample sampling, attack: x, beat_stretch: (x-3).abs
end
end
sleep [0.5,0.75,1,1.5,2].choose
end
end
end
end
sonification(shipyard5,:yard5,:ambi_glass_hum)
sonification(shipyard4,:yard4,:ambi_glass_rub)
sonification(shipyard3,:yard3,:ambi_piano)
sonification(shipyard2,:yard2,:ambi_glass_hum)
sonification(shipyard1,:yard1,:ambi_piano)
sonification(shipyard1.shuffle,:yard1mix,:ambi_choir)
sonification(shipyard3.shuffle,:yard3mix,:ambi_lunar_land)
sonification(shipyard5.shuffle,:yard5mix,:ambi_soft_buzz)
def sounds (loop,timer)
x = [[:D4,:Gs5, :D1],[:A4,:Cs5, :E1] ,[:B4,:Ds2, :B3], [:A3,:Cs2,:Cs4]]
live_loop loop do
counter = x.choose
use_random_seed (Time.now.to_i)/timer
with_fx [:level,:whammy,:vowel].choose, mix: rrand(0.2,0.7) do
use_synth [:prophet,:piano].choose
play :Cs2
play choose(counter) ,amp: rrand(0.2,2)
sleep [0.25,0.5,0.75,1].choose
end
end
end
sounds(:berdy,2)
sounds(:birdy,3)
sounds(:bordy,4)
sounds(:bardy,5)