# WCCChallenge-DontTouch

# 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

```javascript
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

<iframe width="560" height="315" src="https://www.youtube.com/embed/ZvN-ePlRsxI"></iframe>

## Code

### Locomotion

```haskell
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

```javascript
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**

```javascript
ChaoticInLanes = "vVaABXK6y3c"

create(3,3,ChaoticInLanes)
play(all)
speed([0,2,6,8],2)
speed(4, 0.5)
```

### Python

```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

```ruby
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)
```
