# WCCC_Patterns

## Patterns & Code

·

For this week's Creative Code challenge by @sableRaph:"Patterns”, PatternOverload is coded in TixyLand, SonicPi & Hydra.

## Pattern Designs

CIrcular and Overlaid patterns can be found in the TixyLand equations as the same equation is repeated through six iterations with various additions to it

The Hydra code allows the circular patterns to move and be expressive, while the SonicPi composition uses time as a seed pattern and various tempos to show how one sound can change its form when speed is used in such a way

## Poem

``````Aerial displays
Circular Relays
As we are glancing above
Inching closer to the direction
That the sun is deflecting those rays
That finds refuge in this place
Which decision shall we embark on today?
Should they be flying aimlessly like a pigeon?
Or shall be embraced by the rhythm
What is wished upon this space?
``````

## Code

### TixyLand

``````//Pattern 1
tan(~i^~hypot(t,i))*sin(x)/y

//Pattern 2
tan(~i^~hypot(t,i))*sin(x)/y  - tan(~y/8+i^t) / (sin(~t)*y/x^i)

//Pattern 3
tan(~i^~hypot(t,i))*sin(x)/y  - (tan(~y/8+i^t) / (sin(~t)*y/x^i)) / (Math.hypot(~(i|t)%256&(i^~t)%30,i%t))

//Pattern 4
tan(~i^~hypot(t,i))*sin(x)/y  / ~ (tan(~y/8+i^t) / (sin(~t)*y/x^i)) / (Math.hypot(~(i|t)%256&(i^~t)%30,i%t))

//Pattern 5
tan(~i^~hypot(t,i))*sin(x)/y  %  ~ (tan(~y/8+i^t) / (sin(~t)*y/x^i)) / (Math.hypot(~(i|t)%256&(i^~t)%30,i%t))

//Pattern 6
tan(~i^~hypot(t,i))*sin(x)/y  & ~ (tan(~y/8+i^t) / (sin(~t)*y/x^i)) % (Math.hypot(~(i|t)%256&(i^~t)%30,i%t))
``````

### Hydra

``````s0.initScreen()

src(s0).modulateScale(osc(1,1,1),1.27).modulateScale(osc(1,1,1).kaleid([1,2,3,4,3,2,1].smooth()),1.15).out()

speed = 0.5
``````

### SonicPi

``````use_random_seed Time.now.to_i

#array made from a python script

shipyard1 = [[ 7,  2,  8,  6,  4, 11,  6,  7, 11,  7, 10, 10, 10,  5, 11,  7],
[ 5,  5, 10,  8,  1,  4, 10, 11, 10, 11,  6, 10, 11, 10,  2,  4],
[11,  1,  8,  9, 10,  7, 10, 10,  5, 10,  9,  6,  6,  1,  9, 11],
[10,  8, 10,  6, 11,  1,  5,  9,  6,  1, 10,  4, 10,  7, 10,  7],
[10,  8, 10, 10,  7,  4,  1,  9, 11,  9, 10,  2,  7, 10,  8,  5],
[10,  8, 10,  9, 10,  8,  8,  9, 10, 11,  8,  3, 10,  5, 10,  8],
[ 2,  3,  5, 10,  7,  9, 11,  6,  6,  6,  3, 10,  7,  6, 10,  3],
[ 9, 11,  9,  9, 10, 11, 11, 10, 11,  7, 10, 10,  7,  6,  8,  6],
[11,  4,  6,  7, 11, 10,  5,  6,  6, 11,  0,  9,  8, 10, 11,  9],
[ 4,  7, 11,  6,  7,  9, 11,  9,  1,  9,  8, 11,  3,  9,  6,  8],
[ 3, 11,  3, 10,  7,  9, 10,  4,  0,  7,  6, 11,  2,  8, 10, 11],
[ 7,  6, 10,  1, 11,  2,  3, 10,  6,  8,  4, 11,  3,  8,  8,  6],
[ 4,  2,  1, 11,  1, 11, 11,  8,  6, 10,  8, 10,  1, 10,  4, 10],
[ 8,  6,  8,  3,  5, 10,  9,  2, 10, 11,  7,  6, 10, 11, 11,  9],
[ 8,  7, 11, 10,  1, 10,  8, 10,  4,  9, 10,  3,  7, 11,  7,  4],
[ 8,  8, 10,  5,  9,  0,  2, 10,  9,  5,  0, 10,  6,  0, 10, 11]]

