Geotrupes spiniger on a november day

# 221206 2154 exploring prophet as bass synth Markskarnbasse Geotrupes spiniger set get mixer
# Saved 221206 2154
# Backup

# Created by https://linktr.ee/relaxnow
# YT performance https://youtu.be/25NXkcdPTU8

/ Geotrupes spiniger on a november day /

## NB this code struggles on my laptop.
## Recorded on a gamer computer

# manual songform
# vs
# auto songform is a bit offset. I dont understand why??

live_loop :time, delay: 0.01 do
  sleep 1
end


live_loop :songform, sync: :time do
  tick
  
  puts status
  
  / auto progression songform /
  #  songform = knit(1,16, 2,16, 3,32).to_a.look  # works
  #songform = knit(1,16, 2,16, 4,16, 3,32).look          # works
  
  # bass  1-3
  # drum  1
  #       2
  #       3 1/4 kick
  #       4
  #       5
  # tick  1 with bass
  #       2 without bass
  # arp   1 part A few notes
  #       2 part B high notes long seq
  #       3 extra bass with no top piano
  # piano 1
  
  
  / Can I make songform take less space with a define? Yes /
  
  define :songform2 do |bass,drum,tick,arp,piano|
    puts set :bass, bass
    puts set :drum, drum
    puts set :tick, tick
    puts set :arp , arp
    puts set :piano, piano
  end
  
  / manual mixer /
  #songform2(0,0,0,0,0) # |bass,drum,tick,arp,piano|
  
  / songform change here 0-29  /
  # manual changing here works but it's hard to times switching between sections
  sf = 32   # should be 32
  songform = knit(1,sf, 2,sf, 3,sf, 4,sf, 5,sf, 6,sf, 7,sf, 8,sf, 9,sf, 10,sf, 11,sf, 12,sf, 13,sf, 14,sf, 16,sf, 17,sf, 18,sf, 19,sf, 20,sf, 21,sf, 22,sf, 23,sf, 24,sf, 25,sf, 26,sf, 27,sf, 28,sf, 29,sf).look
  puts songform
  puts "--------"
  
  songform = 29    # works
  
  ### Possible progessions
  #       1    2    3     4  5    6  7   8   9   10 11 12 13  14 15 16  17 18 19 20 21 22 23 24 25   26   27  28 29
  # ---------------------------------------------------------------------------------------------------------------
  # bass  1    1    1     1  2    1  3   1             1  1   1  1  1   1     1  1  3  2  3     2    2    1   1  1
  # drum  3                  1    1  1   1       3  1  1  1   1  3  3   2  2  2           3  0       1    1   1
  # tick  1/2  1/2                                                                              1/2
  # arp   0         2     1              2   3   3  1  1  2         1   2  2  1  1  3  1  3  3       (1)  1
  # piano 0                                                   1  1                              1    1    1
  
  # |bass,drum,tick,arp,piano|
  case songform
  when 0
    songform2(0,0,0,0,0)
  when 1
    songform2(1,0,0,0,0)
  when 2
    songform2(1,1,0,0,0)
  when 3
    songform2(1,0,0,1,0)
  when 4
    songform2(1,0,0,2,0)
  when 5
    songform2(2,1,0,0,0)
  when 6                     # nice
    songform2(1,1,0,0,0)
  when 7                     # krush like feel ostinat
    songform2(3,1,0,0,0)
  when 8
    songform2(1,1,0,2,0)
  when 9
    songform2(0,0,0,3,0)     # deep synth
  when 10
    songform2(0,3,0,3,0)
  when 11
    songform2(0,1,0,1,0)
  when 12                    # nice
    songform2(1,1,0,1,0)
  when 13
    songform2(1,1,0,2,0)
  when 14                    # calm piano
    songform2(1,1,0,0,1)
  when 15                    # 4 on floor + piano
    songform2(1,3,0,0,1)
  when 16                    # lively
    songform2(1,3,0,1,0)
  when 17                    # breaklike
    songform2(0,2,0,2,0)
  when 18
    songform2(1,2,0,2,0)
  when 19
    songform2(1,2,0,1,0)
  when 20
    songform2(1,0,0,1,0)
  when 21                    # deep transition
    songform2(3,0,0,3,0)
  when 22
    songform2(2,0,0,1,0)
  when 23                    # deep transition + 4 on floor
    songform2(3,3,0,3,0)
  when 24
    songform2(0,0,0,3,0)
  when 25                    # piano in big space
    songform2(2,0,1,0,1)
  when 26                    # part B on bass
    songform2(2,1,0,1,1)
  when 27                    # Part A on bass
    songform2(1,1,0,1,1)
  when 28
    songform2(1,1,0,0,0)
  when 29
    songform2(1,0,0,0,0)
  end
  
  sleep 1
end




