Snowflight by Andrew York in Sonic Pi


# 260321 1556 Inspired by Snowflight by Andrew York
# Performce https://youtu.be/CbzuOJe8tQQ
# https://in-thread.sonic-pi.net/t/snowflight-by-andrew-york-in-sonic-pi/9948



set_volume! 1.5


/Tape delay  -  need restart to sync - best without drums/
#set :myTapeLoopDelay, 0.002
set :myTapeLoopDelay, 0

/ drums /
#live_loop :drumMixer do


# tick
drums = knit(2,24,1,24, 2,48).look
drums = 2
case drums
when 0
  set :drumsKickAmp, 0  # 4
  set :drumsNoiseAmp, 0 # 1
when 1
  set :drumsKickAmp, 4  # 4
  set :drumsNoiseAmp, 0 # 1
when 2
  set :drumsKickAmp, 3  # 4
  set :drumsNoiseAmp, 0.65 # 1
end
# sleep 0.25
#end

/mixer/
mixer = 2
case mixer
when 1 # 1 solo
  set :pan_a1, 0
  set :pan_a2, 0
  
  set :a1_amp, 1
  set :a2_amp, 0
when 2 # 2 with tape loop delay
  set :pan_a1, 0.75
  set :pan_a2, -0.75
  set :a1_amp, 1
  set :a2_amp, 0.75
end

set :a1synth, :saw
set :a1octav, 0

set :a2synth, :beep #:prophet
#set :a2synth, :saw #:beep #:prophet
set :a2octav, 12 # 0 eller 12



use_bpm 88 #88

