# Generative Melodies

**URL:** https://in-thread.sonic-pi.net/t/generative-melodies/5698
**Category:** Creations & Ideas
**Created:** [June 11, 2021, 1:33pm UTC](https://in-thread.sonic-pi.net/t/generative-melodies/5698 "2021-06-11T13:33:57Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![holz](https://dub1.discourse-cdn.com/flex017/user_avatar/in-thread.sonic-pi.net/holz/32/1664_2.png) [@holz](https://in-thread.sonic-pi.net/u/holz)
#### Post date: [June 11, 2021, 1:33pm UTC](https://in-thread.sonic-pi.net/t/generative-melodies/5698/1 "2021-06-11T13:33:57Z")

</div>

have fun, anything to improve?

```ruby
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

```

---

<div class="post-metadata">

### Author: ![Loopiloop](https://dub1.discourse-cdn.com/flex017/user_avatar/in-thread.sonic-pi.net/loopiloop/32/2094_2.png) [@Loopiloop](https://in-thread.sonic-pi.net/u/Loopiloop)
#### Post date: [September 8, 2021, 2:45pm UTC](https://in-thread.sonic-pi.net/t/generative-melodies/5698/2 "2021-09-08T14:45:00Z")

</div>

The rythm is rather monotonus. You might be interested in this:  
[(7354) Introduction to Melodic Math - Ableton Tutorial - YouTube](https://www.youtube.com/watch?v=7HPkTMYoJnI&t=2s)  
[(7354) Melodic Math part 2 - Melodic Movement - YouTube](https://www.youtube.com/watch?v=sb3e4Mq6y3s)

---

<div class="post-metadata">

### Author: ![Hussein](https://dub1.discourse-cdn.com/flex017/user_avatar/in-thread.sonic-pi.net/hussein/32/1972_2.png) [@Hussein](https://in-thread.sonic-pi.net/u/Hussein)
#### Post date: [September 8, 2021, 3:05pm UTC](https://in-thread.sonic-pi.net/t/generative-melodies/5698/3 "2021-09-08T15:05:48Z")

</div>

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](https://meganlavengood.files.wordpress.com/2016/06/maxmartin.pdf) with my students when discussing method in structuring parts. Might be useful.
