# 240912 2257 Two fish
# Saved 240912 2257
# https://linktr.ee/relaxnow
# Performance https://youtu.be/0hKrzVQ5m2A
# https://in-thread.sonic-pi.net/t/two-fish-in-sonic-pi-sonicpi/9194
set_volume! 2 #2
with_fx :reverb, room: 0.4 do
live_loop :a1 do
tick
sample [:bd_fat, :bd_gas].look if bools(1,0,0,1,0,0,0, 1,1,0,1,0,0,0).look
sample [:bd_fat, :bd_gas].look,rpitch: 12 if bools(1,0,0,1,0,0,0, 1,1,0,1,0,0,0).reverse.look
sample [:bd_fat, :bd_gas, :elec_tick].look,rpitch: 12+12 if bools(1,0,0,1,0,0,0, 1,1,0,1,0,0,0).shuffle.look
use_synth :prophet
use_synth_defaults cutoff: 70
play :c2+knit(0,64,1,64).look if spread(1,7).look
with_fx :krush, res: [0.1,0.4,0.8].choose do |krush|
casekrush = 0
casekrush = knit(0,128, 1,128).look
case casekrush
when 0
control krush, mix: 0
when 1
control krush, mix: [0,0.2,0.4,0.6].choose
end
density [2,1,1,2,1,1].choose do
density [1,1,3].choose do
use_synth :prophet
use_synth_defaults cutoff: 70, release: 0.1, amp: 1.25, pan: rdist(0.8)
play :c4+[0,0,0,0,12].look if spread(6,7).look
sleep 0.25
end
end
end
end
/ top long notes with :beep /
with_fx :reverb, room: 0.95 do
live_loop :a3 do
tick
use_synth_defaults amp: 0.75
play :c5+knit(0,32,-2,32).look if spread(1,32).rotate(knit(6,32,2,16).look).look
#sleep 0.25
sleep knit(0.25,12,0.125,4).look
end
end
/ noise hihat with pingpong /
with_fx :ping_pong do |ping|
live_loop :a2 do
tick
control ping, mix: [0,0.2,0.4].choose
use_synth :noise
density [2,1,1,2,1,1].choose do
density [1,1,3].choose do
use_synth_defaults release: [0.01,0.02,0.05,0.07].choose, cutoff: [130,80,110,90].look-[0,20].choose
play :c2, pan: rdist(0.5), amp: [0.4,0.5,0.1].choose if spread(3,7).look
sleep 0.25
end
end
end
end
end
2 Likes
Very cool! I love the rhythm and thanks for sharing the patch, very inspiring!
1 Like
Yeah, I dig it too.
I’m trying to wrap my brain around this particular line:
play :c5+knit(0,32,-2,32).look if spread(1,32).rotate(knit(6,32,2,16).look).look
Can you unravel it for me? I get that the “if spread…” is about setting the odds of a note playing, but the nested knit is confusing to me. What does that do?
2 Likes
Knit is used to add a bit of movement to the startingpoint of rotate() of the rhythm pattern of “if”
So for 32 ticks the value is 6
And for 16 tick it the value is 2
Aah, I get it now. Thanks!