Playing with new minimal mixer structure saw beep and kick

# 260406 2221 Playing with new minimal mixer structure saw beep and kick
# Saved 260406 2221
# Performance https://youtu.be/JJu24J976Q8
# https://in-thread.sonic-pi.net/t/playing-with-new-minimal-mixer-structure-saw-beep-and-kick/9969

set_volume! 1
use_bpm 45

/ manual mixer /
set :mixer, [0, 0, 0]  # bass, beep arp 1-2(0-12 oct), kick
#set :mixer, [0, 0, 1]  #
#set :mixer, [0, 0, 2]  #
#set :mixer, [1, 0, 0]  #
#set :mixer, [1, 0, 1]  #
#set :mixer, [1, 0, 2]  #
set :mixer, [1, 1, 1]  #
set :mixer, [1, 2, 1]  #
#set :mixer, [1, 1, 0]  #
#set :mixer, [0, 1, 0]  #


/ auto mixer /
live_loop :mixer do
  tick
  
  k = 32
  prog = knit(1,k*0.5, 2,k*0.5, 3,k, 4,k*2).look # for auto play
  #prog = knit(1,k*0.5, 2,k*0.5, 3,k, 4,k*2,  1,k*0.5, 0,k).look #for recording
  
  #prog = 4
  case prog
  when 0
    set :mixer, [0,0,0]
  when 1
    set :mixer, [0,1,0] # bass, beep arp 1-2(0-12 oct), kick
  when 2
    set :mixer, [0,2,1]
  when 3
    set :mixer, [1,2,1]
  when 4
    set :mixer, [1,1,1]
  end
  
  puts get[:mixer] if spread(1,k*0.5).look
  sleep 0.25
end


with_fx :ping_pong do |pp|
  #with_fx :reverb, room: 0.4 do |pp|
  #with_fx :bitcrusher do |pp|
  
  live_loop :a1 do
    tick
    
    #control pp, mix: 0
    density d = [1,1,1,1,1,1,2,4].choose do
      
      / bass /
      control pp, mix: [0,0.2,0.4].choose
      if get(:mixer)[0] == 1
        n = :f2
        use_synth :saw
        use_synth_defaults release: [0.1,0.2,0.3].choose+0.2, cutoff: line(80,130,steps: 10).choose-20
        #play n-12 if spread(2,7).look
        play n if spread(2,7).look
      end
      
      / beep arp /
      control pp, mix: [0,0.2,0.4,0.6].choose
      if get(:mixer)[1] == 1
        n = [:f5+3, :f5+3-1, :f4, :f4+7, :f4+7+1].look
        use_synth :beep
        use_synth_defaults release: [0.1,0.2,0.4].choose, cutoff: 80
        play n if spread(6,7).look
      end
      if get(:mixer)[1] == 2
        n = [:f5+3, :f5+3-1, :f4, :f4+7, :f4+7+1].look-12
        use_synth :beep
        use_synth_defaults release: [0.1,0.2,0.4].choose, cutoff: 80
        play n if spread(6,7).look
      end
      
      / kick /
      control pp, mix: [0,0.2].choose
      if get(:mixer)[2] == 1
        sample :bd_fat, amp: 3+rdist(0.5) if spread(2,4).look
      end
      
      sleep 0.25
    end
    
  end
end