**The prompt for Genuary 2023 Day 23 is**

## Moire

Overlaying a multitude of Moire Circles and other shapes

Sound is coded in SonicPi using the distance equation

```
Overlaying
As the circle prowl
As their diameters growl
And their circumferences howl
For they are not staying
As the day turns in
```

**SonicPI Code**

```
def distance(x1,y1,x2,y2)
distance = Math.sqrt((x2 - x1)**2 + (y2 - y1)**2)
puts distance
distance
end
i = 0
live_loop :distancing do
#a and b are line 1 and line 2
#X and Y are the coordinates
Xa = [5,7,9,12,4,1]
Ya = [2,3,5,6,1,3]
Xb = [0,4,5,2,1,7]
Yb = [3,2,4,5,0,8]
x = distance(Xa[i],Xb[i],Ya[i],Yb[i])
y = distance(Xa[dice(i)],Xb[dice(i)],Ya[dice(i)],Yb[dice(i)])
with_fx :flanger, amp: dice(2) do
with_fx :ping_pong, mix: rrand(0.3,0.6) do
use_synth :hollow
play (x * y)/2, sustain: dice(4)
play_pattern_timed chord([:c3,:E3].choose, :m7), x/y
end
end
if i >= Xa.length - 1
i = 0
end
i+= 1
sleep [0.25,0.5,1,2,4].choose
end
j = 0
live_loop :distancing2 do
#points C and D
Xc = [dice(3)+3,dice(6),dice(5),dice(10)]
Yc = [dice(2),(dice(5)-1).abs,dice(7),dice(10)+1]
Xd = [dice(5),dice(4),dice(5),(dice(10)-1).abs]
Yd = [dice(9),dice(7),dice(9),dice(10)]
x = distance(Xc[j],Xd[j],Yc[j],Yd[j])
y = distance(Xc[dice(j)],Xd[dice(j)],Yc[dice(j)],Yd[dice(j)])
with_fx :pitch_shift, mix: 0.35, amp: dice(2) do
with_fx :ping_pong, mix: rrand(0.3,0.6) do
use_synth :hollow
play (x * y)/1.5, attack: dice(4)
play_pattern_timed chord([:c2,:e3,:a4,:g2].choose, :m7), y/x
end
end
if j >= Xa.length - 1
j = 0
end
i+= 1
sleep [0.25,0.5,1,2,4].choose
end
```

**Hydra Code**

```
pattern = () => voronoi(113,5, 5).blend(osc(50,0)).kaleid([200,100,50,10,5,4,3,2].smooth()).scale(()=> (time % 10 + 2)/7)
//
pattern()
.scrollX(0.1, 0.01).colorama(()=> (time % 10 + 1 )/10).scale([2,1,0.5,1,2,3,4].smooth())
.diff(pattern().scroll([2,1,0.5,1].smooth()))
.blend(pattern())
.out()
speed = 0.12525
```