shipyard2 = [[ 8, 10,  7,  6,  4,  7, 10,  1,  5,  8, 10,  9,  6,  9, 10,  5],
[11,  3,  8, 10,  8, 10,  4,  7, 10,  7, 10,  7, 10, 10, 10, 10],
[ 7,  5,  7, 10,  7,  7,  8, 10, 10,  3,  6, 10, 11,  6,  6,  9],
[10, 11,  6, 10,  9, 11, 11,  2,  4,  9,  9,  2,  8,  1, 11,  1],
[11,  9, 10, 11,  9,  9,  7,  2,  6,  9, 10, 11,  9,  9,  0, 11],
[ 8,  6,  9,  9, 10,  4,  6, 10,  7,  4,  9, 11,  4,  8,  6,  7],
[11,  6,  6,  4, 10,  2,  6,  4,  7,  2,  7,  9, 10, 10, 10,  9],
[ 8,  0, 11,  8,  1, 11,  5,  7, 10,  7,  7,  5, 11,  0, 10,  1],
[10,  8,  1,  5, 10,  7,  8,  7, 11,  4,  2,  4,  2, 10,  8, 10],
[ 1, 11,  2,  5,  7, 11, 11,  2,  7,  3,  6, 10,  8,  8, 10,  4],
[ 6, 10,  6,  6, 10,  2,  9,  5,  8,  6,  8, 10,  1, 11, 10,  6],
[ 9,  7,  9,  4,  1,  6,  6,  7,  8,  9, 10, 11,  6,  6, 10,  8],
[ 9,  3, 10,  7,  0, 11, 10,  5, 11, 11,  9,  7,  8, 10, 10,  0],
[ 2, 11,  6, 10,  9,  7,  1, 10,  7,  0,  0,  9,  7,  8,  3,  8],
[ 3,  9,  5, 10,  2,  7,  4,  6,  2,  1,  4,  5,  6,  3, 10,  7],
[ 4, 10,  6,  9,  7, 10,  6,  4, 11,  5,  4,  3,  8, 10,  9,  6]]

shipyard3 = [[10, 11,  6,  7,  8,  6,  6,  4, 10, 11,  2,  2,  2, 10,  6, 10],
[ 2, 10,  7, 10,  8,  7, 10,  1,  8,  3, 11,  7,  8,  5, 10,  7],
[ 9, 10,  6,  9,  8,  0,  8, 11,  3,  6,  4, 10,  5, 11,  8,  2],
[ 7,  7,  3,  6, 11,  6,  3, 10,  7,  7,  8,  7,  6,  8, 11,  3],
[ 9, 10, 10,  9, 10, 10, 10,  6,  8,  5, 10,  8, 11,  6,  2, 11],
[10, 10,  2, 10,  7,  5,  5,  6,  7,  9,  5, 10, 11,  7,  9, 10],
[ 7, 10, 10, 10,  9, 10,  6, 10,  2, 11,  8,  8,  7, 10,  1,  8],
[11, 10, 11, 10,  8, 10,  8,  9, 10, 10, 10, 10, 10,  2,  0,  3],
[10, 11,  7,  8, 10, 11,  7,  4, 11,  8,  2,  2, 10,  1,  1,  4],
[ 5,  6, 11, 10,  2,  1,  6,  5,  7,  2,  8,  8,  8,  6,  5,  4],
[10,  8,  4,  3, 10,  7, 11,  6,  8,  5,  5,  8,  9,  7,  7, 10],
[ 7, 11, 11,  2,  9,  3,  9,  8,  9, 11,  7,  6, 11, 11,  4,  2],
[ 6, 10,  9, 11,  4, 11,  8,  3,  4,  8, 11,  7, 11,  6,  3,  8],
[ 9,  8,  4,  4, 11,  8,  8, 10, 11,  9,  3, 10, 11, 10,  7,  6],
[ 4,  5,  9,  4,  1,  7, 10,  5, 10,  6, 11, 11,  0,  0,  8,  7],
[ 6, 10, 10, 11, 10,  0, 10,  2,  6,  0,  0,  6, 10,  9,  9,  8]]

