Two fish in Sonic Pi #sonicpi

# 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! :grinning:

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!