Lissotriton vulgaris inspired by A NEW way to Synth Sequence (like a composer)

# 260406 1622 Lissotriton vulgaris inspired by A NEW way to Synth Sequence (like a composer) YT
# 260406 1622 Saved
# Performance https://youtu.be/DYx7sd4VDrY
# https://in-thread.sonic-pi.net/t/lissotriton-vulgaris-inspired-by-a-new-way-to-synth-sequence-like-a-composer/9968

# Inspired by - A NEW way to Synth Sequence (like a composer) by Jameson Nathan Jones
# https://www.youtube.com/watch?v=h145gsvdKr8



set_volume! 0.75
use_bpm 55

/ manual mixer /
set :mixer, [0, 0, 0]  # topArp, bass, noise
#set :mixer, [0, 0, 1]  # topArp, bass, noise
#set :mixer, [0, 0, 2]  # topArp, bass, noise
#set :mixer, [1, 0, 0]  # topArp, bass, noise
#set :mixer, [1, 0, 1]  # topArp, bass, noise
#set :mixer, [1, 0, 2]  # topArp, bass, noise
set :mixer, [1, 1, 1]  # topArp, bass, noise
#set :mixer, [1, 1, 2]  # topArp, bass, noise #1-2
#set :mixer, [1, 1, 0]  # topArp, bass, noise
#set :mixer, [0, 1, 0]  # topArp, bass, noise


with_fx :ping_pong do |pp|
  live_loop :a1 do
    tick
    
    #control pp, mix: 0
    density d = [1,1,1,1,1,1,2,4].choose do
      / top arp /
      control pp, mix: [0,0.2,0.4,0.6].choose
      if get(:mixer)[0] == 1
        use_synth :beep
        play :c6, pitch: [0,0,0,0,3,7,12,-2].choose, release: [0.03,0.5].choose, pan: rdist(1) if spread(2,7).shuffle.look
        play :c5, pitch: [0,0,0,0,3,7,12,-2].choose, release: 0.1, pan: rdist(0.75) if spread(11,16).look
        play :c4, pitch: [0,0,0,0,3,7,12,-2].choose, release: 0.5, pan: rdist(0.5) if spread(7,16).look
        ## play :c3, pitch: [0,0,0,0,3,7,12,-2].choose, release: 1, pan: rdist(0.2) if spread(3,12).look
      end
      / bass /
      control pp, mix: [0,0.2].choose
      if get(:mixer)[1] == 1
        use_synth  :saw
        r = 0.4 # 0.4
        # puts r/(d)
        use_synth_defaults release: r/d, cutoff: line(70,99, steps: 16).mirror.look
        #        use_synth_defaults release: 0.4, cutoff: line(70,99, steps: 16).mirror.look
        k = 32
        puts 'bass', knit(0,k*2, -2,k,-4,k).look if spread(1,k).look
        play :c3+knit(0,k*2, -2,k,-4,k).look, amp: 1.25 if spread(7,12).rotate(2).look
      end
      / noise /
      control pp, mix: [0,0.2,0.4,0.6].choose
      if get(:mixer)[2] == 1  #bright noise
        use_synth :noise
        use_synth_defaults release: 0.03, cutoff: 120
        play :c4, amp: 1, pan: rdist(0.5)
      end
      if get(:mixer)[2] == 2  #dark noise
        use_synth :noise
        use_synth_defaults release: 0.16+rdist(0.15), cutoff: 110+rdist(20)
        play :c4, amp: 0.7, pan: rdist(0.5)
      end
      
      sleep 0.25
    end
    
  end
end