with_fx :reverb do
  
  
  / bass /
  live_loop :bass1, sync: :time do
    tick
    
    if get[:bass]==1
      use_synth :prophet
      use_synth_defaults release: rrand(0.1,0.5), amp: [1,0.5,0.5].look+2, cutoff: rrand_i(50,[70,80,90,100,110,120,130].look)
      a = 16
      play :f2+knit(0,a, 3,a, -5,a, -4,a, 0,a, 5,a, 7,a, 8,a).look, amp: 4
      play :f4+knit(3,a/2,0,a/2).look
    end
    
    if get[:bass]==2
      use_synth :prophet
      use_synth_defaults release: rrand(0.1,0.5), amp: [1,0.5,0.5].look+2, cutoff: rrand_i(50,[70,80,90,100,110,120,130].look)
      a = 16
      play :f2+knit(0,a, -2,a, -7,a, -5,a, 0,a).look, amp: 4
      play :f4+knit(0,a, -2,a, -7,a, -5,a, 0,a).look
    end
    
    if get[:bass]==3
      use_synth :prophet
      use_synth_defaults release: rrand(0.1,0.5), amp: [1,0.5,0.5].look+2, cutoff: rrand_i(50,[70,80,90,100,110,120,130].look)
      a = 16
      play :f2, amp: 4
    end
    
    sleep 0.25
  end
  
  
  / kick /
  live_loop :drum1, sync: :time do
    tick
    if get[:drum]==1
      sample :bd_haus, cutoff: 85, amp: [4,2,2,3,2,2,2].look if bools(1,0,0,1,0,0,1).look  # nice
      sample :sn_generic, cutoff: 125, amp: [1,2,3].choose, rate: [1,2,4,8].ring.stretch(4).choose if bools(0,1,0,0,0,0,0).look #and one_in(2)
    end
    
    if get[:drum]==2
      sample :bd_haus, cutoff: 85, amp: 4 if          bools(1,0,0,1,0,0).look
      sample :sn_generic, cutoff: 125, amp: [1,2,3].choose, rate: [1,2,4,8].ring.stretch(4).choose if bools(0,1,0,0,0,0,0).look #and one_in(2)
    end
    
    if get[:drum]==3
      sample :bd_haus, cutoff: 85, amp: 4 if spread(4,8).look
    end
    
    if get[:drum]==4
      sample :bd_haus, cutoff: 85, amp: 4 if spread(3,8).look
      sample :sn_generic, cutoff: 105, amp: [1,2].choose, rate: [1,2,4,8].ring.stretch(4).choose if bools(0,1,0,0,1,1,0).look #and one_in(2)
    end
    
    if get[:drum]==5
      sample :bd_haus, cutoff: 85, amp: 4 if bools(1,1,0,0,0, 1,0,0,0,0).look
    end
    
    sleep 0.25
  end
  
  
  / tick /
  live_loop :tick1, sync: :time do
    tick
    density [1,1,1,3].look do
      if get[:tick]==1
        # With bass
        sample :elec_tick, amp: 2, rpitch: [0,0,0,0,12].look+knit(0,32,3,32).look+12, pan: rrand(-1,1) if bools(1,1,0,1).look or spread(3,5).look
      end
      
      if get[:tick]==2
        # Without bass
        sample :elec_tick, amp: 4, rpitch: [0,0,0,0,12].look+knit(0,32,3,32).look+12-12, pan: rrand(-1,1) if bools(1,1,0,1).look or spread(3,5).look
      end
      sleep 0.25
    end
    
  end
  
  / arp /
  live_loop :arp1, sync: :time do
    tick
    if get[:arp]==1
      use_synth :saw
      use_synth_defaults release: [0.1,0.05,0.2].ring.stretch(8).look, cutoff: [70,80,90,100,110,120,130].ring.stretch(16).look
      no = [0,3,5,-4,-5]  # without piano_mel
      play :f3+no.look, amp: 2, pan: -0.5
      use_synth :piano
      play :f5+no.look, amp: 2, pan: 0.5
    end
    if get[:arp]==2
      use_synth :saw
      use_synth_defaults release: [0.1,0.05,0.2].ring.stretch(8).look, cutoff: [70,80,90,100,110,120,130].ring.stretch(16).look
      no = [0,3,5,-4,-5]  # without piano_mel
      no = [5,7,12,12+3,12+5,12+7,12+5,12+3,12]  # with piano_mel
      play :f3+no.look, amp: 2, pan: -0.5
      use_synth :piano
      play :f5+no.look, amp: 2, pan: 0.5
      
    end
    
    if get[:arp]==3
      use_synth :saw
      use_synth_defaults release: [0.1,0.05,0.2].ring.stretch(8).look, cutoff: [70,80,90,100,110,120,130].ring.stretch(16).look
      no = [0,3,5,-4,-5]  # without piano_mel
      play :f2+no.look, amp: 2, pan: -0.5  # bass
      play :f3+no.look, amp: 2, pan: -0.5
      use_synth :piano
    end
    
    sleep 0.125
  end
  
end


with_fx :reverb, room: 0.9 do
  
  / piano /
  live_loop :piano_mel1, sync: :time do
    #stop
    tick
    use_synth :piano
    density [1,1,1,3].look do
      if get[:piano]==1
        no = [0,3,5,-4,-5]
        play :f5+no.look, amp: 4, sustain: 4 if bools(1,0,0,0, 1,0,0,0, 1,0,0,1, 1,0,1,0).look
      end
      sleep 1
    end
  end
  
end

2 Likes

there is a bug in your tune :slight_smile:
Not really, i would say a geotrupes spiniger

1 Like