ChaoticButTouchless
For this week's Creative Code Challenge by @sableraph : Don't Touch, I decided to have a chaotic amount of moving avatars but they don't touch each other.
This week's coding languages are Locomotion, LiveCodingYoutube, Hydra, Python, and SonicPi
The movement of the avatars is done by Locomotion and to avoid them from touching, I put extra emphasis on making sure the Z coordinates of the avatars aren't close. While making sure there is a movement across the screen amongst the three axes by the oscillation of their trajectories
Hydra is used to modulate and add the wavy effect seen on the screen and play with the scaling and perception.
Then using Python & LiveCodingYoutube to add extra effects to the scenes. Then later proceeding to have a Day/Night Mode
The sound design principles involved in the SonicPi code, fit the visuals
Poem
Chaotic but movements flowing like aquatics
With oscillation oscillating
Between megascopic and microscopic
While retaining between melodic
As the equations stay operating
Relating as they don’t touch and mingle
But their emotions still remain kindle
Doesn’t dwindle
As their movements are rhythmic
Even if it seems a bit chaotic
Video
Code
Locomotion
point {x = range 0 18 (osc 0.15), z = range 0 6 (osc 0.35) , intensity = range 8 25 (osc 0.5), color = 0x00ffd0};
directional {z = 6, intensity = range 0 10 (osc 0.5), color = 0xdf0000};
–raccoon movements
dancer{ url="raccoon.glb",size = 3, animation = range 1 4 (osc 0.5), x = range 5 -5 (osc 0.5), y = range 5 -5 (osc 0.25), z = 1, ry=3.14, rx= 3.2, lz = range 5 -5 (osc 0.5), size= 0.5 };
dancer{ url="raccoon.glb",size = 5, animation = range 1 4 (osc 0.5), x = range 5 -5 (osc 0.5), y = range 5 -5 (osc 0.125), z = 8, ry=3.14, rx= 3.2, lz = range 5 -5 (osc 0.5), size= 0.5 };
dancer{ url="raccoon.glb",size = 90, animation = range 1 4 (osc 0.5), x = range 5 -5 (osc 0.5), y = range 5 -5 (osc 0.125), z = 12, ry=3.14, rx= 3.2, lz = range 5 -5 (osc 0.5), size= 0.5 };
–cactus movements
dancer{ url="cactus.glb", x = range 5 -5 (osc 0.5), z = -30, ry=3.14, rx= 3.2, lz = range 5 -5 (osc 0.5), size= 0.5 };
dancer{ url="cactus.glb", x = range 5 -5 (osc 0.5), z = -10, ry=3.14, rx= 3.2, lz = range 5 -5 (osc 0.5), size= 0.5 };
dancer{ url="cactus.glb", x = range 5 -5 (osc 0.5), z = range -5 5 (osc 0.5), ry=3.14, rx= 3.2, rz = 10, lz = range 5 -5 (osc 0.5), size= 0.5 };
–wireman movements
dancer{ url = "wireman.glb",size = range 1 4 (osc 2), animation = range 1 4 (osc 0.5), dur = 2, z = 0, x = -2, y = range 7 -7(osc 0.5),rx = 360, x = osc 0.5,lx = range 10 -10 (osc 0.5) };
dancer{ url = "wireman.glb",size = 6, animation = 2, dur = 2, z = 5, x = -2, y = range 5 -5 (osc 0.5),rx = 360, x = osc 0.5,lx = range 10 -10 (osc 0.5) };
dancer{ url = "wireman.glb", animation = 2, dur = 2, z = -5, x = -2, y = range 5 -5 (osc 0.5),rx = 360, x = osc 0.5,lx = range 10 -10 (osc 0.5) };
–grassman movements
dancer{ url="Branch.glb", x = range 5 -5 (osc 0.5), z = -30, ry=3.14, rx= 3.2, lz = range 5 -5 (osc 0.5), size= 0.5 };
dancer{ url = "Branch.glb", animation = 4, dur = 2, z = 0, x = -2, y = range 7 12 (osc 0.01),rx = 360, ry = range 18 90 (osc 0.2), x = osc 0.5,lx = range 10 -10 (osc 0.5), lz = range 10 -10 (osc 0.5) };
dancer{ url="Branch.glb", x = range -5 5 (osc 0.5), z = -2, ry=3.14, size= 0.5, lx = range 5 -5 (osc 0.5) };
dancer{ url="Branch.glb", x = 4, animation = 3, y = range -5 5 (osc 0.5), z = -2, ry=3.14, size= 1.2 };
Hydra
s0.initScreen()
src(s0).scale(()=> (time % 40+1)/20).modulateScale(shape(200,0,5),-0.6)
.scrollX([0.5,0.4,-0.3,-0.2,0.1]).modulateRotate(osc(4,1,1),-0.5).out()
LivecodingYoutube
ChaoticInLanes = "vVaABXK6y3c"
create(3,3,ChaoticInLanes)
play(all)
speed([0,2,6,8],2)
speed(4, 0.5)
Python
#Heatmap
import numpy as np; np.random.seed(0)
import seaborn as sns; sns.set_theme()
import pandas as pd
#different iterations of Heatmap in the Piece
uniform_data = np.random.rand(15,16)
'''
Data Visualization
ax = sns.heatmap(uniform_data)
ax = sns.heatmap(uniform_data,cmap="YlGnBu")
ax = sns.heatmap(uniform_data,cmap="crest")
ax = sns.heatmap(uniform_data,cmap="cubehelix")
ax = sns.heatmap(uniform_data,cmap="Greens")
ax = sns.heatmap(uniform_data,vmin=0.5, vmax=0.7)
ax = sns.heatmap(uniform_data,cmap="cubehelix",vmin=0.5, vmax=0.95)
ax = sns.heatmap(uniform_data,cmap="crest",vmin=0.15, vmax=0.95)
ax = sns.heatmap(uniform_data,cmap="crest",vmin=0.6, vmax=0.95)
SonicPi
def arrangement(sound,preeffect,intensity,intensity2,loop,effect,effect2,effect3,effect4)
use_synth sound
with_fx preeffect,mix: intensity do
live_loop loop do
with_fx effect, mix: intensity2 do
play chord([:c4,:f4].choose, :major,decay: 3)
play_pattern_timed chord(:c5, :major), 0.25
sleep [1,0.5, 0.25].choose
end
with_fx effect2, mix: 0.2 do
play chord([:g3,:a3].tick, :major)
play_pattern_timed chord([:g4,:f4].choose, :major), 0.25
sleep [1,0.5, 0.25].choose
end
with_fx effect3 do
play chord([:a3,:g3].choose, :minor)
play_pattern_timed chord(:a4, :minor), 0.25
sleep [1,0.5,0.25].tick
end
with_fx effect4, mix: 0.1 do
play chord(:f3, :major)
play_pattern_timed chord(:f4, :major), 0.25
sleep [0.25,0.5,1].tick
end
end
end
end
arrangement(:piano,:hpf,0.2,0.4,:arrangement1,:ixi_techno,:ping_pong,:ixi_techno,:ixi_techno)
arrangement(:beep,:lpf,0.3,0.5,:arrangement2,:ixi_techno,:gverb,:ixi_techno,:krush)
arrangement(:piano,:hpf,rrand(0.2,0.3),0.4,:arrangement3,:ixi_techno,:pitch_shift,:ixi_techno,:krush)
arrangement(:piano,:ping_pong,rrand(0.1,0.3),0.5,:arrangement4,:ixi_techno,:pitch_shift,:ixi_techno,:ixi_techno)