with_fx :reverb, room: 0.7 do
  
  
  live_loop :a1 do
    tick
    use_synth get[:a1synth]
    #use_synth :prophet
    
    use_synth_defaults release: 0.3+line(0,0.2, steps: 16).look, cutoff: line(70,110, steps: 128).mirror.look
    
    p = 6*4*2
    pat = knit(0,p, 1,p, 2,p, 3,p, 4,p, 5,p, 6,p).look
    # pat = knit(1,p, 2,p, 3,p, 4,p, 5,p, 6,p).look
    #pat = 5
    
    case pat
    when 1
      n = :c3
      k = 6
      n1 = [0,7,11]
      n2 = [2,9,11]
      n3 = [4,7,11]
      n4 = [4,7,11]
      
      n5 = [0,11,12+4]
      n6 = [2,12,12+4]
      n7 = [4,11,12+4]
      n8 = [4,7,12+4]
      
      npat = knit(n1,k, n2,k, n3,k, n4,k,  n5,k, n6,k, n7,k, n8,k,).look
    when 2
      n = :c3
      k = 6
      n1 = [6,11,12+4]
      n2 = [7,11,12+4]
      n3 = [9,12,12+4]
      n4 = [7,11,12+4]
      
      n5 = [6,11,12+4]
      n6 = [4,12,12+4]
      n7 = [2,9,12+2]
      n8 = [2,9,12+2]
      
      npat = knit(n1,k, n2,k, n3,k, n4,k,  n5,k, n6,k, n7,k, n8,k,).look
    when 3
      n = :c3
      k = 6
      n1 = [-1,2,7]
      n2 = [0,4,7]
      n3 = [2,6,7]
      n4 = [2,6,7]
      
      n5 = [0,7,11]
      n6 = [2,9,11]
      n7 = [4,7,11]
      n8 = [4,7,11]
      
      npat = knit(n1,k, n2,k, n3,k, n4,k,  n5,k, n6,k, n7,k, n8,k,).look
    when 4
      n = :c3
      k = 6
      n1 = [4,11,12+7]
      n2 = [3,11,12+6]
      n3 = [2,11,12+4]
      n4 = [1,11,12+4]
      
      n5 = [0,11,12+4]
      n6 = [2,9,12+2]
      n7 = [-5,7,11]
      n8 = [-5,7,11]
      
      npat = knit(n1,k, n2,k, n3,k, n4,k,  n5,k, n6,k, n7,k, n8,k,).look
    when 5
      n = :c3
      k = 6
      n1 = [0,2,7]
      n2 = [-6,2,9]
      n3 = [-8,4,7]
      n4 = [-8,7,11]
      
      n5 = [-8,11,12+4]
      n6 = [-8,12,12+4]
      n7 = [-8,12+4,12+7]
      n8 = [-8,12+7,12+11]
      
      npat = knit(n1,k, n2,k, n3,k, n4,k,  n5,k, n6,k, n7,k, n8,k,).look
      
    end
    
    #
    play n+npat.look+get[:a1octav], pan: get[:pan_a1], amp: get[:a1_amp]
    
    
    
    sleep 0.25
  end
  
  
  / tape loop delay /
  live_loop :a2 do
    tick
    use_synth get[:a2synth]
    
    use_synth_defaults release: 0.3+line(0,0.2, steps: 16).look, cutoff: line(70,110, steps: 128).mirror.look
    
    p = 6*4*2
    #pat = knit(1,p, 2,p, 3,p, 4,p, 5,p, 6,p).look
    pat = knit(0,p, 1,p, 2,p, 3,p, 4,p, 5,p, 6,p).look
    
    case pat
    when 1
      n = :c3
      k = 6
      n1 = [0,7,11]
      n2 = [2,9,11]
      n3 = [4,7,11]
      n4 = [4,7,11]
      
      n5 = [0,11,12+4]
      n6 = [2,12,12+4]
      n7 = [4,11,12+4]
      n8 = [4,7,12+4]
      
      npat = knit(n1,k, n2,k, n3,k, n4,k,  n5,k, n6,k, n7,k, n8,k,).look
    when 2
      n = :c3
      k = 6
      n1 = [6,11,12+4]
      n2 = [7,11,12+4]
      n3 = [9,12,12+4]
      n4 = [7,11,12+4]
      
      n5 = [6,11,12+4]
      n6 = [4,12,12+4]
      n7 = [2,9,12+2]
      n8 = [2,9,12+2]
      
      npat = knit(n1,k, n2,k, n3,k, n4,k,  n5,k, n6,k, n7,k, n8,k,).look
    when 3
      n = :c3
      k = 6
      n1 = [-1,2,7]
      n2 = [0,4,7]
      n3 = [2,6,7]
      n4 = [2,6,7]
      
      n5 = [0,7,11]
      n6 = [2,9,11]
      n7 = [4,7,11]
      n8 = [4,7,11]
      
      npat = knit(n1,k, n2,k, n3,k, n4,k,  n5,k, n6,k, n7,k, n8,k,).look
    when 4
      n = :c3
      k = 6
      n1 = [4,11,12+7]
      n2 = [3,11,12+6]
      n3 = [2,11,12+4]
      n4 = [1,11,12+4]
      
      n5 = [0,11,12+4]
      n6 = [2,9,12+2]
      n7 = [-5,7,11]
      n8 = [-5,7,11]
      
      npat = knit(n1,k, n2,k, n3,k, n4,k,  n5,k, n6,k, n7,k, n8,k,).look
    when 5
      n = :c3
      k = 6
      n1 = [0,2,7]
      n2 = [-6,2,9]
      n3 = [-8,4,7]
      n4 = [-8,7,11]
      
      n5 = [-8,11,12+4]
      n6 = [-8,12,12+4]
      n7 = [-8,12+4,12+7]
      n8 = [-8,12+7,12+11]
      
      npat = knit(n1,k, n2,k, n3,k, n4,k,  n5,k, n6,k, n7,k, n8,k,).look
      
    end
    
    #
    play n+npat.look+get[:a2octav], pan: get[:pan_a2], amp: get[:a2_amp]
    
    
    
    sleep 0.25+get[:myTapeLoopDelay]
  end
  
end

/ drums /
#set :drumsKickAmp, 4  # 4
#set :drumsNoiseAmp, 1 # 1

with_fx :reverb, room: 0.6 do
  live_loop :b1 do
    tick
    sample :bd_fat, amp: get[:drumsKickAmp] if (spread(2,6)*3+spread(5,6) + spread(2,6)+spread(3,6)).look
    sleep 0.25
  end
  
  with_fx :krush, mix: 0.8 do |krush|
    
    live_loop :b2 do
      tick
      
      density [1,2,1,1,4,1].choose do
        control krush, mix: [0,0.2,0.4,0.8].choose
        use_synth :cnoise
        use_synth_defaults release: [0.1,0.2,0.3].choose-0.05, cutoff: [60,70,80,90,100].choose+[-10,0,10,20].choose, pan: rdist(1)
        #play :c4 if spread(7,12).look
        play :c4, amp: get[:drumsNoiseAmp] if spread(22,32).look
        #   play :c4 if spread(30,32).look
        sleep 0.25
      end
      
    end
    
  end
end
3 Likes

Hi,

this is lovely, thank you - it takes me back to my undergraduate days, struggling to get his “Sunburst” right.

PD-Pi

1 Like

This is gorgeous esp with headphones on and the wild panning with high percussion.

1 Like

Wow! I totally dig the off-kilter rhythms in the high percussion.

I’ll dig into your code to better understand how you pulled it off.

Well done!

1 Like