221111 Calm rhodes like longboarding adventures YT

Version 1

# 221111 0213 calm_rhodes_like_variations with new case structure as mixer
# Saved 221111 0210
# Backup
# Created by https://linktr.ee/relaxnow
# https://in-thread.sonic-pi.net/t/221111-calm-rhodes-like-variations-with-new-case-structure-as-mixer/7248


# Jumping off point: "Rhythm concepts for intermediate producers" https://youtu.be/wf6j1icUOVE?t=261

# Idea - create variations on
## accent      => amp:
## duration    => release:
## filter      => cutoff:
## rythm       => euklid => spread() or binary bools()
## polymeter   => offgrid length of something that repeats over grid things (not used here)
## probability => one_in()


# Q: What did I learn doing this?
# A: A new way to setup case as a mixer



live_loop :calm_rhodes_like_variations do
  
  tick
  
  A = [1,0,0,0,0]
  B = [1,0,0]
  C = [1,0,0,0]
  
  r = [1,1,1,2].choose
  d = 64/r
  D = knit(0,d, 3,d, 2,d, 5,d, 3,d)
  
  p1 = [0.5,0.25,0.75].choose
  p2 = p1*-1
  
  ro = 64/4
  root = [:c2]
  #root = [:fs1]
  ro2 = 16
  #root = knit(:c2,ro2*3, :ds2,ro2, :fs2,ro2, :cs2,ro2)
  #root = knit(:c2,ro*3, :as1,ro)
  
  r1 = 2
  elec_tick  = knit(1,r1, 2,r1, 3,r1, 4,r1 ).look
  
  
  use_synth_defaults amp: 1+A.look, release: 0.1+B.look/1.25, cutoff: 75+A.look*20
  
  
  /Manual mixer/  # 0 off, 1 on         # change here
  
  #                   # Possible progression
  # root              # :c2       :fs1
  # A1 /saw bass 1/   # 0 0 1 1 1
  # A2 /tri bass 2/   # 1 1 1 1 1
  # A3 /top/          # 0 0 0 1 1
  # A4 /hihat + ping/ # 0 1 1 0 1
  # A5 /kick/         #
  # A6 /kick+more/    #
  
  A1 = 1
  A2 = 1
  A3 = 1
  A4 = 1
  A5 = 1
  A6 = 1
  
  /Auto mixer/
  A1 = [1,0].choose
  A2 = [1,1,0].choose
  A3 = [1,0].choose
  A4 = [1,0].choose
  A5 = [1,0].choose
  A6 = [1,0].choose
  
  
  case A1
  when 0
  when 1
    /bass 1/
    use_synth :saw
    play root.look, pan: p1 if spread(3,5).look
  end
  
  case A2
  when 0
  when 1
    /bass 2/
    use_synth :tri
    play root.look, pan: p2 if spread(3,5).look
  end
  
  case A3
  when 0
  when 1
    /top/   # Perhaps create a "toproot", since major/minor dont match when you change "root" with "D = knit(0,d, 3,d, 2,d, 5,d, 3,d)"
    use_synth :saw #:tri
    play root.look+12+D.look+12 if spread(5,7).look
  end
  
  case A4
  when 0
  when 1
    with_fx :reverb, room: 0.9 do
      with_fx :ping_pong do |ping|
        /hihat/
        sample :elec_tick, amp: 1+A.look+2, rate: [3,2,1].look, pan: rrand(-1,1) if spread(elec_tick,6).look and one_in(3)
        control ping, mix: [0,0,0,0.25,0.25,0.25,0.8].choose
      end
    end
  end
  
  case A5
  when 0
  when 1
    /kick/
    sample :bd_fat, amp: 4, rate: 1 if spread(1,20).look
  end
  
  case A6
  when 0
  when 1
    /kick/
    sample :bd_fat, amp: 4, rate: 1 if bools(1,1,1,0, 0,0,0,0).look
    sample :bd_fat, amp: 2, rate: 2, pan: rrand(0.25,-0.25) if spread(2,20).look
    sample :bd_fat, amp: 3, rate: 4, pan: rrand(0.5,-0.5) if spread(3,20).look
  end
  
  
  sleep 0.25
  
end



1 Like

Version 2

Now with “auto progression mixer”, piano, and control of :krush and :reverb + YT

# 221114 0024 calm_rhodes_like_longboarding_adventures YT
# Saved 221114 0024
# Backup
# Created by https://linktr.ee/relaxnow
# https://in-thread.sonic-pi.net/t/221111-calm-rhodes-like-variations-with-new-case-structure-as-mixer/7248
# https://youtu.be/boFs8FBDTr8

# Jumping off point: "Rhythm concepts for intermediate producers" https://youtu.be/wf6j1icUOVE?t=261

# Idea - create variations on
## accent      => amp:
## duration    => release:
## filter      => cutoff:
## rythm       => euklid => spread() or binary bools()
## polymeter   => offgrid length of something that repeats over grid things (not used here)
## probability => one_in()


# Q: What did I learn doing this?
# A: A new way to setup case as a mixer
# A: A new way to setup an "auto progression mixer" with knit()


