# Genuary2023_YayoiKusama

### **The prompt for Genuary 2023 Day 25 is**

## Yayoi Kusama

Inspired by Yayoi Kusama's Work, Today's submission is made by thinking of circles and what type of circular life they might live

* The visuals are coded by using **Hydra** twice and in between **LivecodingYoutube**
    
* For the audio, I used the radius and area of a circle equation within the **SonicPi** code to compose the soundscape
    

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

### Poem

***CIrcles from many viewpoints  
Where they intersect at multiple joints  
For there are many screens and angles  
Where they loop and tangle  
As they slither and dangle  
As they grow and huddle  
As they roam and double***

### **Hydra Code #1**

```javascript
shape(200, 0.5, 1.5)
	.scale(() => (time % 15 + 2) / 17, [0.5,1,2].smooth())
	.color([0.25,0.5,1,2].smooth(0.75), 0.3, 0)
	.repeat(1.552, 2)
.luma([0.11,0.25].smooth())
	.modulateScale(osc(3, 0.5)
		.scale(() => (time % 15 + 2) / 13), [-0.6,0.6])
	.modulateRotate(osc(3, 0.5).kaleid(90).color(0,0,1).luma(), -0.6)
	.modulatePixelate(shape(200, 0.5, 1.5).color(()=> (time % 11)/10,1,2)
		.kaleid(90)
		.luma(0.47).repeat(3,3))
	.add(o0, 0.5)
	.scale(() => (time % 15 + 2) / 13)
.add(o0,0.25)
	.out();
speed = 0.25
```

### **LiveCodingYoutube**

```javascript
create(3,3,"KCXfWcvbBXI")
play(all)
speed([0,4,5],0.5)
speed([1,6,7],0.75)
speed(2,1.25)
speed([3,8],1.5)
```

### HydraCode #2

```javascript
s0.initScreen()
src(s0).scale(()=> (time % 40+1)/4).modulateScale(shape(200,0,5),-0.6).out()
```

### SonicPi Code

```ruby
#circle is A = π * r^2.
# :: access constants in class, therefore in this case , it access PI in the Math class

def circle(radius)
  area = Math::PI * (radius ** 2)
  area
end

#shuffles the Radii into an array of numbers ranging from 15 to 40

Radii = (15...40).to_a.shuffle()
Radii2 = (15...40).to_a.shuffle()

def synths (looping,sound,effects)
  
  i = 0
  
  puts Radii[0]
  puts Radii2[0]
  
  live_loop looping do
    
    #reshuffles Radii2 per loop
    
    Radii2.shuffle()
    puts Radii2[0]
    
    #With the numbers used in the list , divison by 50 is good for note
    
    use_synth sound
    puts circle(Radii[i]) / 50
    
    #using the area to control the scales and chords
    
    with_fx effects do
      play chord(circle(Radii[i]) / 50, :minor)
      play chord(circle(Radii2[i]) / 50, :major)
    end
    
    if i >= Radii.length - 1
      i = 0
    end
    
    i += 1
    
    sleep [0.5,1,1.5,2].choose
  end
end

#using an additional loop , to loop the above compositions


j = 0
live_loop :ochestra do
  
  #original synths
  synths(:hollowing,:hollow,:ping_pong)
  synths(:pianoing,:piano,:echo)
  synths(:chipbassing,:chipbass,:ping_pong)
  
  #these synths variations will occur every second sound
  
  if j % 2 == 0
    
    #additional synths
    synths(:pianoing,:piano,:echo)
    synths(:chipbassing2,:chipbass,:ixi_techno)
    synths(:prettybelling,:pretty_bell,:ixi_techno)
  end
  
  j =+ 1
  
  sleep [1,2,4].choose
  
```
