Generative Melodies

have fun, anything to improve?

set_mixer_control! amp: 3

live_loop :metro do
  sleep 2.5
end

live_loop :kick, sync: :metro do
  
  use_random_seed (ring 5,5,5,1).tick(:tick3764)
  3.times do
    sleep (ring 0.5,0.5,0.5,0.5,0.25,0.25).choose
    sample :drum_heavy_kick, amp: 1.75
  end
  sleep (ring 0,0,0,0.5).tick(:wjek)
end

live_loop :hats, sync: :metro do
  
  use_random_seed (ring 5,5,5,1,5,5,5,5).tick(:tick3222312)
  3.times do
    sleep (ring 0.25,0.25,0.25,0.25,0.5,0.5).choose
    sample :drum_cymbal_soft, amp: 0.5
  end
  sleep (ring 0,0,0,0.5).tick(:wjeqwesdk)
end







live_loop :pitchis, sync: :sleepsbass do
  use_random_seed (ring 1,1,1,5000, 1,1,1,500, 1,1,1,500, 34,34,7894,7894).tick(:tick5398)
  4.times do
    set :pitchi, (ring -1,-1,-1, -1,4,6,7, -2,-2,-2,-2, 0,0,0,0, 4,4,6,6).tick(:ekww)
    sleep (knit 0.5,6, 0.25,2, 0.75,2, 0.5,6, 1,2).tick(:tickhhrw)
  end
end






live_loop :sleepsbass, sync: :metro  do
  
  use_random_seed (knit 9789,4,564567,1).tick(:tick3546263)
  4.times do
    set :slep, (ring 0.5,0.25,0.25,0.5,0.25 ).choose
    sleep get(:slep)
  end
end

live_loop :notasblass, sync: :sleepsbass  do
  
  use_random_seed (knit 5000,4,4846,1).tick(:tick344739) #(ring 500,5080,500,5085, 500,5080,500,5085, 500,5080,500,5085, 500,5080,500,5085,  10,1000,20,10,1000,300,10,8000,10,1000,20,10,1000,300,10,8000).tick(:tick3544564566263)
  2.times do
    set :notas12, (ring 1,2,3).choose
    sleep get(:slep)
  end
end

live_loop :slepstep1, sync: :sleepsbass do
  use_random_seed (ring 1).tick(:shhaw)
  2.times do
    set :slepsteps1, (ring 0,0,0,0.5,0,0,0,1,0,0,0.5).choose
    sleep get(:slep)
  end
end

live_loop :rels, sync: :sleepsbass do
  use_random_seed (knit 89687654,4,1465321,1).tick(:shdaa)
  3.times do
    set :rel, (ring 0.5,0.25,0.5,0.75,0.125).choose
  end
  sleep get(:slep)
end

live_loop :ampis, sync: :sleepsbass do
  use_random_seed (ring 1,1,1,200).tick(:tickasjdea)
  4.times do
    set :ampi, (ring 0.25,0.125,0.5,0.25).choose
  end
  sleep get(:slep)
end

live_loop :bass, sync: :sleepsbass do
  
  with_fx :bitcrusher, bits: rrand(6,9), mix: 0 do
    with_fx :echo, phase: 0.25, decay: 0.5, mix: 1 do
      with_fx :slicer, phase: 0.25, pulse_width: 0.75, mix: 0.5 do
        
        use_random_seed (ring 1,1,1,500).tick(:tick1afs23) # for bools
        use_synth :tb303
        
        3.times do
          play degree(get(:notas12), :d2, :phrygian), amp: get(:ampi), release: get(:rel), pitch: get(:pitchi) if bools(1,1,0,1,1,0).choose
          
          sleep get(:slep)
        end
        sleep get(:slepsteps1)
      end
    end
  end
end







live_loop :sleepslead, sync: :metro  do
  
  use_random_seed (knit 347435468,4,52413485,1).tick(:tick3546263)
  3.times do
    set :slep1, (ring 0.25,0.25,0.25,0.5,0.25,0.5 ).choose
    sleep get(:slep1)
  end
end

live_loop :notaslead, sync: :sleepslead  do
  
  use_random_seed (knit 65454145215,4,3215341586,1).tick(:tick245)#(ring 500,5080,500,5085, 500,5080,500,5085, 500,5080,500,5085, 500,5080,500,5085,  10,1000,20,10,1000,300,10,8000,10,1000,20,10,1000,300,10,8000).tick(:tick3544564566263)
  3.times do
    set :notas13, (ring 1,3).choose
    sleep get(:slep1)
  end
end

live_loop :slepstep, sync: :sleepslead do
  
  use_random_seed (knit 65484231,4,6546531321,1).tick(:shhaw)
  4.times do
    set :slepsteps, (ring 0.25,0,0.25,0.25,0.5,0).choose
    sleep get(:slep1)
  end
end

live_loop :rels1, sync: :sleepslead do
  
  use_random_seed (knit 13464321141,4,65765453,1).tick(:shdaa)
  3.times do
    set :rel1, (ring 0.5,0.125,0.25,0.25,0.25).choose
  end
  sleep get(:slep1)
end


live_loop :ampis1, sync: :sleepslead do
  
  use_random_seed (knit 35646847687,4,466847156,1).tick(:tickasjdea)
  3.times do
    set :ampi1, (ring 0.75,0.75,0.5,1.25).choose
  end
  sleep get(:slep1)
end

live_loop :lead, sync: :sleepslead do
  
  with_fx :flanger, depth: 0.75, phase: 0.5, decay: 0.5, wave: 1, mix: 1 do
    with_fx :echo, phase: 0.25, decay: 0.5, mix: 1 do
      with_fx :slicer, phase: 0.25, pulse_width: 0.75, mix: 1 do
        
        use_synth :piano
        use_random_seed (ring 2154,2154,2154,7889789).tick(:tick1afs23)
        
        16.times do
          play degree(get(:notas13), :a2, :phrygian), amp: get(:ampi1), release: get(:rel1), pitch: get(:pitchi) if bools(1,0,1,0,1,1).choose
          sleep get(:slep1)
        end
        sleep get(:slepsteps)
      end
    end
  end
end
2 Likes

The rythm is rather monotonus. You might be interested in this:
(7354) Introduction to Melodic Math - Ableton Tutorial - YouTube
(7354) Melodic Math part 2 - Melodic Movement - YouTube

Great, always love a bit of melodic math, though one has to appreciate that Max Martin’s method is not absolutist. He acknowledges that it also fails as a system at times.
I use this article by Megan Lavengood with my students when discussing method in structuring parts. Might be useful.

1 Like