# WCCChallenge_Slugs

# WackySlugs

For this week's Creative Code Challenge by @sableraph: **"Slugs",** **WackySlugs** is coded in ***Hydra, Locomotion & SonicPi*** *to* Represent a realm full of slugs aiming slowly to reach their destination.

## **Slug Design**

* Slugs can come in Various Color Palettes: [https://icolorpalette.com/palette-by-themes/slug](https://icolorpalette.com/palette-by-themes/slug)
    
    * Combining this with the fact that some sea slugs can do Photosynthesis, I decided to go with lighting that resembles the sun shining.
        
* Slug Facts : [https://a-z-animals.com/blog/10-incredible-slug-facts/](https://a-z-animals.com/blog/10-incredible-slug-facts/) & [https://a-z-animals.com/blog/incredible-sea-slug-facts/?from=exit\_intent](https://a-z-animals.com/blog/incredible-sea-slug-facts/?from=exit_intent)
    
    * Sea Slugs are colour blind so when it comes to their Point of View (360 View), it resembles this.
        
        * Slugs eat mushrooms, hence the wild array of mushrooms littering the screen
            
* Speed of Slugs: 0.18 miles per hour and can be as heavy as 32.2 Pounds (**14.6 kg)**
    
    * Using the force calculator to come up with different strengths of sounds in SonicPi: [https://www.omnicalculator.com/physics/force](https://www.omnicalculator.com/physics/force)
        
    * Also within Locomotion, having the slugs move slowly across the screen in all directions in different sizes
        
    * Drone sounds were implemented to represent their movement and the sounds they may hear
        

## Poem

```ocaml
Sliming Slowly
Sliding only
Repeating this cycle
Completing this angle
At their own pace
At their own speed
In their own Reach
Reaching to what they want to Achieve
A piece of that Fungi
From low tide to high
Completing this angle
Sliding Only
Sliming Slowly
```

## Video

<iframe width="560" height="315" src="https://www.youtube.com/embed/2EsBLOEb1q0?si=P8GayOfORdQ7-chL"></iframe>

## Code

### Locomotion

```haskell
-- setting the background
clear {color = 0x6988B5};
ambient {intensity = 1};
point {color = 0x5555A7, x = 0, y = 3};
directional { colour=0xf00f80, intensity = range 0 2 (osc 0.5), z = range 0 17 (osc 0.8), y = 10, x = -6 };

-- additional lighting
point {x = range 0 17 (osc 0.15), z = range 0 6 (osc 0.35) , intensity = range 8 25 (osc 0.5), color = 0xFFA500};
directional {z = 6, intensity = range 0 10 (osc 0.5), color = 0xff0000};

ambient {intensity = 0.45};

--variables to set up the gltichiness
r2 = step [3,4,5,6] (phase 4 0);
r = step [0.5,2,1,4] (phase 16 0);

-- Slug Evolution
dancer { url="https://raw.githubusercontent.com//IllestPreacha/CreativeDataStuff/bd640d1e504f4d14cdc1d6788aa4ab971a2c05f2/3Dmodel/Slug3D.glb", size = 22, x = range -15 15 (osc 0.0015), dur = 2, y= range -10 0 (osc 0.0015), z = -20, rx = range 0 15 (osc 0.25) };
f a n = dancer { url="https://raw.githubusercontent.com//IllestPreacha/CreativeDataStuff/bd640d1e504f4d14cdc1d6788aa4ab971a2c05f2/3Dmodel/Slug3D.glb", y = 1, x = -4 + n, z = a * n,ry = range -30 90 (osc 0.5), lz = range -45 130 (osc 3) };

for [0..8] (f 0.5);
for [0..8] (f 1.5);
for [0..8] (f -0.5);


--mushroom floor
for [0..100]  (\n -> dancer {url = "mushy.glb", 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});
```

### Hydra

```javascript
s0.initScreen()

src(s0).blend(src(s0).scale(2)).blend(src(s0).rotate(0.5)).out()
```

### SonicPi

```ruby

#slug variables : 10 kg and use the 0.08(0.18 miles per hour)  acceleration to get forc
slugforce1 = 0.8047

#slug variables : 14 kg and use the 0.08(0.18 miles per hour)  acceleration to get forc
slugforce2 = 1.1265

#slug variables : 7 kg and use the 0.08(0.18 miles per hour)  acceleration to get forc
slugforce3 = 0.5633


live_loop :voyage do
  with_fx :pitch_shift, pitch: slugforce2, mix: slugforce1 do
    use_random_seed Math.cbrt(Time.now.to_i)
    use_bpm 20
    use_synth :hollow
    with_fx :reverb, mix: slugforce1 do
      play choose([:A4,:C4,:D4,:E4]), attack: rrand_i(4,8), release: dice(6)
      sample :elec_chime, rate: slugforce3, beat_stretch: slugforce3
      sample :elec_chime, rate: slugforce1, pitch: slugforce2
      sleep [1,2,4,8].choose
    end
  end
end


live_loop :voyage2 do
  use_random_seed Math.sqrt(Time.now.to_i)
  use_bpm 20
  use_synth :hollow
  with_fx :reverb, mix: slugforce3 do
    play choose([:A4,:C4,:D4,:E4]), attack: slugforce2, release: rrand(0,slugforce2)
    sleep [1,2,4,8].choose
  end
end


live_loop :sounds do
  use_random_seed Time.now.to_i
  use_bpm 20
  with_fx :ping_pong, mix: slugforce3 do
    sample :ambi_lunar_land, rate: slugforce2
    sample :elec_twang, rate: slugforce2
    sample :ambi_lunar_land, rate: -1 * slugforce2
    sleep [2,4,8,slugforce2].choose
  end
end

live_loop :sounds2 do
  with_fx :distortion, mix: slugforce3 do
    use_random_seed Time.now.to_i * 1.1
    use_bpm 20
    with_fx :ping_pong, mix: slugforce1 do
      sample :ambi_lunar_land, rate: slugforce3
      sample :misc_crow, rate: slugforce2, beat_stretch: slugforce2
      sample :misc_crow, rate: -1 * slugforce1, pitch: slugforce2
      sleep [2,4,8,slugforce2].choose
    end
  end
end



```