shipyard4 = [[10, 10,  6,  8,  9,  7,  6,  9, 11,  4,  6,  3,  3,  2,  6, 10],
[ 1, 11, 11,  9,  5,  6,  8,  1, 10,  7,  3,  3, 10, 11, 10,  5],
[ 3, 10,  4, 10, 10,  7,  6,  8,  7,  1, 11,  2,  7, 10,  4, 10],
[ 3, 10,  6,  7,  8,  6,  1,  7,  8,  7,  6,  8,  4,  7,  6, 11],
[ 9, 10,  9, 11, 10,  8,  7,  4,  5, 11, 11,  3,  9,  7, 10,  7],
[ 3,  8,  7,  8, 10, 10,  3,  5,  9,  8,  8,  6,  7,  7, 10, 10],
[ 3,  8,  1,  2,  7,  4,  9,  7,  2, 10,  3,  6,  0,  1, 10,  7],
[10,  5, 11,  3,  5,  6, 10,  6,  8,  8,  6,  8,  7,  3,  4,  7],
[ 7,  8,  2,  9,  6, 11,  7,  8,  1,  7, 11, 11, 10,  7, 11, 11],
[ 5, 11,  0, 11,  6, 10,  5,  9,  9,  6, 10, 10,  8,  1,  9, 11],
[ 6,  0, 10, 10, 11,  3,  5,  7,  6,  9, 11,  6,  6, 11, 10, 10],
[ 2,  6, 10,  5, 10,  8,  1,  8, 11,  8,  4,  8, 11,  9, 10, 10],
[ 6, 11, 11,  6,  7,  8,  2,  8,  8,  6, 10,  8, 10,  7,  2,  3],
[10,  2, 10,  7,  6,  6, 11, 10,  1,  6, 10, 10, 11,  7, 11, 10],
[ 8, 11,  9,  8, 10,  9, 10, 10,  3, 11,  5, 11, 10,  7, 11,  3],
[10,  6, 10,  9, 10,  2,  1,  7,  9,  7,  7,  6,  5,  7,  8, 10]]

shipyard5 = [[11,  7,  6,  9, 10,  2, 10,  5,  8,  3,  6, 10,  6,  0,  9,  3],
[ 9, 11,  2, 10,  8,  2,  9,  4, 11, 10,  3,  0,  9, 10,  2,  7],
[10,  6, 11,  6, 11,  9,  0,  7,  9, 11, 11,  5,  7, 11,  8, 11],
[ 9,  3,  1,  9, 11,  9,  6,  2, 10,  2, 10,  6,  5,  6,  9,  9],
[10,  5,  6,  3,  9,  5,  5, 11,  6,  3,  6, 10,  3,  4, 10,  3],
[ 4, 10,  5,  2, 10,  6,  4, 11,  7,  3,  9,  7, 10,  6,  7, 11],
[11, 10,  9, 10, 10, 11, 10,  0, 11, 11,  7,  9,  2, 11,  6,  8],
[10, 10,  3,  2, 10,  4,  8,  4, 10,  9,  8,  4,  9,  9,  1,  4],
[ 7,  7, 11, 11,  4, 11,  6, 10,  6,  9,  9, 11,  6,  0,  4,  7],
[ 8,  7,  7,  9,  8,  8, 11,  9,  4, 11,  7,  8,  1, 11,  7,  9],
[10,  4,  2,  4,  6,  6, 11,  7,  5,  6,  7,  7,  6, 11, 10,  7],
[ 9, 10,  6,  1, 10,  9,  8, 10, 11,  9,  3,  9, 10, 10,  2, 10],
[ 7, 10,  9, 10,  2, 10,  9, 10,  4, 10, 11,  9, 10, 10,  6,  4],
[ 6, 10,  3,  7,  2, 10,  6,  9,  6,  9,  8, 10, 11, 11,  9,  3],
[10,  6, 11, 10,  5,  3, 11,  9,  9,  6,  5,  6,  7,  8,  4,  2],
[ 1,  2, 10, 10,  4,  9,  4,  1,  9, 10, 11,  8,  4,  9,  7,  2]]

