# WCCC_Construction

# YonderVerseOfBlob

For this week's *Creative Code challenge* by @sableRaph: “Construction“, *YonderVerseOfBlob* is coded in **SonicPi** ,**Python , LiveCodeLab & HydraVideoSynth.** It plays on the theme of Construction by entering a reconstructed world of blobs (LiveCodeLab & HydraVideoSynth) with their own mini conlang (constructed language) made in Python .

## Poetry

```xml
In the Lands, Outside of our Scope
Lies a verse that constructs outside of our tropes
With languages related to the elements
And blobs reconstructing their previous movements
The Yonderverse of Blobs
May render hope,
May glitchify its pixels
But would the output be vibes that can trickle?
```

## Video

[YonderVerseOfBlobs](https://youtu.be/PIuBFbRJ0BA)

<iframe type="youtube" src="https://www.youtube.com/watch?v=PIuBFbRJ0BA" data-node-type="hn-embed"></iframe>

  

## ConLang Table

### Thunder Affiliated Words

```python
#Two Syllables Words
['bee-dfd', 'yc-ax', 'ye-o', 'uxx-e', 'tdd-c', 'b-af', 'uxx-e', 'yxx-a', 'txx-ecd']

#Three Syllables Words
['odd-tee-tc', 'uxx-a-bdd', 'bc-ae-oee', 'oe-a-tff', 'bc-eae-u', 'ue-eee-bf', 'txx-f-e', 'bxx-af-c', 'bee-fex-off', 'bdd-f-u', 'b-ca-ae', 'b-e-yff', 'b-xce-x', 't-ef-ded']
```

### Fire Affiliated Words

```python
#Two Syllables Words
['cx-x', 'eed-c', 'ex-af', 'cc-fe', 'a-ae', 'e-ce', 'fee-ua', 'fe-a', 'ee-e', 'cd-u', 'a-f', 'ea-f', 'e-fd', 'fe-yc', 'eae-txx', 'c-d', 'ef-ydd', 'ca-d', 'ce-fe', 'ff-ee']

#Three Syllables Words
['cd-fad-a', 'e-x-fe', 'ed-oe-ef', 'fad-fa-c', 'efx-tf-ed', 'c-bc-bee', 'e-fd-fe', 'cx-c-a', 'fef-u-tee', 'c-ae-ee', 'eed-b-of', 'cx-x-c', 'a-f-t', 'af-bee-b', 'f-e-cd', 'ff-f-ed', 'ff-eee-fae']
```

### Water Affiliated Words

```python
#Two Syllables Words
['eed-c', 'd-ef', 'ex-af', 'e-ce', 'fee-ua', 'fe-a', 'ee-e', 'xed-bff', 'ea-f', 'd-udd', 'e-fd', 'fe-yc', 'eae-txx', 'ef-ydd', 'ff-ee']

#Three Syllables Words
['e-x-fe', 'ed-oe-ef', 'fad-fa-c', 'efx-tf-ed', 'e-fd-fe', 'fef-u-tee', 'eed-b-of', 'f-e-cd', 'ff-f-ed', 'd-a-fe', 'ff-eee-fae']
```

## Code

### Python (ConLang)

```python
import random as rd
import re

#pattern to remove all non letters
pattern = r'[^a-zA-Z]' 

v = ['a','c','e','f']
c = ['f','x','d', 'e']
f = ['o','y','t','u','b']

def wordChoice():
    
    #letters in this conlang

    v = ['a','c','e','f']
    c = ['f','x','d', 'e']
    f = ['o','y','t','u','b']
    
    #Setting rules and structure to language : Letter combos
    
    vc = [rd.choice(v),rd.choice(c)]
    cvc = [rd.choice(c),rd.choice(v),rd.choice(c)]
    vv = [[rd.choice(v),rd.choice(v)]]
    c = [rd.choice(c)]
    v = [rd.choice(v)]
    f = [rd.choice(f)]
    fv =[rd.choice(f),rd.choice(v)]
    fcc =[rd.choice(f),rd.choice(c),rd.choice(c)]
    
    syllables = [vc,cvc,vv,c,v,f,fv,fcc]
    struct = [rd.choice(syllables)]
    
    return str(struct)

# List of Words
wordList = []

'''
Making a 64 WordList

'''
def listing():

    for i in range(16):

        # turn it into words, removing the non letters
        wordList.append(re.sub(pattern, '', wordChoice()) + '-' + re.sub(pattern, '', wordChoice()))


    # 3 Syllables List
    for i in range(16):

        # turn it into words, removing the non letters, using extend to keep the content within one
        wordList.append(re.sub(pattern, '', wordChoice()) + '-' + re.sub(pattern, '', wordChoice()) + '-' + re.sub(pattern, '', wordChoice()) )

listing()
listing()

# Elemental Structure by checking if an the starting word mataches one of the 3 lists and if true appends to a new list

fire = []
water = []
thunder = []

W_List = wordList

def elementalCheck(x,y):

    for i in range(len(W_List)): #transverses the whole list

        #check the starting word with each element in the list

        for prefix in x : 
            if W_List[i].startswith(prefix) == True:
                y.append(W_List[i])


elementalCheck(v,fire)
elementalCheck(c,water)
elementalCheck(f,thunder)
            
#Seperating by Syllables

thunder_two = []
thunder_three = []
fire_two = []
fire_three = []
water_two = []
water_three = []


for words in range(len(thunder)):
    if len(thunder[words].split('-')) == 2:
        thunder_two.append(thunder[words])
    if len(thunder[words].split('-')) == 3:
        thunder_three.append(thunder[words])
    
for words in range(len(fire)):
    if len(fire[words].split('-')) == 2:
        fire_two.append(fire[words])
    if len(fire[words].split('-')) == 3:
        fire_three.append(fire[words])
    
    
for words in range(len(water)):
    if len(water[words].split('-')) == 2:
        water_two.append(water[words])
    if len(water[words].split('-')) == 3:
        water_three.append(water[words])
    

    
```

### LiveCodeLab - Pre Construction of the YonderVerse Blobs

```javascript
simpleGradient yellow,orange,gold

ambientLight yellow

47 times with i
	move i/1000, i/10000, i/10000
	rotate i/1000,i/10000, wave(i/1000)
	peg wave(i/50), wave(i/25), wave(i/100)*i/20
```

```javascript
simpleGradient red,blue,violet

ambientLight green

47 times with i
	move i/1000, i/10000, i/10000
	rotate i/1000,i/10000, wave(i/1000)
	peg wave(i/70), wave(i/125), wave(i/70)*i/20
```

```javascript
simpleGradient black,maroon,yellow

ambientLight blue

47 times with i
	move i/1000, i/10000, i/10000
	rotate i/1000,i/10000, wave(i/1000)
	peg wave(i/7), wave(i/25), wave(i/20)*i/20
```

### HydraVideoSynth - First Construction

```javascript
s0.initScreen()

src(s0).pixelate(55,55).colorama().out()
```

### HydraVideoSynth - Second Construction

```javascript
s0.initScreen()

src(s0).pixelate(55,55).colorama().blend(src(s0).scale(2.05)).scale(0.75).out()
```

### SonicPi

```ruby
live_loop :do do
  use_random_seed Time.now.to_i / 2
  with_fx :echo, mix: [0.65,0.45,0.75].choose do
    with_fx :ixi_techno, mix: [0.15,0.35,0.57,0.74].tick do
      use_bpm 30
      sample [:bd_808,:drum_heavy_kick,:bd_klub].choose, amp: dice(5) if spread(5,8).tick
      sleep [0.5,1,2].choose
    end
  end
  
end


live_loop :do1 do
  use_random_seed Time.now.to_i / 4
  with_fx :echo,decay: 0.75, mix: 0.65 do
    with_fx :ixi_techno, mix: [0.15,0.35,0.57,0.74].choose do
      use_bpm  30
      sample [:bd_gas,:drum_snare_hard,:tabla_na_o ].choose, amp: dice(4) if spread(17,24).tick
      sleep [0.25,0.5,1,2].choose
    end
  end
  
end

```