with_fx :krush do |krush|
  with_fx :reverb do |reverb|
    
    
    
    
    live_loop :calm_rhodes_like_variations do
      
      tick
      
      A = [1,0,0,0,0]
      B = [1,0,0]
      C = [1,0,0,0]
      
      r = [1,1,1,2].choose
      d = 64/r
      D = knit(0,d, 3,d, 2,d, 5,d, 3,d)
      
      p1 = [0.5,0.25,0.75].choose
      p2 = p1*-1
      
      ro = 64/4
      root = [:c2]
      roottop = [:c2]
      #root = [:fs1]
      ro2 = 16
      root = knit(:c2,ro2*3, :ds2,ro2/2, :f2,ro2, :g2,ro2, :g1,ro2, :gs1,ro2)
      #root = knit(:c2,ro2*3, :ds2,ro2, :fs2,ro2, :cs2,ro2)
      #root = knit(:c2,ro*3, :as1,ro)
      
      r1 = 2
      elec_tick  = knit(1,r1, 2,r1, 3,r1, 4,r1 ).look
      
      
      use_synth_defaults amp: 1+A.look, release: 0.1+B.look/1.25, cutoff: 75+A.look*20
      
      
      /Manual mixer/  # 0 off, 1 on         # change here
      
      #
      # root
      # A1 /saw bass 1/
      # A2 /tri bass 2/
      # A3 /top/
      # A4 /hihat + ping/
      # A5 /kick/
      # A6 /kick+more/
      # A7 piano 0-2
      
      # Possible progression
      A1 = 1   # 0   0   0   1
      A2 = 1   # 1   1   1   1
      A3 = 0   # 0   0   0   0
      A4 = 1   # 0 1 1   1   1
      A5 = 0   # 0   1   1   0
      A6 = 1   # 0   0   0   1
      A7 = 0   # 0   0   0   1
      case_krush = 0  # 0-2   # stop start to take effect properly
      #     case_krush = 1  # 0-2   # stop start to take effect properly
      #      case_krush = 2  # 0-2   # stop start to take effect properly
      
      /Auto probability mixer/
      #A1 = [1,0].choose
      #A2 = [1,1,0].choose
      #A3 = [1,1].choose
      #A4 = [1,0].choose
      #A5 = [1,0].choose
      #A6 = [1,0].choose
      ###A7 = 1   # needs more work
      #puts case_krush = knit(0,ro*[0.25,0.5,1,2,4].choose, 1,ro/4, 2,ro/4).look  # nice
      
      
      /Auto progression mixer/
      apm = 64
      puts A1 = knit(0,apm,       0,apm,  1,apm*2,       1,apm,).look
      puts A2 = knit(1,apm,       1,apm,  1,apm*2,       1,apm,).look
      puts A3 = knit(0,apm,       0,apm,  0,apm*2,       1,apm,).look
      puts A4 = knit(0,apm/2, 1,apm*1.5,  1,apm*2,       1,apm,).look
      puts A5 = knit(0,apm,       1,apm,  0,apm*2,       1,apm,).look
      puts A6 = knit(0,apm,       0,apm,  1,apm*2,       1,apm,).look
      puts A7 = knit(0,apm,       0,apm,  0,apm*1, 1,apm*2,).look
      puts case_krush = knit(0,ro*[0.25,0.5,1,2,4].choose, 1,ro/4, 2,ro/4).look  # nice
      
      
      case A1
      when 0
      when 1
        /bass 1/
        use_synth :saw
        play root.look, pan: p1 if spread(3,5).look
      end
      
      case A2
      when 0
      when 1
        /bass 2/
        use_synth :tri
        play root.look, pan: p2 if spread(3,5).look
      end
      
      case A3
      when 0
      when 1
        /top/   
        use_synth :saw #:tri
        play roottop.look+12+D.look+12 if spread(5,7).look #and one_in(2)  # original
        #play root.look+12+D.look+12 if spread(5,7).look and one_in(2)
      end
      
      case A4
      when 0
      when 1
        with_fx :reverb, room: 0.9 do
          with_fx :ping_pong do |ping|
            /hihat/
            sample :elec_tick, amp: 1+A.look+2, rate: [3,2,1].look, pan: rrand(-1,1) if spread(elec_tick,6).look and one_in(3)
            control ping, mix: [0,0,0,0.25,0.25,0.25,0.8].choose
          end
        end
      end
      
      case A5
      when 0
      when 1
        /kick/
        sample :bd_fat, amp: 4, rate: 1 if spread(1,20).look
      end
      
      case A6
      when 0
      when 1
        /kick/
        sample :bd_fat, amp: 4, rate: 1 if bools(1,1,1,0, 0,0,0,0).look
        sample :bd_fat, amp: 2, rate: 2, pan: rrand(0.25,-0.25) if spread(2,20).look
        sample :bd_fat, amp: 3, rate: 4, pan: rrand(0.5,-0.5) if spread(3,20).look
      end
      
      
      case A7
      when 0
      when 1 # single notes
        use_synth :piano
        use_synth_defaults #sustain: 1, release: 1
        #10.times do
        play scale(roottop.look, :minor_pentatonic).pick(3).look+24, pan: rrand(-1,1) if spread(5,32).look
        #end
      when 2 # chords
        use_synth :piano
        use_synth_defaults# sustain: 0.01, release: 0.01
        10.times do
          play scale(roottop.look, :minor_pentatonic).pick(3).rotate(1).look+24+0, pan: rrand(-1,1) if spread(5,32).look and one_in(4)
        end
      end
      
      
      
      #case_krush = 0  # 0-2   # stop start to take effect properly
      case case_krush
      when 0
        a = 0
        b = 0
        kru = rrand(a,b)
        res = rrand(a,b)
        #kru = 0
        #res = 0.9
      when 1
        a = 0.05
        b = 0.25
        kru = rrand(a,b)
        res = rrand(a,b)
      when 2 # nice
        a = 0
        b = 1
        kru = rrand(a,b)
        res = rrand(a,b)
      end
      
      control reverb, mix: kru#, res: res
      control krush, mix: kru, res: res
      sleep 0.25
      
    end
  end
end

1 Like