def sonification(shipyard,looping,sampling,seedling)

use_random_seed Time.now.to_i / seedling + 5

live_loop looping do

use_random_seed Time.now.to_i / seedling + 4

#choosing bpms
bpm_selection = [40,100, 250, 10, 500,12]

use_bpm = bpm_selection.choose

#iterating the 2d arrays
for i in (0...shipyard.size) #overall size of range
for j in (0...shipyard[i].length) #overall length of the arrays

#these variables will be the main event trigger for each scenario, through different uses

x = shipyard[i][j]
y = Math.sqrt(shipyard[i][j])
case x #using case & when as a switch while using

when 1..3
with_fx :ping_pong, mix: 0.65 do
with_fx :ixi_techno, mix: 0.75 do
with_fx [:echo,:whammy].choose, mix: rrand(0.4,0.8) do
sample [:loop_safari,:tabla_ghe4].choose, amp: 6, rate: x * rrand_i(-2,2) + 0.01, beat_stretch: y
end
end
end

when 4..6
with_fx [:ping_pong,:vowel].choose, mix: rrand(0.4,0.8) do
sample [:elec_blip,:elec_blip2,:elec_bong].choose, beat_stretch: y + 1, amp: x - 1, decay: x + 1
end

when 7..9
if x % 2 == 0
use_synth :piano
n = ring(:b3,:c4,:c5,:d6,:e7,x*9,x*12)
else
n = ring(:c5,:a4,:b1,x*7)
end

with_fx :wobble do
play n.tick, on: spread(x+6,24).look, release: (x/24), pan: -0.5
end

else
with_fx [:ping_pong,:flanger,:whammy].choose, amp: 1, mix: rrand(0.4,0.8) do
sample sampling, attack: x, beat_stretch: (x-3).abs
end
end

sleep [0.5,0.75,1,1.5,2].choose #pause in between each spawn, replicating the different thinking processes
end
end
end

end

#following a tick format

live_loop :ticking do

use_random_seed Time.now.to_i / 3

sonification(shipyard5,:yard5,:ambi_glass_hum,5)
sonification(shipyard4,:yard4,:ambi_glass_rub,6)
sonification(shipyard3,:yard3,:ambi_piano,7)
sonification(shipyard2,:yard2,:ambi_glass_hum,8)
sonification(shipyard1,:yard1,:ambi_piano,9)

sleep [2,4,8].choose
end

#following a shuffle format

live_loop :shuffling do

use_random_seed Time.now.to_i / 4

sonification(shipyard1.shuffle,:yard1mix,:ambi_choir,11)
sonification(shipyard3.shuffle,:yard3mix,:ambi_lunar_land,12)
sonification(shipyard5.shuffle,:yard5mix,:ambi_soft_buzz,13)

sleep [2,4,8].choose
end

#following a reverse format

live_loop :reversing do

use_random_seed Time.now.to_i / 5

selection =  [:elec_plip,:ambi_choir,:tabla_ghe2,:ambi_lunar_land,:ambi_soft_buzz]

with_fx :vowel do
sonification(shipyard2.reverse,:yard1rev,selection[dice(5) -1],1)
sonification(shipyard4.reverse,:yard3rev,selection.shuffle[dice(5) -1],2)
end

sonification(shipyard5.reverse,:yard5rev,selection.reverse[dice(5) -1],3)

sleep [2,4,8].choose
end
``````