class Musicality::RandomRhythmGenerator
Attributes
durations[R]
probabilities[R]
Public Class Methods
new(palette_with_probs)
click to toggle source
# File lib/musicality/composition/generation/random_rhythm_generator.rb, line 6 def initialize palette_with_probs @durations, @probabilities = palette_with_probs.entries.transpose @dur_sampler = RandomSampler.new(@durations,@probabilities) end
Public Instance Methods
random_dur()
click to toggle source
# File lib/musicality/composition/generation/random_rhythm_generator.rb, line 11 def random_dur @dur_sampler.sample end
random_rhythm(target_dur, end_retries = 5)
click to toggle source
# File lib/musicality/composition/generation/random_rhythm_generator.rb, line 15 def random_rhythm target_dur, end_retries = 5 rhythm = [] total_dur = 0 retries = 0 while(total_dur < target_dur && retries < end_retries) dur = random_dur if (dur + total_dur) <= target_dur total_dur += dur rhythm.push(dur) else retries += 1 end end if total_dur < target_dur rhythm.push(target_dur - total_dur) end return rhythm end