WCCChallenge-DontTouch

WCCChallenge-DontTouch

ChaoticButTouchless

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)