Table of contents
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
--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 }
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)};
--Glitchy Droid More
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});
--background maker,quartz
clear { color= 0x51414F, alpha= 2.5 };
-- Triple Light Points
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 };
-- DataGhost Converging
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};
-- DataGhost downsized
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
#array made from a python script
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
#iterating the 2d arrays
for i in (0...shipyard.size) #overall size of range
for j in (0...shipyard[i].length) #overall length of the arrays
#these variables will be the main event trigger for each scenario, through different uses
x = shipyard[i][j]
y = Math.sqrt(shipyard[i][j])
case x #using case & when as a switch while using
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 #pause in between each spawn, replicating the different thinking processes
end
end
end
end
#following a tick format
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)
#following a shuffle format
sonification(shipyard1.shuffle,:yard1mix,:ambi_choir)
sonification(shipyard3.shuffle,:yard3mix,:ambi_lunar_land)
sonification(shipyard5.shuffle,:yard5mix,:ambi_soft_buzz)
#array of notes
def sounds (loop,timer)
x = [[:D4,:Gs5, :D1],[:A4,:Cs5, :E1] ,[:B4,:Ds2, :B3], [:A3,:Cs2,:Cs4]]
live_loop loop do
counter = x.choose #counter
use_random_seed (Time.now.to_i)/timer #random seed
with_fx [:level,:whammy,:vowel].choose, mix: rrand(0.2,0.7) do #effects
use_synth [:prophet,:piano].choose #synth
play :Cs2 # note
play choose(counter) ,amp: rrand(0.2,2) #notes
sleep [0.25,0.5,0.75,1].choose
end
end
end
sounds(:berdy,2)
sounds(:birdy,3)
sounds(:bordy,4)
sounds(:bardy,5)